Skip to content

Commit 2953079

Browse files
committed
md: separate flags for superblock changes
The mddev->flags are used for different purposes. There are a lot of places we check/change the flags without masking unrelated flags, we could check/change unrelated flags. These usage are most for superblock write, so spearate superblock related flags. This should make the code clearer and also fix real bugs. Reviewed-by: NeilBrown <neilb@suse.com> Signed-off-by: Shaohua Li <shli@fb.com>
1 parent 82a301c commit 2953079

File tree

9 files changed

+106
-101
lines changed

9 files changed

+106
-101
lines changed

drivers/md/bitmap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1623,7 +1623,7 @@ void bitmap_cond_end_sync(struct bitmap *bitmap, sector_t sector, bool force)
16231623
atomic_read(&bitmap->mddev->recovery_active) == 0);
16241624

16251625
bitmap->mddev->curr_resync_completed = sector;
1626-
set_bit(MD_CHANGE_CLEAN, &bitmap->mddev->flags);
1626+
set_bit(MD_SB_CHANGE_CLEAN, &bitmap->mddev->sb_flags);
16271627
sector &= ~((1ULL << bitmap->counts.chunkshift) - 1);
16281628
s = 0;
16291629
while (s < sector && s < bitmap->mddev->resync_max_sectors) {
@@ -2296,7 +2296,7 @@ location_store(struct mddev *mddev, const char *buf, size_t len)
22962296
/* Ensure new bitmap info is stored in
22972297
* metadata promptly.
22982298
*/
2299-
set_bit(MD_CHANGE_DEVS, &mddev->flags);
2299+
set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags);
23002300
md_wakeup_thread(mddev->thread);
23012301
}
23022302
rv = 0;

drivers/md/dm-raid.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2011,7 +2011,7 @@ static int super_load(struct md_rdev *rdev, struct md_rdev *refdev)
20112011
sb->compat_features = cpu_to_le32(FEATURE_FLAG_SUPPORTS_V190);
20122012

20132013
/* Force writing of superblocks to disk */
2014-
set_bit(MD_CHANGE_DEVS, &rdev->mddev->flags);
2014+
set_bit(MD_SB_CHANGE_DEVS, &rdev->mddev->sb_flags);
20152015

20162016
/* Any superblock is better than none, choose that if given */
20172017
return refdev ? 0 : 1;
@@ -3497,7 +3497,7 @@ static void rs_update_sbs(struct raid_set *rs)
34973497
struct mddev *mddev = &rs->md;
34983498
int ro = mddev->ro;
34993499

3500-
set_bit(MD_CHANGE_DEVS, &mddev->flags);
3500+
set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags);
35013501
mddev->ro = 0;
35023502
md_update_sb(mddev, 1);
35033503
mddev->ro = ro;

0 commit comments

Comments
 (0)