Re: [PATCH] kill-subarray: fix, IMSM cannot kill-subarray with unsupported metadata

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux