Author: rmacklem
Date: Tue Sep 26 23:42:44 2017
New Revision: 324040
URL: https://svnweb.freebsd.org/changeset/base/324040

Log:
  Add major and minor version arguments to nfscl_reqstart().
  
  This patch adds "vers" and "minorvers" arguments to nfscl_reqstart().
  The patch always passes them in as "0" and that implies no change
  in semantics. These arguments will be used by a future commit that
  adds support for the Flexible File Layout.

Modified:
  head/sys/fs/nfs/nfs_var.h
  head/sys/fs/nfs/nfscl.h
  head/sys/fs/nfsclient/nfs_clcomsubs.c
  head/sys/fs/nfsclient/nfs_clrpcops.c

Modified: head/sys/fs/nfs/nfs_var.h
==============================================================================
--- head/sys/fs/nfs/nfs_var.h   Tue Sep 26 23:24:15 2017        (r324039)
+++ head/sys/fs/nfs/nfs_var.h   Tue Sep 26 23:42:44 2017        (r324040)
@@ -303,7 +303,7 @@ struct ucred *nfsrv_getgrpscred(struct ucred *);
 void nfsm_uiombuf(struct nfsrv_descript *, struct uio *, int);
 struct mbuf *nfsm_uiombuflist(struct uio *, int, struct mbuf **, char **);
 void nfscl_reqstart(struct nfsrv_descript *, int, struct nfsmount *,
-    u_int8_t *, int, u_int32_t **, struct nfsclsession *);
+    u_int8_t *, int, u_int32_t **, struct nfsclsession *, int, int);
 nfsuint64 *nfscl_getcookie(struct nfsnode *, off_t off, int);
 void nfscl_fillsattr(struct nfsrv_descript *, struct vattr *,
       vnode_t, int, u_int32_t);

Modified: head/sys/fs/nfs/nfscl.h
==============================================================================
--- head/sys/fs/nfs/nfscl.h     Tue Sep 26 23:24:15 2017        (r324039)
+++ head/sys/fs/nfs/nfscl.h     Tue Sep 26 23:42:44 2017        (r324040)
@@ -49,7 +49,8 @@ struct nfsv4node {
  */
 #define        NFSCL_REQSTART(n, p, v)                                         
\
        nfscl_reqstart((n), (p), VFSTONFS((v)->v_mount),                \
-           VTONFS(v)->n_fhp->nfh_fh, VTONFS(v)->n_fhp->nfh_len, NULL, NULL)
+           VTONFS(v)->n_fhp->nfh_fh, VTONFS(v)->n_fhp->nfh_len, NULL,  \
+           NULL, 0, 0)
 
 /*
  * These two macros convert between a lease duration and renew interval.

Modified: head/sys/fs/nfsclient/nfs_clcomsubs.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clcomsubs.c       Tue Sep 26 23:24:15 2017        
(r324039)
+++ head/sys/fs/nfsclient/nfs_clcomsubs.c       Tue Sep 26 23:42:44 2017        
(r324040)
@@ -131,7 +131,8 @@ static int nfs_bigrequest[NFSV41_NPROCS] = {
  */
 APPLESTATIC void
 nfscl_reqstart(struct nfsrv_descript *nd, int procnum, struct nfsmount *nmp,
-    u_int8_t *nfhp, int fhlen, u_int32_t **opcntpp, struct nfsclsession *sep)
+    u_int8_t *nfhp, int fhlen, u_int32_t **opcntpp, struct nfsclsession *sep,
+    int vers, int minorvers)
 {
        struct mbuf *mb;
        u_int32_t *tl;
@@ -142,14 +143,22 @@ nfscl_reqstart(struct nfsrv_descript *nd, int procnum,
         * First, fill in some of the fields of nd.
         */
        nd->nd_slotseq = NULL;
-       if (NFSHASNFSV4(nmp)) {
+       if (vers == NFS_VER4) {
                nd->nd_flag = ND_NFSV4 | ND_NFSCL;
-               if (NFSHASNFSV4N(nmp))
+               if (minorvers == NFSV41_MINORVERSION)
                        nd->nd_flag |= ND_NFSV41;
-       } else if (NFSHASNFSV3(nmp))
+       } else if (vers == NFS_VER3)
                nd->nd_flag = ND_NFSV3 | ND_NFSCL;
-       else
-               nd->nd_flag = ND_NFSV2 | ND_NFSCL;
+       else {
+               if (NFSHASNFSV4(nmp)) {
+                       nd->nd_flag = ND_NFSV4 | ND_NFSCL;
+                       if (NFSHASNFSV4N(nmp))
+                               nd->nd_flag |= ND_NFSV41;
+               } else if (NFSHASNFSV3(nmp))
+                       nd->nd_flag = ND_NFSV3 | ND_NFSCL;
+               else
+                       nd->nd_flag = ND_NFSV2 | ND_NFSCL;
+       }
        nd->nd_procnum = procnum;
        nd->nd_repstat = 0;
 

Modified: head/sys/fs/nfsclient/nfs_clrpcops.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clrpcops.c        Tue Sep 26 23:24:15 2017        
(r324039)
+++ head/sys/fs/nfsclient/nfs_clrpcops.c        Tue Sep 26 23:42:44 2017        
(r324040)
@@ -429,7 +429,7 @@ nfsrpc_openrpc(struct nfsmount *nmp, vnode_t vp, u_int
 
        dp = *dpp;
        *dpp = NULL;
-       nfscl_reqstart(nd, NFSPROC_OPEN, nmp, nfhp, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_OPEN, nmp, nfhp, fhlen, NULL, NULL, 0, 0);
        NFSM_BUILD(tl, u_int32_t *, 5 * NFSX_UNSIGNED);
        *tl++ = txdr_unsigned(op->nfso_own->nfsow_seqid);
        *tl++ = txdr_unsigned(mode & NFSV4OPEN_ACCESSBOTH);
@@ -785,7 +785,7 @@ nfsrpc_closerpc(struct nfsrv_descript *nd, struct nfsm
        int error;
 
        nfscl_reqstart(nd, NFSPROC_CLOSE, nmp, op->nfso_fh,
-           op->nfso_fhlen, NULL, NULL);
+           op->nfso_fhlen, NULL, NULL, 0, 0);
        NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED + NFSX_STATEID);
        *tl++ = txdr_unsigned(op->nfso_own->nfsow_seqid);
        if (NFSHASNFSV4N(nmp))
@@ -827,7 +827,8 @@ nfsrpc_openconfirm(vnode_t vp, u_int8_t *nfhp, int fhl
        nmp = VFSTONFS(vnode_mount(vp));
        if (NFSHASNFSV4N(nmp))
                return (0);             /* No confirmation for NFSv4.1. */
-       nfscl_reqstart(nd, NFSPROC_OPENCONFIRM, nmp, nfhp, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_OPENCONFIRM, nmp, nfhp, fhlen, NULL, NULL,
+           0, 0);
        NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED + NFSX_STATEID);
        *tl++ = op->nfso_stateid.seqid;
        *tl++ = op->nfso_stateid.other[0];
@@ -941,7 +942,7 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclcli
        tsep = NFSMNT_MDSSESSION(nmp);
        NFSUNLOCKMNT(nmp);
 
-       nfscl_reqstart(nd, NFSPROC_SETCLIENTID, nmp, NULL, 0, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_SETCLIENTID, nmp, NULL, 0, NULL, NULL, 0, 0);
        NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
        *tl++ = txdr_unsigned(nfsboottime.tv_sec);
        *tl = txdr_unsigned(clp->nfsc_rev);
@@ -1011,7 +1012,7 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclcli
             * and confirm it.
             */
            nfscl_reqstart(nd, NFSPROC_SETCLIENTIDCFRM, nmp, NULL, 0, NULL,
-               NULL);
+               NULL, 0, 0);
            NFSM_BUILD(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
            *tl++ = tsep->nfsess_clientid.lval[0];
            *tl++ = tsep->nfsess_clientid.lval[1];
@@ -1026,7 +1027,7 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclcli
            nd->nd_mrep = NULL;
            if (nd->nd_repstat == 0) {
                nfscl_reqstart(nd, NFSPROC_GETATTR, nmp, nmp->nm_fh,
-                   nmp->nm_fhsize, NULL, NULL);
+                   nmp->nm_fhsize, NULL, NULL, 0, 0);
                NFSZERO_ATTRBIT(&attrbits);
                NFSSETBIT_ATTRBIT(&attrbits, NFSATTRBIT_LEASETIME);
                (void) nfsrv_putattrbit(nd, &attrbits);
@@ -1093,7 +1094,7 @@ nfsrpc_getattrnovp(struct nfsmount *nmp, u_int8_t *fhp
        int error, vers = NFS_VER2;
        nfsattrbit_t attrbits;
        
-       nfscl_reqstart(nd, NFSPROC_GETATTR, nmp, fhp, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_GETATTR, nmp, fhp, fhlen, NULL, NULL, 0, 0);
        if (nd->nd_flag & ND_NFSV4) {
                vers = NFS_VER4;
                NFSGETATTR_ATTRBIT(&attrbits);
@@ -4009,7 +4010,7 @@ nfsrpc_locku(struct nfsrv_descript *nd, struct nfsmoun
        int error;
 
        nfscl_reqstart(nd, NFSPROC_LOCKU, nmp, lp->nfsl_open->nfso_fh,
-           lp->nfsl_open->nfso_fhlen, NULL, NULL);
+           lp->nfsl_open->nfso_fhlen, NULL, NULL, 0, 0);
        NFSM_BUILD(tl, u_int32_t *, NFSX_STATEID + 6 * NFSX_UNSIGNED);
        *tl++ = txdr_unsigned(type);
        *tl = txdr_unsigned(lp->nfsl_seqid);
@@ -4061,7 +4062,7 @@ nfsrpc_lock(struct nfsrv_descript *nd, struct nfsmount
        uint8_t own[NFSV4CL_LOCKNAMELEN + NFSX_V4FHMAX];
        struct nfsclsession *tsep;
 
-       nfscl_reqstart(nd, NFSPROC_LOCK, nmp, nfhp, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_LOCK, nmp, nfhp, fhlen, NULL, NULL, 0, 0);
        NFSM_BUILD(tl, u_int32_t *, 7 * NFSX_UNSIGNED);
        if (type == F_RDLCK)
                *tl++ = txdr_unsigned(NFSV4LOCKT_READ);
@@ -4334,10 +4335,11 @@ nfsrpc_renew(struct nfsclclient *clp, struct nfsclds *
        if (nmp == NULL)
                return (0);
        if (dsp == NULL)
-               nfscl_reqstart(nd, NFSPROC_RENEW, nmp, NULL, 0, NULL, NULL);
+               nfscl_reqstart(nd, NFSPROC_RENEW, nmp, NULL, 0, NULL, NULL, 0,
+                   0);
        else
                nfscl_reqstart(nd, NFSPROC_RENEW, nmp, NULL, 0, NULL,
-                   &dsp->nfsclds_sess);
+                   &dsp->nfsclds_sess, 0, 0);
        if (!NFSHASNFSV4N(nmp)) {
                /* NFSv4.1 just uses a Sequence Op and not a Renew. */
                NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
@@ -4381,11 +4383,11 @@ nfsrpc_rellockown(struct nfsmount *nmp, struct nfscllo
        if (NFSHASNFSV4N(nmp)) {
                /* For NFSv4.1, do a FreeStateID. */
                nfscl_reqstart(nd, NFSPROC_FREESTATEID, nmp, NULL, 0, NULL,
-                   NULL);
+                   NULL, 0, 0);
                nfsm_stateidtom(nd, &lp->nfsl_stateid, NFSSTATEID_PUTSTATEID);
        } else {
                nfscl_reqstart(nd, NFSPROC_RELEASELCKOWN, nmp, NULL, 0, NULL,
-                   NULL);
+                   NULL, 0, 0);
                NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
                tsep = nfsmnt_mdssession(nmp);
                *tl++ = tsep->nfsess_clientid.lval[0];
@@ -4418,7 +4420,8 @@ nfsrpc_getdirpath(struct nfsmount *nmp, u_char *dirpat
        int error, cnt, len, setnil;
        u_int32_t *opcntp;
 
-       nfscl_reqstart(nd, NFSPROC_PUTROOTFH, nmp, NULL, 0, &opcntp, NULL);
+       nfscl_reqstart(nd, NFSPROC_PUTROOTFH, nmp, NULL, 0, &opcntp, NULL, 0,
+           0);
        cp = dirpath;
        cnt = 0;
        do {
@@ -4485,7 +4488,7 @@ nfsrpc_delegreturn(struct nfscldeleg *dp, struct ucred
        int error;
 
        nfscl_reqstart(nd, NFSPROC_DELEGRETURN, nmp, dp->nfsdl_fh,
-           dp->nfsdl_fhlen, NULL, NULL);
+           dp->nfsdl_fhlen, NULL, NULL, 0, 0);
        NFSM_BUILD(tl, u_int32_t *, NFSX_STATEID);
        if (NFSHASNFSV4N(nmp))
                *tl++ = 0;
@@ -4595,7 +4598,7 @@ nfsrpc_exchangeid(struct nfsmount *nmp, struct nfsclcl
        int error, len;
 
        *dspp = NULL;
-       nfscl_reqstart(nd, NFSPROC_EXCHANGEID, nmp, NULL, 0, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_EXCHANGEID, nmp, NULL, 0, NULL, NULL, 0, 0);
        NFSM_BUILD(tl, uint32_t *, 2 * NFSX_UNSIGNED);
        *tl++ = txdr_unsigned(nfsboottime.tv_sec);      /* Client owner */
        *tl = txdr_unsigned(clp->nfsc_rev);
@@ -4682,7 +4685,8 @@ nfsrpc_createsession(struct nfsmount *nmp, struct nfsc
                nmp->nm_rsize = NFS_MAXBSIZE;
        if (nmp->nm_wsize > NFS_MAXBSIZE || nmp->nm_wsize == 0)
                nmp->nm_wsize = NFS_MAXBSIZE;
-       nfscl_reqstart(nd, NFSPROC_CREATESESSION, nmp, NULL, 0, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_CREATESESSION, nmp, NULL, 0, NULL, NULL, 0,
+           0);
        NFSM_BUILD(tl, uint32_t *, 4 * NFSX_UNSIGNED);
        *tl++ = sep->nfsess_clientid.lval[0];
        *tl++ = sep->nfsess_clientid.lval[1];
@@ -4796,7 +4800,8 @@ nfsrpc_destroysession(struct nfsmount *nmp, struct nfs
        int error;
        struct nfsclsession *tsep;
 
-       nfscl_reqstart(nd, NFSPROC_DESTROYSESSION, nmp, NULL, 0, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_DESTROYSESSION, nmp, NULL, 0, NULL, NULL, 0,
+           0);
        NFSM_BUILD(tl, uint32_t *, NFSX_V4SESSIONID);
        tsep = nfsmnt_mdssession(nmp);
        bcopy(tsep->nfsess_sessionid, tl, NFSX_V4SESSIONID);
@@ -4823,7 +4828,8 @@ nfsrpc_destroyclient(struct nfsmount *nmp, struct nfsc
        int error;
        struct nfsclsession *tsep;
 
-       nfscl_reqstart(nd, NFSPROC_DESTROYCLIENT, nmp, NULL, 0, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_DESTROYCLIENT, nmp, NULL, 0, NULL, NULL, 0,
+           0);
        NFSM_BUILD(tl, uint32_t *, 2 * NFSX_UNSIGNED);
        tsep = nfsmnt_mdssession(nmp);
        *tl++ = tsep->nfsess_clientid.lval[0];
@@ -4850,7 +4856,8 @@ nfsrpc_layoutget(struct nfsmount *nmp, uint8_t *fhp, i
        struct nfsrv_descript nfsd, *nd = &nfsd;
        int error;
 
-       nfscl_reqstart(nd, NFSPROC_LAYOUTGET, nmp, fhp, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_LAYOUTGET, nmp, fhp, fhlen, NULL, NULL, 0,
+           0);
        nfsrv_setuplayoutget(nd, iomode, offset, len, minlen, stateidp,
            layoutlen, 0);
        nd->nd_flag |= ND_USEGSSNAME;
@@ -4886,7 +4893,8 @@ nfsrpc_getdeviceinfo(struct nfsmount *nmp, uint8_t *de
 
        *ndip = NULL;
        ndi = NULL;
-       nfscl_reqstart(nd, NFSPROC_GETDEVICEINFO, nmp, NULL, 0, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_GETDEVICEINFO, nmp, NULL, 0, NULL, NULL, 0,
+           0);
        NFSM_BUILD(tl, uint32_t *, NFSX_V4DEVICEID + 3 * NFSX_UNSIGNED);
        NFSBCOPY(deviceid, tl, NFSX_V4DEVICEID);
        tl += (NFSX_V4DEVICEID / NFSX_UNSIGNED);
@@ -5039,7 +5047,8 @@ nfsrpc_layoutcommit(struct nfsmount *nmp, uint8_t *fh,
        struct nfsrv_descript nfsd, *nd = &nfsd;
        int error;
 
-       nfscl_reqstart(nd, NFSPROC_LAYOUTCOMMIT, nmp, fh, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_LAYOUTCOMMIT, nmp, fh, fhlen, NULL, NULL,
+           0, 0);
        NFSM_BUILD(tl, uint32_t *, 5 * NFSX_UNSIGNED + 3 * NFSX_HYPER +
            NFSX_STATEID);
        txdr_hyper(off, tl);
@@ -5088,7 +5097,8 @@ nfsrpc_layoutreturn(struct nfsmount *nmp, uint8_t *fh,
        struct nfsrv_descript nfsd, *nd = &nfsd;
        int error;
 
-       nfscl_reqstart(nd, NFSPROC_LAYOUTRETURN, nmp, fh, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_LAYOUTRETURN, nmp, fh, fhlen, NULL, NULL,
+           0, 0);
        NFSM_BUILD(tl, uint32_t *, 4 * NFSX_UNSIGNED);
        if (reclaim != 0)
                *tl++ = newnfs_true;
@@ -5390,7 +5400,8 @@ nfsrpc_reclaimcomplete(struct nfsmount *nmp, struct uc
        struct nfsrv_descript *nd = &nfsd;
        int error;
 
-       nfscl_reqstart(nd, NFSPROC_RECLAIMCOMPL, nmp, NULL, 0, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_RECLAIMCOMPL, nmp, NULL, 0, NULL, NULL, 0,
+           0);
        NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED);
        *tl = newnfs_false;
        nd->nd_flag |= ND_USEGSSNAME;
@@ -5697,7 +5708,7 @@ nfsrpc_readds(vnode_t vp, struct uio *uiop, nfsv4state
 
        nd->nd_mrep = NULL;
        nfscl_reqstart(nd, NFSPROC_READDS, nmp, fhp->nfh_fh, fhp->nfh_len,
-           NULL, &dsp->nfsclds_sess);
+           NULL, &dsp->nfsclds_sess, 0, 0);
        nfsm_stateidtom(nd, stateidp, NFSSTATEID_PUTSEQIDZERO);
        NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED * 3);
        txdr_hyper(io_off, tl);
@@ -5743,7 +5754,7 @@ nfsrpc_writeds(vnode_t vp, struct uio *uiop, int *iomo
        KASSERT(uiop->uio_iovcnt == 1, ("nfs: writerpc iovcnt > 1"));
        nd->nd_mrep = NULL;
        nfscl_reqstart(nd, NFSPROC_WRITEDS, nmp, fhp->nfh_fh, fhp->nfh_len,
-           NULL, &dsp->nfsclds_sess);
+           NULL, &dsp->nfsclds_sess, 0, 0);
        nfsm_stateidtom(nd, stateidp, NFSSTATEID_PUTSEQIDZERO);
        NFSM_BUILD(tl, uint32_t *, NFSX_HYPER + 2 * NFSX_UNSIGNED);
        txdr_hyper(io_off, tl);
@@ -5908,7 +5919,7 @@ nfsrpc_commitds(vnode_t vp, uint64_t offset, int cnt, 
        
        nd->nd_mrep = NULL;
        nfscl_reqstart(nd, NFSPROC_COMMITDS, nmp, fhp->nfh_fh, fhp->nfh_len,
-           NULL, &dsp->nfsclds_sess);
+           NULL, &dsp->nfsclds_sess, 0, 0);
        NFSM_BUILD(tl, uint32_t *, NFSX_HYPER + NFSX_UNSIGNED);
        txdr_hyper(offset, tl);
        tl += 2;
@@ -6187,7 +6198,8 @@ nfsrpc_openlayoutrpc(struct nfsmount *nmp, vnode_t vp,
 
        *dpp = NULL;
        *laystatp = ENXIO;
-       nfscl_reqstart(nd, NFSPROC_OPENLAYGET, nmp, nfhp, fhlen, NULL, NULL);
+       nfscl_reqstart(nd, NFSPROC_OPENLAYGET, nmp, nfhp, fhlen, NULL, NULL,
+           0, 0);
        NFSM_BUILD(tl, uint32_t *, 5 * NFSX_UNSIGNED);
        *tl++ = txdr_unsigned(op->nfso_own->nfsow_seqid);
        *tl++ = txdr_unsigned(mode & NFSV4OPEN_ACCESSBOTH);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to