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

Also change the parameter from bitmap to mddev, to avoid access
bitmap outside md-bitmap.c as much as possible.

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

index e1dceff2d9a5c73c16c6fda41c74b380ec90dba2..2d9d9689f721233b3e3ef78c789d7f78678f99ec 100644 (file)
@@ -1690,10 +1690,12 @@ static void bitmap_close_sync(struct mddev *mddev)
        }
 }
 
-void md_bitmap_cond_end_sync(struct bitmap *bitmap, sector_t sector, bool force)
+static void bitmap_cond_end_sync(struct mddev *mddev, sector_t sector,
+                                bool force)
 {
        sector_t s = 0;
        sector_t blocks;
+       struct bitmap *bitmap = mddev->bitmap;
 
        if (!bitmap)
                return;
@@ -1718,7 +1720,6 @@ void md_bitmap_cond_end_sync(struct bitmap *bitmap, sector_t sector, bool force)
        bitmap->last_end_sync = jiffies;
        sysfs_notify_dirent_safe(bitmap->mddev->sysfs_completed);
 }
-EXPORT_SYMBOL(md_bitmap_cond_end_sync);
 
 void md_bitmap_sync_with_cluster(struct mddev *mddev,
                              sector_t old_lo, sector_t old_hi,
@@ -2747,6 +2748,7 @@ static struct bitmap_operations bitmap_ops = {
        .endwrite               = bitmap_endwrite,
        .start_sync             = bitmap_start_sync,
        .end_sync               = bitmap_end_sync,
+       .cond_end_sync          = bitmap_cond_end_sync,
        .close_sync             = bitmap_close_sync,
 
        .update_sb              = bitmap_update_sb,
index 5d919b5303176dd5e2152bc06f99a378b1cee205..027de097f96a9f02a29fb440ac73f7395efee3e9 100644 (file)
@@ -262,6 +262,7 @@ struct bitmap_operations {
        bool (*start_sync)(struct mddev *mddev, sector_t offset,
                           sector_t *blocks, bool degraded);
        void (*end_sync)(struct mddev *mddev, sector_t offset, sector_t *blocks);
+       void (*cond_end_sync)(struct mddev *mddev, sector_t sector, bool force);
        void (*close_sync)(struct mddev *mddev);
 
        void (*update_sb)(struct bitmap *bitmap);
@@ -272,7 +273,6 @@ struct bitmap_operations {
 void mddev_set_bitmap_ops(struct mddev *mddev);
 
 /* these are exported */
-void md_bitmap_cond_end_sync(struct bitmap *bitmap, sector_t sector, bool force);
 void md_bitmap_sync_with_cluster(struct mddev *mddev,
                                 sector_t old_lo, sector_t old_hi,
                                 sector_t new_lo, sector_t new_hi);
index a6757c9a28940ebc6b4093bbec75551e856c4417..119c9477a453c8b6c1289377895fbfc401674266 100644 (file)
@@ -2815,9 +2815,9 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
         * sector_nr + two times RESYNC_SECTORS
         */
 
-       md_bitmap_cond_end_sync(mddev->bitmap, sector_nr,
-               mddev_is_clustered(mddev) && (sector_nr + 2 * RESYNC_SECTORS > conf->cluster_sync_high));
-
+       mddev->bitmap_ops->cond_end_sync(mddev, sector_nr,
+               mddev_is_clustered(mddev) &&
+               (sector_nr + 2 * RESYNC_SECTORS > conf->cluster_sync_high));
 
        if (raise_barrier(conf, sector_nr))
                return 0;
index 5b1c86c368b19b4487b48280abc3599b25586f48..5a7b19f48c45a5b673df79870127ae42d9658f3f 100644 (file)
@@ -3543,7 +3543,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
                 * safety reason, which ensures curr_resync_completed is
                 * updated in bitmap_cond_end_sync.
                 */
-               md_bitmap_cond_end_sync(mddev->bitmap, sector_nr,
+               mddev->bitmap_ops->cond_end_sync(mddev, sector_nr,
                                        mddev_is_clustered(mddev) &&
                                        (sector_nr + 2 * RESYNC_SECTORS > conf->cluster_sync_high));
 
index d2b8d2517abf812fdf3c5f3b0bfa3a843fee1fe4..87b8d19ab6014c7420a27d50fcdba2a9375202eb 100644 (file)
@@ -6540,7 +6540,7 @@ static inline sector_t raid5_sync_request(struct mddev *mddev, sector_t sector_n
                return sync_blocks * RAID5_STRIPE_SECTORS(conf);
        }
 
-       md_bitmap_cond_end_sync(mddev->bitmap, sector_nr, false);
+       mddev->bitmap_ops->cond_end_sync(mddev, sector_nr, false);
 
        sh = raid5_get_active_stripe(conf, NULL, sector_nr,
                                     R5_GAS_NOBLOCK);