]> git.baikalelectronics.ru Git - kernel.git/commitdiff
dm-snap: use blkdev_issue_flush instead of open coding it
authorChristoph Hellwig <hch@lst.de>
Mon, 24 Jan 2022 09:10:55 +0000 (10:10 +0100)
committerJens Axboe <axboe@kernel.dk>
Wed, 2 Feb 2022 14:49:59 +0000 (07:49 -0700)
Use blkdev_issue_flush, which uses an on-stack bio instead of an
opencoded version with a bio embedded into struct dm_snapshot.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220124091107.642561-8-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/dm-snap.c

index dcf34c6b05ad35763b09bdaa11857f959c50e320..0d336b5ec5714eb1d182b889cd13467c84f3f5a2 100644 (file)
@@ -141,11 +141,6 @@ struct dm_snapshot {
         * for them to be committed.
         */
        struct bio_list bios_queued_during_merge;
-
-       /*
-        * Flush data after merge.
-        */
-       struct bio flush_bio;
 };
 
 /*
@@ -1127,17 +1122,6 @@ shut:
 
 static void error_bios(struct bio *bio);
 
-static int flush_data(struct dm_snapshot *s)
-{
-       struct bio *flush_bio = &s->flush_bio;
-
-       bio_reset(flush_bio);
-       bio_set_dev(flush_bio, s->origin->bdev);
-       flush_bio->bi_opf = REQ_OP_WRITE | REQ_PREFLUSH;
-
-       return submit_bio_wait(flush_bio);
-}
-
 static void merge_callback(int read_err, unsigned long write_err, void *context)
 {
        struct dm_snapshot *s = context;
@@ -1151,7 +1135,7 @@ static void merge_callback(int read_err, unsigned long write_err, void *context)
                goto shut;
        }
 
-       if (flush_data(s) < 0) {
+       if (blkdev_issue_flush(s->origin->bdev) < 0) {
                DMERR("Flush after merge failed: shutting down merge");
                goto shut;
        }
@@ -1340,7 +1324,6 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
        s->first_merging_chunk = 0;
        s->num_merging_chunks = 0;
        bio_list_init(&s->bios_queued_during_merge);
-       bio_init(&s->flush_bio, NULL, 0);
 
        /* Allocate hash table for COW data */
        if (init_hash_tables(s)) {
@@ -1528,8 +1511,6 @@ static void snapshot_dtr(struct dm_target *ti)
 
        dm_exception_store_destroy(s->store);
 
-       bio_uninit(&s->flush_bio);
-
        dm_put_device(ti, s->cow);
 
        dm_put_device(ti, s->origin);