]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
md/md-bitmap: merge md_bitmap_wait_behind_writes() into bitmap_operations
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:50 +0000 (15:44 +0800)
committerSong Liu <song@kernel.org>
Tue, 27 Aug 2024 19:43:16 +0000 (12:43 -0700)
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.

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

index 62e4f9d5a559182e63d2a33b86235d7bf0f6fa2c..b5dbfa9728dc077032fbd4bf265bc791e202d22a 100644 (file)
@@ -1863,7 +1863,7 @@ static void md_bitmap_free(struct bitmap *bitmap)
        kfree(bitmap);
 }
 
-void md_bitmap_wait_behind_writes(struct mddev *mddev)
+static void bitmap_wait_behind_writes(struct mddev *mddev)
 {
        struct bitmap *bitmap = mddev->bitmap;
 
@@ -1876,7 +1876,6 @@ void md_bitmap_wait_behind_writes(struct mddev *mddev)
                           atomic_read(&bitmap->behind_writes) == 0);
        }
 }
-EXPORT_SYMBOL_GPL(md_bitmap_wait_behind_writes);
 
 static void bitmap_destroy(struct mddev *mddev)
 {
@@ -1885,7 +1884,7 @@ static void bitmap_destroy(struct mddev *mddev)
        if (!bitmap) /* there was no bitmap */
                return;
 
-       md_bitmap_wait_behind_writes(mddev);
+       bitmap_wait_behind_writes(mddev);
        if (!mddev->serialize_policy)
                mddev_destroy_serial_pool(mddev, NULL);
 
@@ -2763,6 +2762,7 @@ static struct bitmap_operations bitmap_ops = {
        .dirty_bits             = bitmap_dirty_bits,
        .unplug                 = bitmap_unplug,
        .daemon_work            = bitmap_daemon_work,
+       .wait_behind_writes     = bitmap_wait_behind_writes,
 
        .startwrite             = bitmap_startwrite,
        .endwrite               = bitmap_endwrite,
index 7f6cc6f616b364e4d31f7634b101ab7c7933e1fb..bc9cb4ca676e7caab7f5f6e94e306c6cc20753be 100644 (file)
@@ -259,6 +259,7 @@ struct bitmap_operations {
                           unsigned long e);
        void (*unplug)(struct mddev *mddev, bool sync);
        void (*daemon_work)(struct mddev *mddev);
+       void (*wait_behind_writes)(struct mddev *mddev);
 
        int (*startwrite)(struct mddev *mddev, sector_t offset,
                          unsigned long sectors, bool behind);
@@ -286,9 +287,6 @@ struct bitmap_operations {
 /* the bitmap API */
 void mddev_set_bitmap_ops(struct mddev *mddev);
 
-/* these are exported */
-void md_bitmap_wait_behind_writes(struct mddev *mddev);
-
 static inline bool md_bitmap_enabled(struct bitmap *bitmap)
 {
        return bitmap && bitmap->storage.filemap &&
index 00932bd9b0c8b7bc1d8af198f8610988cf210789..6435688b7165e2e7ae9d46289a72003fe61037ff 100644 (file)
@@ -6498,7 +6498,7 @@ EXPORT_SYMBOL_GPL(md_stop_writes);
 
 static void mddev_detach(struct mddev *mddev)
 {
-       md_bitmap_wait_behind_writes(mddev);
+       mddev->bitmap_ops->wait_behind_writes(mddev);
        if (mddev->pers && mddev->pers->quiesce && !is_md_suspended(mddev)) {
                mddev->pers->quiesce(mddev, 1);
                mddev->pers->quiesce(mddev, 0);
index 3e678af8f28a25ea0d8d112292bdf6c60b32b932..b15725a7a581b7f5991ce2a7b64a2d6cb12b4c3c 100644 (file)
@@ -1371,7 +1371,7 @@ static void raid1_read_request(struct mddev *mddev, struct bio *bio,
                 * over-take any writes that are 'behind'
                 */
                mddev_add_trace_msg(mddev, "raid1 wait behind writes");
-               md_bitmap_wait_behind_writes(mddev);
+               mddev->bitmap_ops->wait_behind_writes(mddev);
        }
 
        if (max_sectors < bio_sectors(bio)) {