Re: [PATCH] RAID-6 check standalone md device

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

 



On Thu, 31 Mar 2011 20:53:46 +0200 Piergiorgio Sartor
<piergiorgio.sartor@xxxxxxxx> wrote:

> Hi Neil,
> 
> please find below the promised patch for the
> RAID-6 check, which allows to pass only the
> MD device, start and length.
> The three parameters are mandatory.
> 
> All necessary information is collected using
> the "sysfs_read()" call.
> Furthermore, if "length" is "0", then the check
> is performed until the end of the array.
> 
> The "Makefile" needed modifications too (as done
> previously) in order to link "sysfs.c".
> 
> Some checks are done, for example if the md device
> is really a RAID-6. Nevertheless I guess it is not
> bullet proof...
> 
> Next patch will include the "suspend" action.
> My idea is to do it "per stripe", please let me
> know if you've some better options.

Hi,
 I've applied this patch after some minor clean ups (indenting mostly).
 I rearranged some code first so that we don't need to link all all of the
 rest of mdadm - just a few 'library-style' files.

 I'm not sure about the loop:
>  
> +	comp = info->devs;
>  	for (i=0; i<raid_disks; i++) {
> -		char *p;
> -		p = strchr(argv[6+i], ':');
> -
> -		if(p != NULL) {
> -			*p++ = '\0';
> -			offsets[i] = atoll(p) * 512;
> -		}
> -		fds[i] = open(argv[6+i], O_RDWR);
> -		if (fds[i] < 0) {
> -			perror(argv[6+i]);
> -			fprintf(stderr,"test_stripe: cannot open %s.\n", argv[6+i]);
> +		int disk_slot = comp->disk.raid_disk;
> +		disk_name[disk_slot] = map_dev(comp->disk.major, comp->disk.minor, 0);
> +		offsets[disk_slot] = comp->data_offset * 512;
> +		fds[disk_slot] = open(disk_name[disk_slot], O_RDWR);
> +		if (fds[disk_slot] < 0) {
> +			perror(disk_name[disk_slot]);
> +			fprintf(stderr,"%s: cannot open %s\n", prg, disk_name[disk_slot]);
>  			exit(3);
>  		}
> +
> +		comp = comp->next;
>  	}


The 'info->devs' list could include spare devices mixed in with the other
devices.  So the 'for' loop should go to the end of list list, and we should
ignore devices which are not active..
So you should probably fix this.

You will be able to find the applied patch in my 'master' branch shortly.

Thanks,
NeilBrown

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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