NetBSD-Bugs archive

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

Re: kern/44972: raidctl -R doesn't seem to work



The following reply was made to PR kern/44972; it has been noted by GNATS.

From: yamt%mwd.biglobe.ne.jp@localhost (YAMAMOTO Takashi)
To: gnats-bugs%NetBSD.org@localhost
Cc: kern-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
        netbsd-bugs%netbsd.org@localhost, yamt%NetBSD.org@localhost
Subject: Re: kern/44972: raidctl -R doesn't seem to work
Date: Wed,  3 Aug 2011 03:46:57 +0000 (UTC)

 --Boundary-20110803124142-2676200
 Content-Type: Text/Plain; charset=us-ascii
 
 > - the DIOCGPART ioctl in rf_ReconstructInPlace failed with ENOTTY
 >   as dk doesn't support it.
 
 the attached patch is to fix this part of the problem.
 can anyone please review and commit?  i guess it's better to use
 rf_getdisksize.
 
 YAMAMOTO Takashi
 
 --Boundary-20110803124142-2676200
 Content-Type: Text/Plain; charset=us-ascii
 Content-Disposition: attachment; filename="a.diff"
 
 Index: rf_reconstruct.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/raidframe/rf_reconstruct.c,v
 retrieving revision 1.115
 diff -u -p -r1.115 rf_reconstruct.c
 --- rf_reconstruct.c   28 May 2011 00:53:04 -0000      1.115
 +++ rf_reconstruct.c   3 Aug 2011 03:44:10 -0000
 @@ -348,7 +348,8 @@ rf_ReconstructInPlace(RF_Raid_t *raidPtr
        const RF_LayoutSW_t *lp;
        RF_ComponentLabel_t *c_label;
        int     numDisksDone = 0, rc;
 -      struct partinfo dpart;
 +      uint64_t numsec;
 +      unsigned int secsize;
        struct pathbuf *pb;
        struct vnode *vp;
        struct vattr va;
 @@ -464,7 +465,7 @@ rf_ReconstructInPlace(RF_Raid_t *raidPtr
                return(retcode);
        }
  
 -      retcode = VOP_IOCTL(vp, DIOCGPART, &dpart, FREAD, curlwp->l_cred);
 +      retcode = getdisksize(vp, &numsec, &secsize);
        if (retcode) {
                vn_close(vp, FREAD | FWRITE, kauth_cred_get());
                rf_lock_mutex2(raidPtr->mutex);
 @@ -474,10 +475,8 @@ rf_ReconstructInPlace(RF_Raid_t *raidPtr
                return(retcode);
        }
        rf_lock_mutex2(raidPtr->mutex);
 -      raidPtr->Disks[col].blockSize = dpart.disklab->d_secsize;
 -
 -      raidPtr->Disks[col].numBlocks = dpart.part->p_size -
 -              rf_protectedSectors;
 +      raidPtr->Disks[col].blockSize = secsize;
 +      raidPtr->Disks[col].numBlocks = numsec - rf_protectedSectors;
  
        raidPtr->raid_cinfo[col].ci_vp = vp;
        raidPtr->raid_cinfo[col].ci_dev = va.va_rdev;
 
 --Boundary-20110803124142-2676200--
 


Home | Main Index | Thread Index | Old Index