Merge tag 'md/4.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md

Pull MD fixes from Shaohua Li:

 - raid5-ppl fix by Artur. This one is introduced in this release cycle.

 - raid5 reshape fix by Xiao. This is an old bug and will be added to
   stable.

 - bitmap fix by Guoqing.

* tag 'md/4.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md:
  raid5-ppl: use BIOSET_NEED_BVECS when creating bioset
  Raid5 should update rdev->sectors after reshape
  md/bitmap: don't read page from device with Bitmap_sync
This commit is contained in:
Linus Torvalds 2017-07-18 11:51:08 -07:00
commit 74cbd96bc2
4 changed files with 7 additions and 6 deletions

View File

@ -156,7 +156,8 @@ static int read_sb_page(struct mddev *mddev, loff_t offset,
rdev_for_each(rdev, mddev) { rdev_for_each(rdev, mddev) {
if (! test_bit(In_sync, &rdev->flags) if (! test_bit(In_sync, &rdev->flags)
|| test_bit(Faulty, &rdev->flags)) || test_bit(Faulty, &rdev->flags)
|| test_bit(Bitmap_sync, &rdev->flags))
continue; continue;
target = offset + index * (PAGE_SIZE/512); target = offset + index * (PAGE_SIZE/512);

View File

@ -134,7 +134,9 @@ enum flag_bits {
Faulty, /* device is known to have a fault */ Faulty, /* device is known to have a fault */
In_sync, /* device is in_sync with rest of array */ In_sync, /* device is in_sync with rest of array */
Bitmap_sync, /* ..actually, not quite In_sync. Need a Bitmap_sync, /* ..actually, not quite In_sync. Need a
* bitmap-based recovery to get fully in sync * bitmap-based recovery to get fully in sync.
* The bit is only meaningful before device
* has been passed to pers->hot_add_disk.
*/ */
WriteMostly, /* Avoid reading if at all possible */ WriteMostly, /* Avoid reading if at all possible */
AutoDetected, /* added by auto-detect */ AutoDetected, /* added by auto-detect */

View File

@ -1150,7 +1150,7 @@ int ppl_init_log(struct r5conf *conf)
goto err; goto err;
} }
ppl_conf->bs = bioset_create(conf->raid_disks, 0, 0); ppl_conf->bs = bioset_create(conf->raid_disks, 0, BIOSET_NEED_BVECS);
if (!ppl_conf->bs) { if (!ppl_conf->bs) {
ret = -ENOMEM; ret = -ENOMEM;
goto err; goto err;

View File

@ -7951,12 +7951,10 @@ static void end_reshape(struct r5conf *conf)
{ {
if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) { if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) {
struct md_rdev *rdev;
spin_lock_irq(&conf->device_lock); spin_lock_irq(&conf->device_lock);
conf->previous_raid_disks = conf->raid_disks; conf->previous_raid_disks = conf->raid_disks;
rdev_for_each(rdev, conf->mddev) md_finish_reshape(conf->mddev);
rdev->data_offset = rdev->new_data_offset;
smp_wmb(); smp_wmb();
conf->reshape_progress = MaxSector; conf->reshape_progress = MaxSector;
conf->mddev->reshape_position = MaxSector; conf->mddev->reshape_position = MaxSector;