From owner-svn-src-projects@freebsd.org Wed Aug 16 20:24:31 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5B938DCE8BA for ; Wed, 16 Aug 2017 20:24:31 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 32AE46E3A9; Wed, 16 Aug 2017 20:24:31 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7GKOUI5020464; Wed, 16 Aug 2017 20:24:30 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7GKOUJC020463; Wed, 16 Aug 2017 20:24:30 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708162024.v7GKOUJC020463@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 Aug 2017 20:24:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322594 - projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server-stable11/sys/fs/nfsserver X-SVN-Commit-Revision: 322594 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 20:24:31 -0000 Author: rmacklem Date: Wed Aug 16 20:24:29 2017 New Revision: 322594 URL: https://svnweb.freebsd.org/changeset/base/322594 Log: Cleanup of the code changes for support of mirrors. Mostly indentation changes and a few simplification of arguments. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 20:09:39 2017 (r322593) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 16 20:24:29 2017 (r322594) @@ -3786,8 +3786,8 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, tdsc->va = va; tdsc->dvp = dvp[i]; tdsc->haskproc = 1; - ret = kproc_create(start_dscreate, (void *)tdsc, NULL, - 0, 0, "nfsdpnfs"); + ret = kproc_create(start_dscreate, (void *)tdsc, NULL, 0, 0, + "nfsdpcr"); if (ret == 0) haskproc = 1; else { @@ -3912,8 +3912,7 @@ nfsrv_dsremove(struct vnode *dvp, char *fname, struct named.ni_cnd.cn_lkflags = LK_EXCLUSIVE | LK_RETRY; named.ni_cnd.cn_cred = tcred; named.ni_cnd.cn_thread = p; - named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | - SAVENAME; + named.ni_cnd.cn_flags = ISLASTCN | LOCKPARENT | LOCKLEAF | SAVENAME; nfsvno_setpathbuf(&named, &bufp, &hashp); named.ni_cnd.cn_nameptr = bufp; named.ni_cnd.cn_namelen = strlen(fname); @@ -3974,14 +3973,13 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch tdsrm->dvp = dvp[i]; strlcpy(tdsrm->fname, fname, PNFS_FILENAME_LEN + 1); tdsrm->haskproc = 1; - ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, - 0, 0, "nfsdpnfs"); + ret = kproc_create(start_dsremove, (void *)tdsrm, NULL, 0, 0, + "nfsdprm"); if (ret == 0) haskproc = 1; else { tdsrm->haskproc = 0; - nfsrv_dsremove(tdsrm->dvp, tdsrm->fname, tdsrm->tcred, - tdsrm->p); + nfsrv_dsremove(dvp[i], fname, tcred, p); } } nfsrv_dsremove(dvp[mirrorcnt - 1], fname, tcred, p); @@ -4405,25 +4403,35 @@ struct nfsrvwritedsdorpc { struct ucred *cred; NFSPROC_T *p; struct mbuf *m; - nfsv4stateid_t st; int haskproc; int err; }; static int nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fhp, off_t off, int len, - nfsv4stateid_t *stp, struct nfsvattr *nap, struct mbuf *m, - struct ucred *cred, NFSPROC_T *p) + struct nfsvattr *nap, struct mbuf *m, struct ucred *cred, NFSPROC_T *p) { uint32_t *tl; struct nfsrv_descript *nd; nfsattrbit_t attrbits; + nfsv4stateid_t st; int commit, error, retlen; nd = malloc(sizeof(*nd), M_TEMP, M_WAITOK | M_ZERO); nfscl_reqstart(nd, NFSPROC_WRITE, nmp, (u_int8_t *)fhp, sizeof(fhandle_t), NULL, NULL); - nfsm_stateidtom(nd, stp, NFSSTATEID_PUTSTATEID); + + /* + * Use a stateid where other is an alternating 01010 pattern and + * seqid is 0xffffffff. This value is not defined as special by + * the RFC and is used by the FreeBSD NFS server to indicate an + * MDS->DS proxy operation. + */ + st.other[0] = 0x55555555; + st.other[1] = 0x55555555; + st.other[2] = 0x55555555; + st.seqid = 0xffffffff; + nfsm_stateidtom(nd, &st, NFSSTATEID_PUTSTATEID); NFSM_BUILD(tl, u_int32_t *, NFSX_HYPER + 2 * NFSX_UNSIGNED); txdr_hyper(off, tl); tl += 2; @@ -4466,9 +4474,8 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fh /* Get rid of weak cache consistency data for now. */ if ((nd->nd_flag & (ND_NOMOREDATA | ND_NFSV4 | ND_V4WCCATTR)) == (ND_NFSV4 | ND_V4WCCATTR)) { - error = nfsv4_loadattr(nd, NULL, nap, NULL, - NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL); + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, + NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); NFSD_DEBUG(4, "nfsrv_writedsdorpc: wcc attr=%d\n", error); if (error != 0) goto nfsmout; @@ -4498,9 +4505,8 @@ nfsrv_writedsdorpc(struct nfsmount *nmp, fhandle_t *fh */ if (error == 0) { NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); - error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, - NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, - NULL, NULL); + error = nfsv4_loadattr(nd, NULL, nap, NULL, NULL, 0, NULL, NULL, + NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL); } NFSD_DEBUG(4, "nfsrv_writedsdorpc: aft loadattr=%d\n", error); nfsmout: @@ -4520,7 +4526,7 @@ start_writedsdorpc(void *arg) drpc = (struct nfsrvwritedsdorpc *)arg; drpc->err = nfsrv_writedsdorpc(drpc->nmp, &drpc->fh, drpc->off, - drpc->len, &drpc->st, NULL, drpc->m, drpc->cred, drpc->p); + drpc->len, NULL, drpc->m, drpc->cred, drpc->p); NFSDWRPCLOCK(); drpc->haskproc = 0; wakeup(drpc); @@ -4534,7 +4540,6 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s char *cp) { struct nfsrvwritedsdorpc *drpc, *tdrpc; - nfsv4stateid_t st; struct nfsvattr na; struct mbuf *m; int error, haskproc, i, offs, ret, mirrorcnt = 1; @@ -4551,24 +4556,12 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s NFSD_DEBUG(4, "nfsrv_writedsrpc: mcopy offs=%d len=%d\n", offs, len); /* - * Use a stateid where other is an alternating 01010 pattern and - * seqid is 0xffffffff. This value is not defined as special by - * the RFC and is used by the FreeBSD NFS server to indicate an - * MDS->DS proxy operation. - */ - st.other[0] = 0x55555555; - st.other[1] = 0x55555555; - st.other[2] = 0x55555555; - st.seqid = 0xffffffff; - - /* * Do the write RPC for every DS, using a separate kernel process * for every DS except the last one. */ haskproc = 0; error = 0; for (i = 0; i < mirrorcnt - 1; i++, tdrpc++) { - tdrpc->st = st; tdrpc->fh = *fhp; tdrpc->off = off; tdrpc->len = len; @@ -4577,20 +4570,20 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s tdrpc->p = p; tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); tdrpc->haskproc = 1; - ret = kproc_create(start_writedsdorpc, (void *)tdrpc, - NULL, 0, 0, "nfsdpnfs"); + ret = kproc_create(start_writedsdorpc, (void *)tdrpc, NULL, 0, + 0, "nfsdpw"); if (ret == 0) haskproc = 1; else { tdrpc->haskproc = 0; - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, NULL, + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, NULL, tdrpc->m, cred, p); if (error == 0 && ret != 0) error = ret; } } m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); - ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &st, &na, m, cred, p); + ret = nfsrv_writedsdorpc(nmp, fhp, off, len, &na, m, cred, p); if (error == 0 && ret != 0) error = ret; if (error == 0)