]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Do not use backup file for external metadata
authorAdam Kwolek <adam.kwolek@intel.com>
Wed, 8 Jun 2011 07:13:30 +0000 (17:13 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 8 Jun 2011 07:13:30 +0000 (17:13 +1000)
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>
Grow.c

diff --git a/Grow.c b/Grow.c
index c2c45aedf12cab3347d95522679d569eacf22dcb..7239d460986052161e1428f478a186d8f94c65b3 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -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