On Fri, 28 Oct 2011 14:46:57 +0000 "Labun, Marcin" <Marcin.Labun@xxxxxxxxx> wrote: > Hi Neil, > Please review modified patch in response for your comments. > I have introduced two flags, one for activation blocking, second for container wide reshapes > Blocking: > - some arrays in container are blocked, the others can be activated and reshaped, > - some arrays are blocked, others can be activated but container wide reshaped is blocked for all. > > Thanks, > Marcin Labun Thanks. This looks mostly OK. I have applied it - with a number of formatting improvements and the removal for a debugging printf :-) However this bit looks wrong: > +/* > + * helper routine to check metadata reshape avalability > + * 1. Do not "grow" arrays with volume activation blocked > + * 2. do not reshape containers with container reshape blocked > + * > + * IN: > + * subarray - array name or NULL for container wide reshape > + * content - md device info from container_content > + * OUT: > + * 0 - block reshape > + */ > +static int check_reshape(char *subarray, struct mdinfo *content) > +{ > + char *ep; > + unsigned int idx; > + printf("subarray: %s\n", subarray); > + > + > + if (!subarray) { > + if (content->array.state & (1<<MD_SB_BLOCK_CONTAINER_RESHAPE)) > + return 0; > + } > + else { > + /* do not "grow" arrays with volume activation blocked */ > + idx = strtoul(subarray, &ep, 10); > + if ((*ep == '\0') && (content->container_member == (int) idx) && > + (content->array.state & (1<<MD_SB_BLOCK_VOLUME))) > + return 0; > + } > + > + return 1; > +} Grow.c shouldn't be doing a 'strtoul' here. The subarray string belongs to the metadata handler, mdadm core code shouldn't interpret it at all. What exactly is the point of that bit of code? Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature