Message ID | 20240826074452.1490072-30-yukuai1@huaweicloud.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | md/md-bitmap: introduce bitmap_operations and make structure internal | expand |
Context | Check | Description |
---|---|---|
mdraidci/vmtest-md-6_11-PR | success | PR summary |
mdraidci/vmtest-md-6_11-VM_Test-0 | success | Logs for build-kernel |
Dear Kuai, Thank you for your patch. (I am still confused, what your given and surname is.) Am 26.08.24 um 09:44 schrieb Yu Kuai: > From: Yu Kuai <yukuai3@huawei.com> There is a typo in the summary: mrege → merge. > 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> > --- > drivers/md/md-bitmap.c | 6 ++++-- > drivers/md/md-bitmap.h | 2 +- > drivers/md/raid1.c | 6 +++--- > drivers/md/raid10.c | 2 +- > drivers/md/raid5.c | 2 +- > 5 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c > index e1dceff2d9a5..2d9d9689f721 100644 > --- a/drivers/md/md-bitmap.c > +++ b/drivers/md/md-bitmap.c > @@ -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, > diff --git a/drivers/md/md-bitmap.h b/drivers/md/md-bitmap.h > index 5d919b530317..027de097f96a 100644 > --- a/drivers/md/md-bitmap.h > +++ b/drivers/md/md-bitmap.h > @@ -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); > diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c > index 52ca5619d9b4..00174cacb1f4 100644 > --- a/drivers/md/raid1.c > +++ b/drivers/md/raid1.c > @@ -2828,9 +2828,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; > diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c > index 5b1c86c368b1..5a7b19f48c45 100644 > --- a/drivers/md/raid10.c > +++ b/drivers/md/raid10.c > @@ -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)); > > diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c > index d2b8d2517abf..87b8d19ab601 100644 > --- a/drivers/md/raid5.c > +++ b/drivers/md/raid5.c > @@ -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); The diff looks good to me. Kind regards, Paul
Hi, 在 2024/08/26 16:09, Paul Menzel 写道: > Dear Kuai, > > > Thank you for your patch. (I am still confused, what your given and > surname is.) > > Am 26.08.24 um 09:44 schrieb Yu Kuai: >> From: Yu Kuai <yukuai3@huawei.com> > > There is a typo in the summary: mrege → merge. Got it!. > >> 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> >> --- >> drivers/md/md-bitmap.c | 6 ++++-- >> drivers/md/md-bitmap.h | 2 +- >> drivers/md/raid1.c | 6 +++--- >> drivers/md/raid10.c | 2 +- >> drivers/md/raid5.c | 2 +- >> 5 files changed, 10 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c >> index e1dceff2d9a5..2d9d9689f721 100644 >> --- a/drivers/md/md-bitmap.c >> +++ b/drivers/md/md-bitmap.c >> @@ -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, >> diff --git a/drivers/md/md-bitmap.h b/drivers/md/md-bitmap.h >> index 5d919b530317..027de097f96a 100644 >> --- a/drivers/md/md-bitmap.h >> +++ b/drivers/md/md-bitmap.h >> @@ -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); >> diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c >> index 52ca5619d9b4..00174cacb1f4 100644 >> --- a/drivers/md/raid1.c >> +++ b/drivers/md/raid1.c >> @@ -2828,9 +2828,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; >> diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c >> index 5b1c86c368b1..5a7b19f48c45 100644 >> --- a/drivers/md/raid10.c >> +++ b/drivers/md/raid10.c >> @@ -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)); >> diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c >> index d2b8d2517abf..87b8d19ab601 100644 >> --- a/drivers/md/raid5.c >> +++ b/drivers/md/raid5.c >> @@ -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); > > The diff looks good to me. > > > Kind regards, Thanks for the review!. Kuai > > Paul > . >
diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index e1dceff2d9a5..2d9d9689f721 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -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, diff --git a/drivers/md/md-bitmap.h b/drivers/md/md-bitmap.h index 5d919b530317..027de097f96a 100644 --- a/drivers/md/md-bitmap.h +++ b/drivers/md/md-bitmap.h @@ -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); diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 52ca5619d9b4..00174cacb1f4 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -2828,9 +2828,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; diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 5b1c86c368b1..5a7b19f48c45 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -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)); diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index d2b8d2517abf..87b8d19ab601 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -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);