summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Kwolek <adam.kwolek@intel.com>2011-06-08 17:13:21 +1000
committerNeilBrown <neilb@suse.de>2011-06-08 17:13:21 +1000
commit0ec5d470e00787e9b03ba3a880b1b98e0da034cd (patch)
treec15251fe218054c45b0c1665148630f66e590bfb
parentc17608eac3cfd3aca667e971ece2511fda8785af (diff)
downloadmdadm-0ec5d470e00787e9b03ba3a880b1b98e0da034cd.tar.gz
imsm: Apply checkpoint metadata update for general migration
mdmon has to update checkpoint information in metadata during general migration according to received metadata update. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--super-intel.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/super-intel.c b/super-intel.c
index fbfb27e..f277d9d 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -6914,6 +6914,24 @@ static void imsm_process_update(struct supertype *st,
mpb = super->anchor;
switch (type) {
+ case update_general_migration_checkpoint: {
+ struct intel_dev *id;
+ struct imsm_update_general_migration_checkpoint *u =
+ (void *)update->buf;
+
+ dprintf("imsm: process_update() "
+ "for update_general_migration_checkpoint called\n");
+
+ /* find device under general migration */
+ for (id = super->devlist ; id; id = id->next) {
+ if (is_gen_migration(id->dev)) {
+ id->dev->vol.curr_migr_unit =
+ __cpu_to_le32(u->curr_migr_unit);
+ super->updates_pending++;
+ }
+ }
+ break;
+ }
case update_takeover: {
struct imsm_update_takeover *u = (void *)update->buf;
if (apply_takeover_update(u, super, &update->space_list)) {
@@ -7251,6 +7269,10 @@ static void imsm_prepare_update(struct supertype *st,
size_t len = 0;
switch (type) {
+ case update_general_migration_checkpoint:
+ dprintf("imsm: prepare_update() "
+ "for update_general_migration_checkpoint called\n");
+ break;
case update_takeover: {
struct imsm_update_takeover *u = (void *)update->buf;
if (u->direction == R0_TO_R10) {