Re: [PATCH 1/1] md: return -ENODEV if rdev has no mddev assigned

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

 



Hi Pawel,

Sorry for the late reply.

On Wed, Apr 10, 2019 at 3:28 AM Pawel Baldysiak
<pawel.baldysiak@xxxxxxxxx> wrote:
>
> On 3/27/19 13:48, Pawel Baldysiak wrote:
> > Mdadm expects that setting drive as faulty will fail with -EBUSY only if
> > this operation will cause RAID to be failed. If this happens, it will
> > try to stop the array. Currently -EBUSY might also be returned if rdev
> > is in the middle of the removal process - for example there is a race
> > with mdmon that already requested the drive to be failed/removed.
> >
> > If rdev does not contain mddev, return -ENODEV instead, so the caller
> > can distinguish between those two cases and behave accordingly.
> >
> > Signed-off-by: Pawel Baldysiak <pawel.baldysiak@xxxxxxxxx>
> > ---
> >   drivers/md/md.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/md/md.c b/drivers/md/md.c
> > index 245ab4a571a5..177cdf26b276 100644
> > --- a/drivers/md/md.c
> > +++ b/drivers/md/md.c
> > @@ -3245,10 +3245,10 @@ rdev_attr_store(struct kobject *kobj, struct attribute *attr,
> >               return -EIO;
> >       if (!capable(CAP_SYS_ADMIN))
> >               return -EACCES;
> > -     rv = mddev ? mddev_lock(mddev): -EBUSY;
> > +     rv = mddev ? mddev_lock(mddev) : -ENODEV;
> >       if (!rv) {
> >               if (rdev->mddev == NULL)
> > -                     rv = -EBUSY;
> > +                     rv = -ENODEV;
> >               else
> >                       rv = entry->store(rdev, page, length);
> >               mddev_unlock(mddev);
> >

I think we should fix this in md.c:state_store(). rdev_attr_store() applies
to all the files. Could you please look into this?

Thanks,
Song



[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