btrfs: use btrfsic_submit_bio instead of submit_bio in write_dev_flush
authorLu Fengqi <lufq.fnst@cn.fujitsu.com>
Fri, 18 Aug 2017 08:38:07 +0000 (16:38 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 21 Aug 2017 15:47:42 +0000 (17:47 +0200)
Although this bio has no data attached, it will reach this condition
(bio->bi_opf & REQ_PREFLUSH) and then update the flush_gen of dev_state
in __btrfsic_submit_bio. So we should still submit it through integrity
checker. Otherwise, the integrity checker will throw the following warning
when I mount a newly created btrfs filesystem.

[10264.755497] btrfs: attempt to write superblock which references block M @29523968 (sdb1/1111654400/0) which is not flushed out of disk's write cache (block flush_gen=1, dev->flush_gen=0)!
[10264.755498] btrfs: attempt to write superblock which references block M @29523968 (sdb1/37912576/0) which is not flushed out of disk's write cache (block flush_gen=1, dev->flush_gen=0)!

Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 3715478fffedc47e5a8431b421d20a994db2a0f2..195634098f21e967b12d71bfc8f7d6db7dd06bd7 100644 (file)
@@ -3517,7 +3517,7 @@ static void write_dev_flush(struct btrfs_device *device)
        init_completion(&device->flush_wait);
        bio->bi_private = &device->flush_wait;
 
-       submit_bio(bio);
+       btrfsic_submit_bio(bio);
        device->flush_bio_sent = 1;
 }