Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d39aa1b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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.
parents 4a68d54c db91ff55
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -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;

	if (!rs->bitmap_loaded) {
		bitmap_load(&rs->md);
		rs->bitmap_loaded = 1;
	} else
		md_wakeup_thread(rs->md.thread);

	mddev_resume(&rs->md);
}

+3 −2
Original line number Diff line number Diff line
@@ -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))