summaryrefslogtreecommitdiffstats
path: root/mdadm.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2005-06-07 23:03:46 +0000
committerNeil Brown <neilb@suse.de>2005-06-07 23:03:46 +0000
commitf5e166fee3be2ccdce3def28edc7a771fc84df9f (patch)
tree2d5715d202639ed1e39e2c7600eaef4e3efa1bba /mdadm.c
parent55935d51800231d7c4ee26fafe5553f8a1471d09 (diff)
downloadmdadm-f5e166fee3be2ccdce3def28edc7a771fc84df9f.tar.gz
mdadm-f5e166fee3be2ccdce3def28edc7a771fc84df9f.tar.xz
mdadm-f5e166fee3be2ccdce3def28edc7a771fc84df9f.zip
Support --grow --bitmap=internal
Adding a filebased bitmap is not yet supported, and this code is still under development. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Diffstat (limited to 'mdadm.c')
-rw-r--r--mdadm.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/mdadm.c b/mdadm.c
index 39cad1a..83b452e 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -138,7 +138,7 @@ int main(int argc, char *argv[])
continue;
case 'b':
- if (mode == ASSEMBLE || mode == BUILD || mode == CREATE)
+ if (mode == ASSEMBLE || mode == BUILD || mode == CREATE || mode == GROW)
break; /* b means bitmap */
brief = 1;
continue;
@@ -587,6 +587,7 @@ int main(int argc, char *argv[])
continue;
case O(MONITOR,'d'): /* delay in seconds */
+ case O(GROW, 'd'):
case O(BUILD,'d'): /* delay for bitmap updates */
case O(CREATE,'d'):
if (delay)
@@ -709,11 +710,14 @@ int main(int argc, char *argv[])
}
ident.bitmap_fd = bitmap_fd; /* for Assemble */
continue;
+
+ case O(GROW,'b'):
case O(BUILD,'b'):
case O(CREATE,'b'): /* here we create the bitmap */
bitmap_file = optarg;
continue;
+ case O(GROW,4):
case O(BUILD,4):
case O(CREATE,4): /* bitmap chunksize */
bitmap_chunk = strtol(optarg, &c, 10);
@@ -1014,15 +1018,19 @@ int main(int argc, char *argv[])
if (rv)
break;
}
- } else if ((size >= 0) + (raiddisks != 0) + (layout != UnSet) > 1) {
- fprintf(stderr, Name ": can change at most one of size, raiddisks, and layout\n");
+ } else if ((size >= 0) + (raiddisks != 0) + (layout != UnSet) + (bitmap_file != NULL)> 1) {
+ fprintf(stderr, Name ": can change at most one of size, raiddisks, bitmap, and layout\n");
rv = 1;
break;
} else if (layout != UnSet)
rv = Manage_reconfig(devlist->devname, mdfd, layout);
else if (size >= 0 || raiddisks)
rv = Manage_resize(devlist->devname, mdfd, size, raiddisks);
- else
+ else if (bitmap_file) {
+ if (delay == 0) delay = DEFAULT_BITMAP_DELAY;
+ rv = Grow_addbitmap(devlist->devname, mdfd, bitmap_file,
+ bitmap_chunk, delay);
+ } else
fprintf(stderr, Name ": no changes to --grow\n");
break;
}