From: NeilBrown Date: Tue, 10 May 2011 03:09:37 +0000 (+1000) Subject: Grow: allow auto-readonly arrays to be reshaped. X-Git-Tag: mdadm-3.2.2~80 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=815c8a7e0b11b69331211b59b880ba50f3ed2b5e;p=thirdparty%2Fmdadm.git Grow: allow auto-readonly arrays to be reshaped. In an array is auto-readonly then a reshape will not start. But auto-readonly is only wanted until something is explicitly done to acknowledge that the array is really wanted. So it is perfectly correct to switch an auto-readonly array to 'clean' if a reshape has been requested. Signed-off-by: NeilBrown --- diff --git a/Grow.c b/Grow.c index 5840a2c1..1e1e9f8c 100644 --- a/Grow.c +++ b/Grow.c @@ -521,9 +521,15 @@ static int freeze(struct supertype *st) else { struct mdinfo *sra = sysfs_read(-1, st->devnum, GET_VERSION); int err; + char buf[20]; if (!sra) return -1; + /* Need to clear any 'read-auto' status */ + if (sysfs_get_str(sra, NULL, "array_state", buf, 20) > 0 && + strncmp(buf, "read-auto", 9) == 0) + sysfs_set_str(sra, NULL, "array_state", "clean"); + err = sysfs_freeze_array(sra); sysfs_free(sra); return err;