Index: sys/nfsclient/krpc_subr.c =================================================================== RCS file: /home/ncvs/src/sys/nfsclient/krpc_subr.c,v retrieving revision 1.22 diff -p -u -r1.22 krpc_subr.c --- sys/nfsclient/krpc_subr.c 19 Feb 2003 05:47:38 -0000 1.22 +++ sys/nfsclient/krpc_subr.c 3 Mar 2003 23:30:56 -0000 @@ -465,14 +465,12 @@ xdr_string_encode(char *str, int len) if (mlen > MCLBYTES) /* If too big, we just can't do it. */ return (NULL); - m = m_get(M_TRYWAIT, MT_DATA); - if (mlen > MLEN) { - MCLGET(m, M_TRYWAIT); - if ((m->m_flags & M_EXT) == 0) { - (void) m_free(m); /* There can be only one. */ - return (NULL); - } - } + m = (mlen > MLEN) ? + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR) : + m_gethdr(M_TRYWAIT, MT_DATA); + if (m == NULL) + return (NULL); + xs = mtod(m, struct xdr_string *); m->m_len = mlen; xs->len = txdr_unsigned(len); Index: sys/nfsclient/nfs_socket.c =================================================================== RCS file: /home/ncvs/src/sys/nfsclient/nfs_socket.c,v retrieving revision 1.95 diff -p -u -r1.95 nfs_socket.c --- sys/nfsclient/nfs_socket.c 2 Mar 2003 16:54:38 -0000 1.95 +++ sys/nfsclient/nfs_socket.c 3 Mar 2003 23:32:34 -0000 @@ -1378,10 +1378,11 @@ nfs_realign(struct mbuf **pm, int hsiz) ++nfs_realign_test; while ((m = *pm) != NULL) { if ((m->m_len & 0x3) || (mtod(m, intptr_t) & 0x3)) { - MGET(n, M_TRYWAIT, MT_DATA); - if (m->m_len >= MINCLSIZE) { - MCLGET(n, M_TRYWAIT); - } + n = (m->m_len >= MINCLSIZE) ? + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR) : + m_gethdr(M_TRYWAIT, MT_DATA); + if (n == NULL) + panic("nfs_realign: Out of mbufs"); n->m_len = 0; break; } Index: sys/nfsclient/nfs_subs.c =================================================================== RCS file: /home/ncvs/src/sys/nfsclient/nfs_subs.c,v retrieving revision 1.117 diff -p -u -r1.117 nfs_subs.c --- sys/nfsclient/nfs_subs.c 19 Feb 2003 05:47:38 -0000 1.117 +++ sys/nfsclient/nfs_subs.c 3 Mar 2003 23:48:50 -0000 @@ -142,9 +142,11 @@ nfsm_reqhead(struct vnode *vp, u_long pr { struct mbuf *mb; - MGET(mb, M_TRYWAIT, MT_DATA); - if (hsiz >= MINCLSIZE) - MCLGET(mb, M_TRYWAIT); + mb = (hsiz >= MINCLSIZE) ? + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR) : + m_gethdr(M_TRYWAIT, MT_DATA); + if (mb == NULL) + return NULL; mb->m_len = 0; return (mb); } @@ -168,10 +170,12 @@ nfsm_rpchead(struct ucred *cr, int nmfla int grpsiz, authsiz; authsiz = nfsm_rndup(auth_len); - MGETHDR(mb, M_TRYWAIT, MT_DATA); - if ((authsiz + 10 * NFSX_UNSIGNED) >= MINCLSIZE) { - MCLGET(mb, M_TRYWAIT); - } else if ((authsiz + 10 * NFSX_UNSIGNED) < MHLEN) { + mb = (authsiz + 10 * NFSX_UNSIGNED >= MINCLSIZE) ? + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR) : + m_gethdr(M_TRYWAIT, MT_DATA); + if (mb == NULL) + return NULL; + if ((authsiz + 10 * NFSX_UNSIGNED) < MHLEN) { MH_ALIGN(mb, authsiz + 10 * NFSX_UNSIGNED); } else { MH_ALIGN(mb, 8 * NFSX_UNSIGNED); @@ -271,9 +275,11 @@ nfsm_uiotombuf(struct uio *uiop, struct while (left > 0) { mlen = M_TRAILINGSPACE(mp); if (mlen == 0) { - MGET(mp, M_TRYWAIT, MT_DATA); - if (clflg) - MCLGET(mp, M_TRYWAIT); + mp = (clflg) ? + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR) : + m_gethdr(M_TRYWAIT, MT_DATA); + if (mp == NULL) + return ENOBUFS; mp->m_len = 0; mp2->m_next = mp; mp2 = mp; @@ -349,9 +355,11 @@ nfsm_strtmbuf(struct mbuf **mb, char **b } /* Loop around adding mbufs */ while (siz > 0) { - MGET(m1, M_TRYWAIT, MT_DATA); - if (siz > MLEN) - MCLGET(m1, M_TRYWAIT); + m1 = (siz > MLEN) ? + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR) : + m_gethdr(M_TRYWAIT, MT_DATA); + if (m1 == NULL) + return ENOBUFS; m1->m_len = NFSMSIZ(m1); m2->m_next = m1; m2 = m1; Index: sys/nfsserver/nfs_serv.c =================================================================== RCS file: /home/ncvs/src/sys/nfsserver/nfs_serv.c,v retrieving revision 1.131 diff -p -u -r1.131 nfs_serv.c --- sys/nfsserver/nfs_serv.c 25 Feb 2003 03:37:47 -0000 1.131 +++ sys/nfsserver/nfs_serv.c 3 Mar 2003 23:02:29 -0000 @@ -656,8 +656,11 @@ nfsrv_readlink(struct nfsrv_descript *nf len = 0; i = 0; while (len < NFS_MAXPATHLEN) { - MGET(nmp, M_TRYWAIT, MT_DATA); - MCLGET(nmp, M_TRYWAIT); + nmp = m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR); + if (nmp == NULL) { + error = ENOBUFS; + return (error); + } nmp->m_len = NFSMSIZ(nmp); if (len == 0) mp3 = mp = nmp; @@ -899,8 +902,9 @@ nfsrv_read(struct nfsrv_descript *nfsd, i++; } if (left > 0) { - MGET(m, M_TRYWAIT, MT_DATA); - MCLGET(m, M_TRYWAIT); + m = m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR); + if (m == NULL) + return (ENOBUFS); m->m_len = 0; m2->m_next = m; m2 = m; Index: sys/nfsserver/nfs_srvsock.c =================================================================== RCS file: /home/ncvs/src/sys/nfsserver/nfs_srvsock.c,v retrieving revision 1.83 diff -p -u -r1.83 nfs_srvsock.c --- sys/nfsserver/nfs_srvsock.c 2 Mar 2003 16:54:39 -0000 1.83 +++ sys/nfsserver/nfs_srvsock.c 3 Mar 2003 23:50:22 -0000 @@ -148,18 +148,23 @@ nfs_rephead(int siz, struct nfsrv_descri nd->nd_repstat = err; if (err && (nd->nd_flag & ND_NFSV3) == 0) /* XXX recheck */ siz = 0; - MGETHDR(mreq, M_TRYWAIT, MT_DATA); - mb = mreq; /* * If this is a big reply, use a cluster else * try and leave leading space for the lower level headers. */ - mreq->m_len = 6 * NFSX_UNSIGNED; siz += RPC_REPLYSIZ; if ((max_hdr + siz) >= MINCLSIZE) { - MCLGET(mreq, M_TRYWAIT); - } else + mreq = m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR); + if (mreq == NULL) + return (NULL); + } else { + mreq = m_gethdr(M_TRYWAIT, MT_DATA); + if (mreq == NULL) + return (NULL); mreq->m_data += min(max_hdr, M_TRAILINGSPACE(mreq)); + } + mreq->m_len = 6 * NFSX_UNSIGNED; + mb = mreq; tl = mtod(mreq, u_int32_t *); bpos = ((caddr_t)tl) + mreq->m_len; *tl++ = txdr_unsigned(nd->nd_retxid); @@ -244,10 +249,11 @@ nfs_realign(struct mbuf **pm, int hsiz) ++nfs_realign_test; while ((m = *pm) != NULL) { if ((m->m_len & 0x3) || (mtod(m, intptr_t) & 0x3)) { - MGET(n, M_TRYWAIT, MT_DATA); - if (m->m_len >= MINCLSIZE) { - MCLGET(n, M_TRYWAIT); - } + n = (m->m_len >= MINCLSIZE) ? + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR) : + m_gethdr(M_TRYWAIT, MT_DATA); + if (n == NULL) + panic("Out of mbufs!\n"); n->m_len = 0; break; } Index: sys/nfsserver/nfs_srvsubs.c =================================================================== RCS file: /home/ncvs/src/sys/nfsserver/nfs_srvsubs.c,v retrieving revision 1.120 diff -p -u -r1.120 nfs_srvsubs.c --- sys/nfsserver/nfs_srvsubs.c 19 Feb 2003 05:47:39 -0000 1.120 +++ sys/nfsserver/nfs_srvsubs.c 3 Mar 2003 23:29:21 -0000 @@ -1287,8 +1287,9 @@ nfsm_clget_xx(u_int32_t **tl, struct mbu if (*bp >= *be) { if (*mp == mb) (*mp)->m_len += *bp - bpos; - MGET(nmp, M_TRYWAIT, MT_DATA); - MCLGET(nmp, M_TRYWAIT); + nmp = m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR); + if (nmp == NULL) + panic("nfsm_clget_xx: Out of mbufs"); nmp->m_len = NFSMSIZ(nmp); (*mp)->m_next = nmp; *mp = nmp;