]> git.baikalelectronics.ru Git - kernel.git/commitdiff
dm-thin: use blkdev_issue_flush instead of open coding it
authorChristoph Hellwig <hch@lst.de>
Mon, 24 Jan 2022 09:10:56 +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 pool.

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

index 76a9c2e9aeeeacc44551c7e060ccfce3b901eb2b..411a3f56ed90c8c5af944b0d528e0251436fc863 100644 (file)
@@ -282,8 +282,6 @@ struct pool {
        struct dm_bio_prison_cell **cell_sort_array;
 
        mempool_t mapping_pool;
-
-       struct bio flush_bio;
 };
 
 static void metadata_operation_failed(struct pool *pool, const char *op, int r);
@@ -2906,7 +2904,6 @@ static void __pool_destroy(struct pool *pool)
        if (pool->next_mapping)
                mempool_free(pool->next_mapping, &pool->mapping_pool);
        mempool_exit(&pool->mapping_pool);
-       bio_uninit(&pool->flush_bio);
        dm_deferred_set_destroy(pool->shared_read_ds);
        dm_deferred_set_destroy(pool->all_io_ds);
        kfree(pool);
@@ -2987,7 +2984,6 @@ static struct pool *pool_create(struct mapped_device *pool_md,
        pool->low_water_triggered = false;
        pool->suspended = true;
        pool->out_of_data_space = false;
-       bio_init(&pool->flush_bio, NULL, 0);
 
        pool->shared_read_ds = dm_deferred_set_create();
        if (!pool->shared_read_ds) {
@@ -3194,13 +3190,8 @@ static void metadata_low_callback(void *context)
 static int metadata_pre_commit_callback(void *context)
 {
        struct pool *pool = context;
-       struct bio *flush_bio = &pool->flush_bio;
-
-       bio_reset(flush_bio);
-       bio_set_dev(flush_bio, pool->data_dev);
-       flush_bio->bi_opf = REQ_OP_WRITE | REQ_PREFLUSH;
 
-       return submit_bio_wait(flush_bio);
+       return blkdev_issue_flush(pool->data_dev);
 }
 
 static sector_t get_dev_size(struct block_device *bdev)