diff options
author | Adam Kwolek <adam.kwolek@intel.com> | 2011-06-08 17:11:11 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-06-08 17:11:11 +1000 |
commit | ba53ea59adab4d08bb8ac1e15b39a9389ba26950 (patch) | |
tree | 717a5a766d27e5713a50d20534a829601a2b75e8 /Assemble.c | |
parent | c47b0ff69a50d6b74e3ad39e31826b5b90b370df (diff) |
Add reshape restart support for external metadata
Patch introduces support for reshape process restart for external metadata
using metadata specific data handling methods.
It introduces recover_backup() function that restores array to stable state
It is equivalent to Grow_restart() functionality for native metadata.
Signed-off-by: Maciej Trela <maciej.trela@intel.com>
Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: Krzysztof Wojcik <krzysztof.wojcik@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r-- | Assemble.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -1190,8 +1190,11 @@ int Assemble(struct supertype *st, char *mddev, fdlist[i] = -1; } if (!err) { - err = Grow_restart(st, content, fdlist, bestcnt, - backup_file, verbose > 0); + if (st->ss->external && st->ss->recover_backup) + err = st->ss->recover_backup(st, content); + else + err = Grow_restart(st, content, fdlist, bestcnt, + backup_file, verbose > 0); if (err && invalid_backup) { if (verbose > 0) fprintf(stderr, Name ": continuing" @@ -1571,8 +1574,11 @@ int assemble_container_content(struct supertype *st, int mdfd, else fdlist[spare++] = fd; } - err = Grow_restart(st, content, fdlist, spare, - backup_file, verbose > 0); + if (st->ss->external && st->ss->recover_backup) + err = st->ss->recover_backup(st, content); + else + err = Grow_restart(st, content, fdlist, spare, + backup_file, verbose > 0); while (spare > 0) { spare--; if (fdlist[spare] >= 0) |