btrfs: move dev stats accounting out of wait_dev_flush
authorDavid Sterba <dsterba@suse.com>
Thu, 15 Jun 2017 14:20:43 +0000 (16:20 +0200)
committerDavid Sterba <dsterba@suse.com>
Wed, 21 Jun 2017 17:03:39 +0000 (19:03 +0200)
We should really just wait in wait_dev_flush and let the caller decide
what to do with the error value.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 917e291675800f55326f9cf1d9a2287ca2af5e9a..b6758892874f3d86f90aa09648b6ba9461579219 100644 (file)
@@ -3512,7 +3512,6 @@ static void write_dev_flush(struct btrfs_device *device)
  */
 static int wait_dev_flush(struct btrfs_device *device)
 {
-       int ret = 0;
        struct bio *bio = device->flush_bio;
 
        if (!device->flush_bio_sent)
@@ -3521,13 +3520,7 @@ static int wait_dev_flush(struct btrfs_device *device)
        device->flush_bio_sent = 0;
        wait_for_completion_io(&device->flush_wait);
 
-       if (bio->bi_error) {
-               ret = bio->bi_error;
-               btrfs_dev_stat_inc_and_print(device,
-                               BTRFS_DEV_STAT_FLUSH_ERRS);
-       }
-
-       return ret;
+       return bio->bi_error;
 }
 
 static int check_barrier_error(struct btrfs_fs_devices *fsdevs)
@@ -3586,6 +3579,8 @@ static int barrier_all_devices(struct btrfs_fs_info *info)
                ret = wait_dev_flush(dev);
                if (ret) {
                        dev->last_flush_error = ret;
+                       btrfs_dev_stat_inc_and_print(dev,
+                                       BTRFS_DEV_STAT_FLUSH_ERRS);
                        errors_wait++;
                }
        }