Some simple md-related fixes.
1/ two small fixes to ensure we handle an interrupted resync properly. 2/ avoid loading the bitmap multiple times in dm-raid -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iQIVAwUATzMdiTnsnt1WYoG5AQKICw/9H3Xf/3crCCVRQ+yzSdZ1ZJH24Rps9O6W 8dLFN4/Ng/qxymWUMrgHAMq5MEEz2M3i7W+j23lFv6Oce06y8GJ4PpoYY5xlXCgO SIU1BaO1JFHxQn89EQtP3iOn4AOiZvX0GUObR0P8KO1mMnLmN7cg8J1kBfmQiBKu aXcUqqNvcywoix6ve4O/xgnZjd4IExxqG3W8U7CaIwExUDwaLY4NckxJcIJbIYy9 iapOGMUdcyr6xm819V/xE2DyAtfFCtvAk1hfW/dM4QQctran3MzQIRFn9RW+CwHU ComEnv5ti/7g//JPXQArUPk4xgRHrMhqFcmmD8rozJ6FJDi8vw2e0BXaRLVqa0mK 1qSZkr0Ot3nwAdILzgSbNXQ0Y5OJgc9OLX5GGlVibTW2VTJYFgA7jAsnqq8PAJC5 sU5h2K3jrSy2unGy6BxleL5D/wvREE5OBnW35TEB5TYbxjp1FLgn+BWp8FfFUYWT Eb2cIyAj6cBFJ3ma1K0RH0dmS9cbNjuG+CLiApJOnEEsXzrp/4KnqOwg4672ewW3 m1Ue2Qv+0avaK3sVyT+qzuemc6b0ps/dix0gMXw2pYqXQWHquW5NdUJcgD2DKFSn BB734nUP6KlPg0IFh1eehRHyVRLIAot/uBlUJ3bMx9xeYCkKa+twX90u6EmjTopP JjLxNsf6c2I= =k0Xz -----END PGP SIGNATURE----- Merge tag 'md-3.3-fixes' of git://neil.brown.name/md Some simple md-related fixes. 1/ two small fixes to ensure we handle an interrupted resync properly. 2/ avoid loading the bitmap multiple times in dm-raid * tag 'md-3.3-fixes' of git://neil.brown.name/md: md: two small fixes to handling interrupt resync. Prevent DM RAID from loading bitmap twice.
This commit is contained in:
commit
4d39aa1b99
|
@ -56,7 +56,8 @@ struct raid_dev {
|
|||
struct raid_set {
|
||||
struct dm_target *ti;
|
||||
|
||||
uint64_t print_flags;
|
||||
uint32_t bitmap_loaded;
|
||||
uint32_t print_flags;
|
||||
|
||||
struct mddev md;
|
||||
struct raid_type *raid_type;
|
||||
|
@ -1085,7 +1086,7 @@ static int raid_status(struct dm_target *ti, status_type_t type,
|
|||
raid_param_cnt += 2;
|
||||
}
|
||||
|
||||
raid_param_cnt += (hweight64(rs->print_flags & ~DMPF_REBUILD) * 2);
|
||||
raid_param_cnt += (hweight32(rs->print_flags & ~DMPF_REBUILD) * 2);
|
||||
if (rs->print_flags & (DMPF_SYNC | DMPF_NOSYNC))
|
||||
raid_param_cnt--;
|
||||
|
||||
|
@ -1197,7 +1198,12 @@ static void raid_resume(struct dm_target *ti)
|
|||
{
|
||||
struct raid_set *rs = ti->private;
|
||||
|
||||
bitmap_load(&rs->md);
|
||||
if (!rs->bitmap_loaded) {
|
||||
bitmap_load(&rs->md);
|
||||
rs->bitmap_loaded = 1;
|
||||
} else
|
||||
md_wakeup_thread(rs->md.thread);
|
||||
|
||||
mddev_resume(&rs->md);
|
||||
}
|
||||
|
||||
|
|
|
@ -7333,7 +7333,8 @@ void md_do_sync(struct mddev *mddev)
|
|||
printk(KERN_INFO
|
||||
"md: checkpointing %s of %s.\n",
|
||||
desc, mdname(mddev));
|
||||
mddev->recovery_cp = mddev->curr_resync;
|
||||
mddev->recovery_cp =
|
||||
mddev->curr_resync_completed;
|
||||
}
|
||||
} else
|
||||
mddev->recovery_cp = MaxSector;
|
||||
|
@ -7351,9 +7352,9 @@ void md_do_sync(struct mddev *mddev)
|
|||
rcu_read_unlock();
|
||||
}
|
||||
}
|
||||
skip:
|
||||
set_bit(MD_CHANGE_DEVS, &mddev->flags);
|
||||
|
||||
skip:
|
||||
if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
|
||||
/* We completed so min/max setting can be forgotten if used. */
|
||||
if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery))
|
||||
|
|
Loading…
Reference in New Issue