Skip to content

Commit ac4eecd

Browse files
committed
md/raid5: check before referencing mddev->bitmap_ops
JIRA: https://issues.redhat.com/browse/RHEL-123668 commit bb9317b Author: Yu Kuai <yukuai3@huawei.com> Date: Mon Jul 7 09:27:08 2025 +0800 md/raid5: check before referencing mddev->bitmap_ops Prepare to introduce CONFIG_MD_BITMAP. Link: https://lore.kernel.org/linux-raid/20250707012711.376844-13-yukuai1@huaweicloud.com Signed-off-by: Yu Kuai <yukuai3@huawei.com> Reviewed-by: Xiao Ni <xni@redhat.com> Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
1 parent 44e72b7 commit ac4eecd

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

drivers/md/raid5.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6496,7 +6496,8 @@ static inline sector_t raid5_sync_request(struct mddev *mddev, sector_t sector_n
64966496
&sync_blocks);
64976497
else /* completed sync */
64986498
conf->fullsync = 0;
6499-
mddev->bitmap_ops->close_sync(mddev);
6499+
if (md_bitmap_enabled(mddev, false))
6500+
mddev->bitmap_ops->close_sync(mddev);
65006501

65016502
return 0;
65026503
}
@@ -6534,7 +6535,8 @@ static inline sector_t raid5_sync_request(struct mddev *mddev, sector_t sector_n
65346535
return sync_blocks * RAID5_STRIPE_SECTORS(conf);
65356536
}
65366537

6537-
mddev->bitmap_ops->cond_end_sync(mddev, sector_nr, false);
6538+
if (md_bitmap_enabled(mddev, false))
6539+
mddev->bitmap_ops->cond_end_sync(mddev, sector_nr, false);
65386540

65396541
sh = raid5_get_active_stripe(conf, NULL, sector_nr,
65406542
R5_GAS_NOBLOCK);
@@ -6760,7 +6762,8 @@ static void raid5d(struct md_thread *thread)
67606762
/* Now is a good time to flush some bitmap updates */
67616763
conf->seq_flush++;
67626764
spin_unlock_irq(&conf->device_lock);
6763-
mddev->bitmap_ops->unplug(mddev, true);
6765+
if (md_bitmap_enabled(mddev, true))
6766+
mddev->bitmap_ops->unplug(mddev, true);
67646767
spin_lock_irq(&conf->device_lock);
67656768
conf->seq_write = conf->seq_flush;
67666769
activate_bit_delay(conf, conf->temp_inactive_list);
@@ -8309,7 +8312,6 @@ static int raid5_resize(struct mddev *mddev, sector_t sectors)
83098312
*/
83108313
sector_t newsize;
83118314
struct r5conf *conf = mddev->private;
8312-
int ret;
83138315

83148316
if (raid5_has_log(conf) || raid5_has_ppl(conf))
83158317
return -EINVAL;
@@ -8319,9 +8321,12 @@ static int raid5_resize(struct mddev *mddev, sector_t sectors)
83198321
mddev->array_sectors > newsize)
83208322
return -EINVAL;
83218323

8322-
ret = mddev->bitmap_ops->resize(mddev, sectors, 0);
8323-
if (ret)
8324-
return ret;
8324+
if (md_bitmap_enabled(mddev, false)) {
8325+
int ret = mddev->bitmap_ops->resize(mddev, sectors, 0);
8326+
8327+
if (ret)
8328+
return ret;
8329+
}
83258330

83268331
md_set_array_sectors(mddev, newsize);
83278332
if (sectors > mddev->dev_sectors &&

0 commit comments

Comments
 (0)