Commit d10b82fe authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba

btrfs: Allow barrier_all_devices to do chunk level device check

The last user of num_tolerated_disk_barrier_failures is
barrier_all_devices().
But it can be easily changed to the new per-chunk degradable check
framework.
Signed-off-by: default avatarQu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent b382cfe8
...@@ -3519,20 +3519,10 @@ static blk_status_t wait_dev_flush(struct btrfs_device *device) ...@@ -3519,20 +3519,10 @@ static blk_status_t wait_dev_flush(struct btrfs_device *device)
return bio->bi_status; return bio->bi_status;
} }
static int check_barrier_error(struct btrfs_fs_devices *fsdevs) static int check_barrier_error(struct btrfs_fs_info *fs_info)
{ {
int dev_flush_error = 0; if (!btrfs_check_rw_degradable(fs_info))
struct btrfs_device *dev;
list_for_each_entry_rcu(dev, &fsdevs->devices, dev_list) {
if (!dev->bdev || dev->last_flush_error)
dev_flush_error++;
}
if (dev_flush_error >
fsdevs->fs_info->num_tolerated_disk_barrier_failures)
return -EIO; return -EIO;
return 0; return 0;
} }
...@@ -3587,7 +3577,7 @@ static int barrier_all_devices(struct btrfs_fs_info *info) ...@@ -3587,7 +3577,7 @@ static int barrier_all_devices(struct btrfs_fs_info *info)
* to arrive at the volume status. So error checking * to arrive at the volume status. So error checking
* is being pushed to a separate loop. * is being pushed to a separate loop.
*/ */
return check_barrier_error(info->fs_devices); return check_barrier_error(info);
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment