diff options
author | Adam Kwolek <adam.kwolek@intel.com> | 2011-06-08 17:13:21 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-06-08 17:13:21 +1000 |
commit | 0ec5d470e00787e9b03ba3a880b1b98e0da034cd (patch) | |
tree | c15251fe218054c45b0c1665148630f66e590bfb | |
parent | c17608eac3cfd3aca667e971ece2511fda8785af (diff) | |
download | mdadm-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.c | 22 |
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) { |