Re: [PATCH 1/2] md: add bad block flag to disk state

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

 



On Mon, Jan 30, 2017 at 03:33:41PM -0800, Shaohua Li wrote:
> On Tue, Jan 24, 2017 at 01:03:38PM +0100, Tomasz Majchrzak wrote:
> > Add a new flag to report that bad blocks are present on a disk. It will
> > allow userspace to notify the user of the problem.
> > 
> > Signed-off-by: Tomasz Majchrzak <tomasz.majchrzak@xxxxxxxxx>
> > ---
> >  drivers/md/md.c                | 2 ++
> >  include/uapi/linux/raid/md_p.h | 1 +
> >  2 files changed, 3 insertions(+)
> > 
> > diff --git a/drivers/md/md.c b/drivers/md/md.c
> > index 0abb147..1a807ec 100644
> > --- a/drivers/md/md.c
> > +++ b/drivers/md/md.c
> > @@ -6034,6 +6034,8 @@ static int get_disk_info(struct mddev *mddev, void __user * arg)
> >  			info.state |= (1<<MD_DISK_WRITEMOSTLY);
> >  		if (test_bit(FailFast, &rdev->flags))
> >  			info.state |= (1<<MD_DISK_FAILFAST);
> > +		if (rdev->badblocks.count)
> > +			info.state |= (1<<MD_DISK_BB_PRESENT);
> 
> Userspace can find if a disk has badblocks by reading the bad_blocks sysfs
> file. Why adds another interface?
> 
> Thanks,
> Shaohua

Yes, indeed, it can. I have chosen to do it this way to keep it consistent
with mdadm which uses GET_DISK_INFO ioctl to get disk information. All data
provided in this ioctl is also available in sysfs file (rdev state), however
ioctl is still used (legacy). The same applies for details subcommand of
mdadm. To answer your question - yes, I could avoid new flag but it would
make mdadm side of my improvement much more complicated.

Tomek

> >  	} else {
> >  		info.major = info.minor = 0;
> >  		info.raid_disk = -1;
> > diff --git a/include/uapi/linux/raid/md_p.h b/include/uapi/linux/raid/md_p.h
> > index 9930f3e..b151e93 100644
> > --- a/include/uapi/linux/raid/md_p.h
> > +++ b/include/uapi/linux/raid/md_p.h
> > @@ -93,6 +93,7 @@
> >  				   * read requests will only be sent here in
> >  				   * dire need
> >  				   */
> > +#define MD_DISK_BB_PRESENT	11 /* disk has bad blocks */
> >  #define MD_DISK_JOURNAL		18 /* disk is used as the write journal in RAID-5/6 */
> >  
> >  #define MD_DISK_ROLE_SPARE	0xffff
> > -- 
> > 1.8.3.1
> > 
--
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