]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
md/raid1: check before referencing mddev->bitmap_ops
authorYu Kuai <yukuai3@huawei.com>
Mon, 7 Jul 2025 01:27:06 +0000 (09:27 +0800)
committerYu Kuai <yukuai3@huawei.com>
Sat, 6 Sep 2025 09:12:02 +0000 (17:12 +0800)
Prepare to introduce CONFIG_MD_BITMAP.

Link: https://lore.kernel.org/linux-raid/20250707012711.376844-11-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Xiao Ni <xni@redhat.com>
drivers/md/raid1.c

index 5599dcbd2991e366c33c305b33c1e63858389853..0e792b9bfff8b76dd2b51856a94a292a0fa6a7b8 100644 (file)
@@ -2820,7 +2820,8 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
                else /* completed sync */
                        conf->fullsync = 0;
 
-               mddev->bitmap_ops->close_sync(mddev);
+               if (md_bitmap_enabled(mddev, false))
+                       mddev->bitmap_ops->close_sync(mddev);
                close_sync(conf);
 
                if (mddev_is_clustered(mddev)) {
@@ -2857,10 +2858,11 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
        /* we are incrementing sector_nr below. To be safe, we check against
         * sector_nr + two times RESYNC_SECTORS
         */
-
-       mddev->bitmap_ops->cond_end_sync(mddev, sector_nr,
-               mddev_is_clustered(mddev) &&
-               (sector_nr + 2 * RESYNC_SECTORS > conf->cluster_sync_high));
+       if (md_bitmap_enabled(mddev, false))
+               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;
@@ -3335,15 +3337,17 @@ static int raid1_resize(struct mddev *mddev, sector_t sectors)
         * worth it.
         */
        sector_t newsize = raid1_size(mddev, sectors, 0);
-       int ret;
 
        if (mddev->external_size &&
            mddev->array_sectors > newsize)
                return -EINVAL;
 
-       ret = mddev->bitmap_ops->resize(mddev, newsize, 0);
-       if (ret)
-               return ret;
+       if (md_bitmap_enabled(mddev, false)) {
+               int ret = mddev->bitmap_ops->resize(mddev, newsize, 0);
+
+               if (ret)
+                       return ret;
+       }
 
        md_set_array_sectors(mddev, newsize);
        if (sectors > mddev->dev_sectors &&