In NFS clients, instead of inconsistently using #ifdef
DIAGNOSTIC and #ifndef DIAGNOSTIC for debug assertions, prefer KASSERT(). Also change one #ifdef DIAGNOSTIC in the new nfs server. Submitted by: Mikolaj Golub <to.my.trociny gmail com> MFC after: 2 weeks
This commit is contained in:
parent
5ad333cf62
commit
b38f7723eb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=209120
@ -453,10 +453,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
|
||||
int seqcount;
|
||||
int nra, error = 0, n = 0, on = 0;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uio->uio_rw != UIO_READ)
|
||||
panic("ncl_read mode");
|
||||
#endif
|
||||
KASSERT(uio->uio_rw == UIO_READ, ("ncl_read mode"));
|
||||
if (uio->uio_resid == 0)
|
||||
return (0);
|
||||
if (uio->uio_offset < 0) /* XXX VDIR cookies can be negative */
|
||||
@ -881,12 +878,9 @@ ncl_write(struct vop_write_args *ap)
|
||||
int bcount;
|
||||
int n, on, error = 0;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uio->uio_rw != UIO_WRITE)
|
||||
panic("ncl_write mode");
|
||||
if (uio->uio_segflg == UIO_USERSPACE && uio->uio_td != curthread)
|
||||
panic("ncl_write proc");
|
||||
#endif
|
||||
KASSERT(uio->uio_rw == UIO_WRITE, ("ncl_write mode"));
|
||||
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
|
||||
("ncl_write proc"));
|
||||
if (vp->v_type != VREG)
|
||||
return (EIO);
|
||||
mtx_lock(&np->n_mtx);
|
||||
|
@ -194,10 +194,7 @@ nfsm_uiombuf(struct nfsrv_descript *nd, struct uio *uiop, int siz)
|
||||
int uiosiz, clflg, rem;
|
||||
char *cp, *tcp;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1)
|
||||
panic("nfsm_uiotombuf: iovcnt != 1");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1, ("nfsm_uiotombuf: iovcnt != 1"));
|
||||
|
||||
if (siz > ncl_mbuf_mlen) /* or should it >= MCLBYTES ?? */
|
||||
clflg = 1;
|
||||
@ -346,10 +343,7 @@ nfscl_getcookie(struct nfsnode *np, off_t off, int add)
|
||||
|
||||
pos = off / NFS_DIRBLKSIZ;
|
||||
if (pos == 0) {
|
||||
#ifdef DIAGNOSTIC
|
||||
if (add)
|
||||
panic("nfs getcookie add at 0");
|
||||
#endif
|
||||
KASSERT(!add, ("nfs getcookie add at 0"));
|
||||
return (&nfs_nullcookie);
|
||||
}
|
||||
pos--;
|
||||
|
@ -1445,10 +1445,7 @@ nfsrpc_writerpc(vnode_t vp, struct uio *uiop, int *iomode,
|
||||
struct nfsrv_descript *nd = &nfsd;
|
||||
nfsattrbit_t attrbits;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1)
|
||||
panic("nfs: writerpc iovcnt > 1");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1, ("nfs: writerpc iovcnt > 1"));
|
||||
*attrflagp = 0;
|
||||
tsiz = uio_uio_resid(uiop);
|
||||
NFSLOCKMNT(nmp);
|
||||
@ -2501,10 +2498,9 @@ nfsrpc_readdir(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep,
|
||||
u_int32_t *tl2 = NULL;
|
||||
size_t tresid;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1 || (uio_uio_resid(uiop) & (DIRBLKSIZ - 1)))
|
||||
panic("nfs readdirrpc bad uio");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1 &&
|
||||
(uio_uio_resid(uiop) & (DIRBLKSIZ - 1)) == 0,
|
||||
("nfs readdirrpc bad uio"));
|
||||
|
||||
/*
|
||||
* There is no point in reading a lot more than uio_resid, however
|
||||
@ -2939,10 +2935,9 @@ nfsrpc_readdirplus(vnode_t vp, struct uio *uiop, nfsuint64 *cookiep,
|
||||
size_t tresid;
|
||||
u_int32_t *tl2 = NULL, fakefileno = 0xffffffff, rderr;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1 || (uio_uio_resid(uiop) & (DIRBLKSIZ - 1)))
|
||||
panic("nfs readdirplusrpc bad uio");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1 &&
|
||||
(uio_uio_resid(uiop) & (DIRBLKSIZ - 1)) == 0,
|
||||
("nfs readdirplusrpc bad uio"));
|
||||
*attrflagp = 0;
|
||||
if (eofp != NULL)
|
||||
*eofp = 0;
|
||||
|
@ -282,10 +282,7 @@ ncl_getcookie(struct nfsnode *np, off_t off, int add)
|
||||
|
||||
pos = (uoff_t)off / NFS_DIRBLKSIZ;
|
||||
if (pos == 0 || off < 0) {
|
||||
#ifdef DIAGNOSTIC
|
||||
if (add)
|
||||
panic("nfs getcookie add at <= 0");
|
||||
#endif
|
||||
KASSERT(!add, ("nfs getcookie add at <= 0"));
|
||||
return (&nfs_nullcookie);
|
||||
}
|
||||
pos--;
|
||||
@ -336,10 +333,7 @@ ncl_invaldir(struct vnode *vp)
|
||||
{
|
||||
struct nfsnode *np = VTONFS(vp);
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (vp->v_type != VDIR)
|
||||
panic("nfs: invaldir not dir");
|
||||
#endif
|
||||
KASSERT(vp->v_type == VDIR, ("nfs: invaldir not dir"));
|
||||
ncl_dircookie_lock(np);
|
||||
np->n_direofoffset = 0;
|
||||
np->n_cookieverf.nfsuquad[0] = 0;
|
||||
|
@ -1564,12 +1564,8 @@ nfs_remove(struct vop_remove_args *ap)
|
||||
int error = 0;
|
||||
struct vattr vattr;
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if ((cnp->cn_flags & HASBUF) == 0)
|
||||
panic("nfs_remove: no name");
|
||||
if (vrefcnt(vp) < 1)
|
||||
panic("nfs_remove: bad v_usecount");
|
||||
#endif
|
||||
KASSERT((cnp->cn_flags & HASBUF) != 0, ("nfs_remove: no name"));
|
||||
KASSERT(vrefcnt(vp) > 0, ("nfs_remove: bad v_usecount"));
|
||||
if (vp->v_type == VDIR)
|
||||
error = EPERM;
|
||||
else if (vrefcnt(vp) == 1 || (np->n_sillyrename &&
|
||||
@ -1676,11 +1672,8 @@ nfs_rename(struct vop_rename_args *ap)
|
||||
struct nfsv4node *newv4 = NULL;
|
||||
int error;
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if ((tcnp->cn_flags & HASBUF) == 0 ||
|
||||
(fcnp->cn_flags & HASBUF) == 0)
|
||||
panic("nfs_rename: no name");
|
||||
#endif
|
||||
KASSERT((tcnp->cn_flags & HASBUF) != 0 &&
|
||||
(fcnp->cn_flags & HASBUF) != 0, ("nfs_rename: no name"));
|
||||
/* Check for cross-device rename */
|
||||
if ((fvp->v_mount != tdvp->v_mount) ||
|
||||
(tvp && (fvp->v_mount != tvp->v_mount))) {
|
||||
@ -2137,11 +2130,10 @@ ncl_readdirrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred,
|
||||
struct nfsmount *nmp = VFSTONFS(vp->v_mount);
|
||||
int error = 0, eof, attrflag;
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1 || (uiop->uio_offset & (DIRBLKSIZ - 1)) ||
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)))
|
||||
panic("nfs readdirrpc bad uio");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1 &&
|
||||
(uiop->uio_offset & (DIRBLKSIZ - 1)) == 0 &&
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
|
||||
("nfs readdirrpc bad uio"));
|
||||
|
||||
/*
|
||||
* If there is no cookie, assume directory was stale.
|
||||
@ -2198,11 +2190,10 @@ ncl_readdirplusrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred,
|
||||
struct nfsmount *nmp = VFSTONFS(vp->v_mount);
|
||||
int error = 0, attrflag, eof;
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1 || (uiop->uio_offset & (DIRBLKSIZ - 1)) ||
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)))
|
||||
panic("nfs readdirplusrpc bad uio");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1 &&
|
||||
(uiop->uio_offset & (DIRBLKSIZ - 1)) == 0 &&
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
|
||||
("nfs readdirplusrpc bad uio"));
|
||||
|
||||
/*
|
||||
* If there is no cookie, assume directory was stale.
|
||||
@ -2264,10 +2255,7 @@ nfs_sillyrename(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
|
||||
|
||||
cache_purge(dvp);
|
||||
np = VTONFS(vp);
|
||||
#ifndef DIAGNOSTIC
|
||||
if (vp->v_type == VDIR)
|
||||
panic("nfs: sillyrename dir");
|
||||
#endif
|
||||
KASSERT(vp->v_type != VDIR, ("nfs: sillyrename dir"));
|
||||
MALLOC(sp, struct sillyrename *, sizeof (struct sillyrename),
|
||||
M_NEWNFSREQ, M_WAITOK);
|
||||
sp->s_cred = crhold(cnp->cn_cred);
|
||||
|
@ -364,10 +364,7 @@ nfsrvd_dorpc(struct nfsrv_descript *nd, int isdgram,
|
||||
* Get a locked vnode for the first file handle
|
||||
*/
|
||||
if (!(nd->nd_flag & ND_NFSV4)) {
|
||||
#ifdef DIAGNOSTIC
|
||||
if (nd->nd_repstat)
|
||||
panic("nfsrvd_dorpc");
|
||||
#endif
|
||||
KASSERT(nd->nd_repstat == 0, ("nfsrvd_dorpc"));
|
||||
/*
|
||||
* For NFSv3, if the malloc/mget allocation is near limits,
|
||||
* return NFSERR_DELAY.
|
||||
|
@ -453,10 +453,7 @@ nfs_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
|
||||
int seqcount;
|
||||
int nra, error = 0, n = 0, on = 0;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uio->uio_rw != UIO_READ)
|
||||
panic("nfs_read mode");
|
||||
#endif
|
||||
KASSERT(uio->uio_rw == UIO_READ, ("nfs_read mode"));
|
||||
if (uio->uio_resid == 0)
|
||||
return (0);
|
||||
if (uio->uio_offset < 0) /* XXX VDIR cookies can be negative */
|
||||
@ -875,12 +872,9 @@ nfs_write(struct vop_write_args *ap)
|
||||
int bcount;
|
||||
int n, on, error = 0;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uio->uio_rw != UIO_WRITE)
|
||||
panic("nfs_write mode");
|
||||
if (uio->uio_segflg == UIO_USERSPACE && uio->uio_td != curthread)
|
||||
panic("nfs_write proc");
|
||||
#endif
|
||||
KASSERT(uio->uio_rw == UIO_WRITE, ("nfs_write mode"));
|
||||
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
|
||||
("nfs_write proc"));
|
||||
if (vp->v_type != VREG)
|
||||
return (EIO);
|
||||
mtx_lock(&np->n_mtx);
|
||||
|
@ -199,10 +199,7 @@ nfsm_uiotombuf(struct uio *uiop, struct mbuf **mq, int siz, caddr_t *bpos)
|
||||
int uiosiz, clflg, rem;
|
||||
char *cp;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1)
|
||||
panic("nfsm_uiotombuf: iovcnt != 1");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1, ("nfsm_uiotombuf: iovcnt != 1"));
|
||||
|
||||
if (siz > MLEN) /* or should it >= MCLBYTES ?? */
|
||||
clflg = 1;
|
||||
@ -789,10 +786,7 @@ nfs_getcookie(struct nfsnode *np, off_t off, int add)
|
||||
|
||||
pos = (uoff_t)off / NFS_DIRBLKSIZ;
|
||||
if (pos == 0 || off < 0) {
|
||||
#ifdef DIAGNOSTIC
|
||||
if (add)
|
||||
panic("nfs getcookie add at <= 0");
|
||||
#endif
|
||||
KASSERT(!add, ("nfs getcookie add at <= 0"));
|
||||
return (&nfs_nullcookie);
|
||||
}
|
||||
pos--;
|
||||
@ -843,10 +837,7 @@ nfs_invaldir(struct vnode *vp)
|
||||
{
|
||||
struct nfsnode *np = VTONFS(vp);
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (vp->v_type != VDIR)
|
||||
panic("nfs: invaldir not dir");
|
||||
#endif
|
||||
KASSERT(vp->v_type == VDIR, ("nfs: invaldir not dir"));
|
||||
nfs_dircookie_lock(np);
|
||||
np->n_direofoffset = 0;
|
||||
np->n_cookieverf.nfsuquad[0] = 0;
|
||||
|
@ -1348,10 +1348,7 @@ nfs_writerpc(struct vnode *vp, struct uio *uiop, struct ucred *cred,
|
||||
int v3 = NFS_ISV3(vp), committed = NFSV3WRITE_FILESYNC;
|
||||
int wsize;
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1)
|
||||
panic("nfs: writerpc iovcnt > 1");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1, ("nfs: writerpc iovcnt > 1"));
|
||||
*must_commit = 0;
|
||||
tsiz = uiop->uio_resid;
|
||||
mtx_lock(&nmp->nm_mtx);
|
||||
@ -1708,12 +1705,8 @@ nfs_remove(struct vop_remove_args *ap)
|
||||
int error = 0;
|
||||
struct vattr vattr;
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if ((cnp->cn_flags & HASBUF) == 0)
|
||||
panic("nfs_remove: no name");
|
||||
if (vrefcnt(vp) < 1)
|
||||
panic("nfs_remove: bad v_usecount");
|
||||
#endif
|
||||
KASSERT((cnp->cn_flags & HASBUF) != 0, ("nfs_remove: no name"));
|
||||
KASSERT(vrefcnt(vp) > 0, ("nfs_remove: bad v_usecount"));
|
||||
if (vp->v_type == VDIR)
|
||||
error = EPERM;
|
||||
else if (vrefcnt(vp) == 1 || (np->n_sillyrename &&
|
||||
@ -1814,11 +1807,8 @@ nfs_rename(struct vop_rename_args *ap)
|
||||
struct componentname *fcnp = ap->a_fcnp;
|
||||
int error;
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if ((tcnp->cn_flags & HASBUF) == 0 ||
|
||||
(fcnp->cn_flags & HASBUF) == 0)
|
||||
panic("nfs_rename: no name");
|
||||
#endif
|
||||
KASSERT((tcnp->cn_flags & HASBUF) != 0 &&
|
||||
(fcnp->cn_flags & HASBUF) != 0, ("nfs_rename: no name"));
|
||||
/* Check for cross-device rename */
|
||||
if ((fvp->v_mount != tdvp->v_mount) ||
|
||||
(tvp && (fvp->v_mount != tvp->v_mount))) {
|
||||
@ -2277,11 +2267,10 @@ nfs_readdirrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred)
|
||||
int attrflag;
|
||||
int v3 = NFS_ISV3(vp);
|
||||
|
||||
#ifndef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1 || (uiop->uio_offset & (DIRBLKSIZ - 1)) ||
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)))
|
||||
panic("nfs readdirrpc bad uio");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1 &&
|
||||
(uiop->uio_offset & (DIRBLKSIZ - 1)) == 0 &&
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
|
||||
("nfs readdirrpc bad uio"));
|
||||
|
||||
/*
|
||||
* If there is no cookie, assume directory was stale.
|
||||
@ -2482,11 +2471,10 @@ nfs_readdirplusrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred)
|
||||
#ifndef nolint
|
||||
dp = NULL;
|
||||
#endif
|
||||
#ifndef DIAGNOSTIC
|
||||
if (uiop->uio_iovcnt != 1 || (uiop->uio_offset & (DIRBLKSIZ - 1)) ||
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)))
|
||||
panic("nfs readdirplusrpc bad uio");
|
||||
#endif
|
||||
KASSERT(uiop->uio_iovcnt == 1 &&
|
||||
(uiop->uio_offset & (DIRBLKSIZ - 1)) == 0 &&
|
||||
(uiop->uio_resid & (DIRBLKSIZ - 1)) == 0,
|
||||
("nfs readdirplusrpc bad uio"));
|
||||
ndp->ni_dvp = vp;
|
||||
newvp = NULLVP;
|
||||
|
||||
@ -2752,10 +2740,7 @@ nfs_sillyrename(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
|
||||
|
||||
cache_purge(dvp);
|
||||
np = VTONFS(vp);
|
||||
#ifndef DIAGNOSTIC
|
||||
if (vp->v_type == VDIR)
|
||||
panic("nfs: sillyrename dir");
|
||||
#endif
|
||||
KASSERT(vp->v_type != VDIR, ("nfs: sillyrename dir"));
|
||||
sp = malloc(sizeof (struct sillyrename),
|
||||
M_NFSREQ, M_WAITOK);
|
||||
sp->s_cred = crhold(cnp->cn_cred);
|
||||
|
Loading…
Reference in New Issue
Block a user