]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
md/raid1: use md_bitmap_wait_behind_writes() in raid1_read_request()
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:11 +0000 (15:44 +0800)
committerSong Liu <song@kernel.org>
Tue, 27 Aug 2024 17:14:14 +0000 (10:14 -0700)
Use the existed helper instead of open coding it to make the code cleaner.
There are no functional changes, and also avoid dereferencing bitmap
directly to prepare inventing a new bitmap.

Noted that this patch also export md_bitmap_wait_behind_writes(), which
is necessary for now, and the exported api will be removed in following
patches to convert bitmap apis into ops.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20240826074452.1490072-2-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/md-bitmap.c
drivers/md/raid1.c

index 08232d8dc815eed7a76091caf86d7b9382b6370d..08743dcc70f1fff0efc7bf2ba2b54f88aed5968f 100644 (file)
@@ -1851,6 +1851,7 @@ void md_bitmap_wait_behind_writes(struct mddev *mddev)
                           atomic_read(&bitmap->behind_writes) == 0);
        }
 }
+EXPORT_SYMBOL_GPL(md_bitmap_wait_behind_writes);
 
 void md_bitmap_destroy(struct mddev *mddev)
 {
index 531ddfc6efbdda52e59bbfa3f6819d9ffcf833e5..18aaa7247bba87ad29fd800035ace5c0598fba80 100644 (file)
@@ -1311,7 +1311,6 @@ static void raid1_read_request(struct mddev *mddev, struct bio *bio,
        struct r1conf *conf = mddev->private;
        struct raid1_info *mirror;
        struct bio *read_bio;
-       struct bitmap *bitmap = mddev->bitmap;
        const enum req_op op = bio_op(bio);
        const blk_opf_t do_sync = bio->bi_opf & REQ_SYNC;
        int max_sectors;
@@ -1364,15 +1363,13 @@ static void raid1_read_request(struct mddev *mddev, struct bio *bio,
                                    (unsigned long long)r1_bio->sector,
                                    mirror->rdev->bdev);
 
-       if (test_bit(WriteMostly, &mirror->rdev->flags) &&
-           bitmap) {
+       if (test_bit(WriteMostly, &mirror->rdev->flags)) {
                /*
                 * Reading from a write-mostly device must take care not to
                 * over-take any writes that are 'behind'
                 */
                mddev_add_trace_msg(mddev, "raid1 wait behind writes");
-               wait_event(bitmap->behind_wait,
-                          atomic_read(&bitmap->behind_writes) == 0);
+               md_bitmap_wait_behind_writes(mddev);
        }
 
        if (max_sectors < bio_sectors(bio)) {