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

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

 



Hi Neil,

On Tue, Apr 05, 2011 at 09:01:13AM +1000, NeilBrown wrote:
> 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.

thanks for the information, that's actually very
important.

I'll try to provide a fix patch in then next days.

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

Good!

Thanks again,

bye,

pg
 
> 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

-- 

piergiorgio
--
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