svn commit: r359757 - head/sys/fs/nfs
Rick Macklem
rmacklem at FreeBSD.org
Thu Apr 9 23:11:20 UTC 2020
Author: rmacklem
Date: Thu Apr 9 23:11:19 2020
New Revision: 359757
URL: https://svnweb.freebsd.org/changeset/base/359757
Log:
Replace mbuf macros with the code they would generate in the NFS code.
When the code was ported to Mac OS/X, mbuf handling functions were
converted to using the Mac OS/X accessor functions. For FreeBSD, they
are a simple set of macros in sys/fs/nfs/nfskpiport.h.
Since porting to Mac OS/X is no longer a consideration, replacement of
these macros with the code generated by them makes the code more
readable.
When support for external page mbufs is added as needed by the KERN_TLS,
the patch becomes simpler if done without the macros.
This patch should not result in any semantic change.
This conversion will be committed one file at a time.
Modified:
head/sys/fs/nfs/nfs_commonsubs.c
Modified: head/sys/fs/nfs/nfs_commonsubs.c
==============================================================================
--- head/sys/fs/nfs/nfs_commonsubs.c Thu Apr 9 21:24:17 2020 (r359756)
+++ head/sys/fs/nfs/nfs_commonsubs.c Thu Apr 9 23:11:19 2020 (r359757)
@@ -360,9 +360,9 @@ nfscl_reqstart(struct nfsrv_descript *nd, int procnum,
NFSMCLGET(mb, M_WAITOK);
else
NFSMGET(mb);
- mbuf_setlen(mb, 0);
+ mb->m_len = 0;
nd->nd_mreq = nd->nd_mb = mb;
- nd->nd_bpos = NFSMTOD(mb, caddr_t);
+ nd->nd_bpos = mtod(mb, caddr_t);
/*
* And fill the first file handle into the request.
@@ -617,7 +617,7 @@ nfsm_mbufuio(struct nfsrv_descript *nd, struct uio *ui
mp = nd->nd_md;
mbufcp = nd->nd_dpos;
- len = NFSMTOD(mp, caddr_t) + mbuf_len(mp) - mbufcp;
+ len = mtod(mp, caddr_t) + mp->m_len - mbufcp;
rem = NFSM_RNDUP(siz) - siz;
while (siz > 0) {
if (uiop->uio_iovcnt <= 0 || uiop->uio_iov == NULL) {
@@ -631,13 +631,13 @@ nfsm_mbufuio(struct nfsrv_descript *nd, struct uio *ui
uiosiz = left;
while (left > 0) {
while (len == 0) {
- mp = mbuf_next(mp);
+ mp = mp->m_next;
if (mp == NULL) {
error = EBADRPC;
goto out;
}
- mbufcp = NFSMTOD(mp, caddr_t);
- len = mbuf_len(mp);
+ mbufcp = mtod(mp, caddr_t);
+ len = mp->m_len;
KASSERT(len >= 0,
("len %d, corrupted mbuf?", len));
}
@@ -701,18 +701,18 @@ nfsm_dissct(struct nfsrv_descript *nd, int siz, int ho
caddr_t retp;
retp = NULL;
- left = NFSMTOD(nd->nd_md, caddr_t) + mbuf_len(nd->nd_md) - nd->nd_dpos;
+ left = mtod(nd->nd_md, caddr_t) + nd->nd_md->m_len - nd->nd_dpos;
while (left == 0) {
- nd->nd_md = mbuf_next(nd->nd_md);
+ nd->nd_md = nd->nd_md->m_next;
if (nd->nd_md == NULL)
return (retp);
- left = mbuf_len(nd->nd_md);
- nd->nd_dpos = NFSMTOD(nd->nd_md, caddr_t);
+ left = nd->nd_md->m_len;
+ nd->nd_dpos = mtod(nd->nd_md, caddr_t);
}
if (left >= siz) {
retp = nd->nd_dpos;
nd->nd_dpos += siz;
- } else if (mbuf_next(nd->nd_md) == NULL) {
+ } else if (nd->nd_md->m_next == NULL) {
return (retp);
} else if (siz > ncl_mbuf_mhlen) {
panic("nfs S too big");
@@ -720,33 +720,33 @@ nfsm_dissct(struct nfsrv_descript *nd, int siz, int ho
MGET(mp2, MT_DATA, how);
if (mp2 == NULL)
return (NULL);
- mbuf_setnext(mp2, mbuf_next(nd->nd_md));
- mbuf_setnext(nd->nd_md, mp2);
- mbuf_setlen(nd->nd_md, mbuf_len(nd->nd_md) - left);
+ mp2->m_next = nd->nd_md->m_next;
+ nd->nd_md->m_next = mp2;
+ nd->nd_md->m_len -= left;
nd->nd_md = mp2;
- retp = p = NFSMTOD(mp2, caddr_t);
+ retp = p = mtod(mp2, caddr_t);
NFSBCOPY(nd->nd_dpos, p, left); /* Copy what was left */
siz2 = siz - left;
p += left;
- mp2 = mbuf_next(mp2);
+ mp2 = mp2->m_next;
/* Loop around copying up the siz2 bytes */
while (siz2 > 0) {
if (mp2 == NULL)
return (NULL);
- xfer = (siz2 > mbuf_len(mp2)) ? mbuf_len(mp2) : siz2;
+ xfer = (siz2 > mp2->m_len) ? mp2->m_len : siz2;
if (xfer > 0) {
- NFSBCOPY(NFSMTOD(mp2, caddr_t), p, xfer);
- NFSM_DATAP(mp2, xfer);
- mbuf_setlen(mp2, mbuf_len(mp2) - xfer);
+ NFSBCOPY(mtod(mp2, caddr_t), p, xfer);
+ mp2->m_data += xfer;
+ mp2->m_len -= xfer;
p += xfer;
siz2 -= xfer;
}
if (siz2 > 0)
- mp2 = mbuf_next(mp2);
+ mp2 = mp2->m_next;
}
- mbuf_setlen(nd->nd_md, siz);
+ nd->nd_md->m_len = siz;
nd->nd_md = mp2;
- nd->nd_dpos = NFSMTOD(mp2, caddr_t);
+ nd->nd_dpos = mtod(mp2, caddr_t);
}
return (retp);
}
@@ -778,7 +778,7 @@ nfsm_advance(struct nfsrv_descript *nd, int offs, int
* If left == -1, calculate it here.
*/
if (left == -1)
- left = NFSMTOD(nd->nd_md, caddr_t) + mbuf_len(nd->nd_md) -
+ left = mtod(nd->nd_md, caddr_t) + nd->nd_md->m_len -
nd->nd_dpos;
/*
@@ -786,13 +786,13 @@ nfsm_advance(struct nfsrv_descript *nd, int offs, int
*/
while (offs > left) {
offs -= left;
- nd->nd_md = mbuf_next(nd->nd_md);
+ nd->nd_md = nd->nd_md->m_next;
if (nd->nd_md == NULL) {
error = EBADRPC;
goto out;
}
- left = mbuf_len(nd->nd_md);
- nd->nd_dpos = NFSMTOD(nd->nd_md, caddr_t);
+ left = nd->nd_md->m_len;
+ nd->nd_dpos = mtod(nd->nd_md, caddr_t);
}
nd->nd_dpos += offs;
@@ -832,10 +832,10 @@ nfsm_strtom(struct nfsrv_descript *nd, const char *cp,
NFSMCLGET(m1, M_WAITOK);
else
NFSMGET(m1);
- mbuf_setlen(m1, 0);
- mbuf_setnext(m2, m1);
+ m1->m_len = 0;
+ m2->m_next = m1;
m2 = m1;
- cp2 = NFSMTOD(m2, caddr_t);
+ cp2 = mtod(m2, caddr_t);
left = M_TRAILINGSPACE(m2);
}
if (left >= siz)
@@ -844,18 +844,18 @@ nfsm_strtom(struct nfsrv_descript *nd, const char *cp,
xfer = left;
NFSBCOPY(cp, cp2, xfer);
cp += xfer;
- mbuf_setlen(m2, mbuf_len(m2) + xfer);
+ m2->m_len += xfer;
siz -= xfer;
left -= xfer;
if (siz == 0 && rem) {
if (left < rem)
panic("nfsm_strtom");
NFSBZERO(cp2 + xfer, rem);
- mbuf_setlen(m2, mbuf_len(m2) + rem);
+ m2->m_len += rem;
}
}
nd->nd_mb = m2;
- nd->nd_bpos = NFSMTOD(m2, caddr_t) + mbuf_len(m2);
+ nd->nd_bpos = mtod(m2, caddr_t) + m2->m_len;
return (bytesize);
}
@@ -1022,35 +1022,35 @@ newnfs_trimleading(nd)
*/
if (nd->nd_mrep != nd->nd_md) {
m = nd->nd_mrep;
- while (mbuf_next(m) != nd->nd_md) {
- if (mbuf_next(m) == NULL)
+ while (m->m_next != nd->nd_md) {
+ if (m->m_next == NULL)
panic("nfsm trim leading");
- m = mbuf_next(m);
+ m = m->m_next;
}
- mbuf_setnext(m, NULL);
- mbuf_freem(nd->nd_mrep);
+ m->m_next = NULL;
+ m_freem(nd->nd_mrep);
}
m = nd->nd_md;
/*
* Now, adjust this mbuf, based on nd_dpos.
*/
- offs = nd->nd_dpos - NFSMTOD(m, caddr_t);
- if (offs == mbuf_len(m)) {
+ offs = nd->nd_dpos - mtod(m, caddr_t);
+ if (offs == m->m_len) {
n = m;
- m = mbuf_next(m);
+ m = m->m_next;
if (m == NULL)
panic("nfsm trim leading2");
- mbuf_setnext(n, NULL);
- mbuf_freem(n);
+ n->m_next = NULL;
+ m_freem(n);
} else if (offs > 0) {
- mbuf_setlen(m, mbuf_len(m) - offs);
- NFSM_DATAP(m, offs);
+ m->m_len -= offs;
+ m->m_data += offs;
} else if (offs < 0)
panic("nfsm trimleading offs");
nd->nd_mrep = m;
nd->nd_md = m;
- nd->nd_dpos = NFSMTOD(m, caddr_t);
+ nd->nd_dpos = mtod(m, caddr_t);
}
/*
@@ -1063,11 +1063,11 @@ newnfs_trimtrailing(nd, mb, bpos)
caddr_t bpos;
{
- if (mbuf_next(mb)) {
- mbuf_freem(mbuf_next(mb));
- mbuf_setnext(mb, NULL);
+ if (mb->m_next) {
+ m_freem(mb->m_next);
+ mb->m_next = NULL;
}
- mbuf_setlen(mb, bpos - NFSMTOD(mb, caddr_t));
+ mb->m_len = bpos - mtod(mb, caddr_t);
nd->nd_mb = mb;
nd->nd_bpos = bpos;
}
@@ -2428,7 +2428,7 @@ nfsrv_mtostr(struct nfsrv_descript *nd, char *str, int
mp = nd->nd_md;
cp = nd->nd_dpos;
- len = NFSMTOD(mp, caddr_t) + mbuf_len(mp) - cp;
+ len = mtod(mp, caddr_t) + mp->m_len - cp;
rem = NFSM_RNDUP(siz) - siz;
while (siz > 0) {
if (len > siz)
@@ -2439,13 +2439,13 @@ nfsrv_mtostr(struct nfsrv_descript *nd, char *str, int
str += xfer;
siz -= xfer;
if (siz > 0) {
- mp = mbuf_next(mp);
+ mp = mp->m_next;
if (mp == NULL) {
error = EBADRPC;
goto out;
}
- cp = NFSMTOD(mp, caddr_t);
- len = mbuf_len(mp);
+ cp = mtod(mp, caddr_t);
+ len = mp->m_len;
} else {
cp += xfer;
len -= xfer;
@@ -3728,7 +3728,7 @@ nfsrv_getuser(int procnum, uid_t uid, gid_t gid, char
NFSUNLOCKNAMEID();
NFSFREECRED(cred);
if (!error) {
- mbuf_freem(nd->nd_mrep);
+ m_freem(nd->nd_mrep);
error = nd->nd_repstat;
}
out:
@@ -4452,8 +4452,8 @@ nfsrvd_rephead(struct nfsrv_descript *nd)
nd->nd_mreq = mreq;
nd->nd_mb = mreq;
}
- nd->nd_bpos = NFSMTOD(mreq, caddr_t);
- mbuf_setlen(mreq, 0);
+ nd->nd_bpos = mtod(mreq, caddr_t);
+ mreq->m_len = 0;
if ((nd->nd_flag & ND_GSSINITREPLY) == 0)
NFSM_BUILD(nd->nd_errp, int *, NFSX_UNSIGNED);
More information about the svn-src-head
mailing list