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>
This commit is contained in:
parent
c47b0ff69a
commit
ba53ea59ad
|
@ -1190,6 +1190,9 @@ int Assemble(struct supertype *st, char *mddev,
|
|||
fdlist[i] = -1;
|
||||
}
|
||||
if (!err) {
|
||||
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) {
|
||||
|
@ -1571,6 +1574,9 @@ int assemble_container_content(struct supertype *st, int mdfd,
|
|||
else
|
||||
fdlist[spare++] = fd;
|
||||
}
|
||||
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) {
|
||||
|
|
3
mdadm.h
3
mdadm.h
|
@ -786,6 +786,9 @@ extern struct superswitch {
|
|||
*/
|
||||
const char *(*get_disk_controller_domain)(const char *path);
|
||||
|
||||
/* for external backup area */
|
||||
int (*recover_backup)(struct supertype *st, struct mdinfo *info);
|
||||
|
||||
int swapuuid; /* true if uuid is bigending rather than hostendian */
|
||||
int external;
|
||||
const char *name; /* canonical metadata name */
|
||||
|
|
Loading…
Reference in New Issue