raid5-cache: fully initialize flush_bio when needed
authorChristoph Hellwig <hch@lst.de>
Mon, 28 Feb 2022 11:25:01 +0000 (13:25 +0200)
committerSong Liu <song@kernel.org>
Wed, 9 Mar 2022 06:55:04 +0000 (22:55 -0800)
Stop using bio_reset and just initialize the bio fully when needed.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/raid5-cache.c

index 86e2bb89d9c7b2b29fa28a88c0dc7a5fe2bd6112..8907d18c225a932bfb052f67a081cf4557e029fb 100644 (file)
@@ -1266,6 +1266,8 @@ static void r5l_log_flush_endio(struct bio *bio)
                r5l_io_run_stripes(io);
        list_splice_tail_init(&log->flushing_ios, &log->finished_ios);
        spin_unlock_irqrestore(&log->io_list_lock, flags);
+
+       bio_uninit(bio);
 }
 
 /*
@@ -1301,7 +1303,7 @@ void r5l_flush_stripe_to_raid(struct r5l_log *log)
 
        if (!do_flush)
                return;
-       bio_reset(&log->flush_bio, log->rdev->bdev,
+       bio_init(&log->flush_bio, log->rdev->bdev, NULL, 0,
                  REQ_OP_WRITE | REQ_PREFLUSH);
        log->flush_bio.bi_end_io = r5l_log_flush_endio;
        submit_bio(&log->flush_bio);
@@ -3105,7 +3107,6 @@ int r5l_init_log(struct r5conf *conf, struct md_rdev *rdev)
        INIT_LIST_HEAD(&log->io_end_ios);
        INIT_LIST_HEAD(&log->flushing_ios);
        INIT_LIST_HEAD(&log->finished_ios);
-       bio_init(&log->flush_bio, NULL, NULL, 0, 0);
 
        log->io_kc = KMEM_CACHE(r5l_io_unit, 0);
        if (!log->io_kc)