diff options
author | Adam Kwolek <adam.kwolek@intel.com> | 2011-06-08 17:13:30 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-06-08 17:13:30 +1000 |
commit | 13c37ad3f37a95d66cf66d3b3eaffa3ecacac106 (patch) | |
tree | 538675cc1922d1a9b65fc89e2647fe283e9990cc /Grow.c | |
parent | e919fb0af245512b02200b8e78c8bbbc0f966f9c (diff) |
Do not use backup file for external metadata
When external metatdata handler supports manage_reshape()
and recover_backup() functions in super switch backup file is not required
and can be omitted. For backup purposes metadata specific mechanisms
are used.
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 'Grow.c')
-rw-r--r-- | Grow.c | 40 |
1 files changed, 22 insertions, 18 deletions
@@ -2039,25 +2039,29 @@ started: if (d < 0) { goto release; } - if (backup_file == NULL) { - if (reshape.after.data_disks <= reshape.before.data_disks) { - fprintf(stderr, - Name ": %s: Cannot grow - need backup-file\n", - devname); - goto release; - } else if (sra->array.spare_disks == 0) { - fprintf(stderr, Name ": %s: Cannot grow - need a spare or " - "backup-file to backup critical section\n", - devname); - goto release; - } - } else { - if (!reshape_open_backup_file(backup_file, fd, devname, - (signed)blocks, - fdlist+d, offsets+d, restart)) { - goto release; + if ((st->ss->manage_reshape == NULL) || + (st->ss->recover_backup == NULL)) { + if (backup_file == NULL) { + if (reshape.after.data_disks <= + reshape.before.data_disks) { + fprintf(stderr, Name ": %s: Cannot grow - " + "need backup-file\n", devname); + goto release; + } else if (sra->array.spare_disks == 0) { + fprintf(stderr, Name ": %s: Cannot grow - " + "need a spare or backup-file to backup " + "critical section\n", devname); + goto release; + } + } else { + if (!reshape_open_backup_file(backup_file, fd, devname, + (signed)blocks, + fdlist+d, offsets+d, + restart)) { + goto release; + } + d++; } - d++; } /* lastly, check that the internal stripe cache is |