From owner-svn-src-projects@freebsd.org Sun May 13 23:55:12 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 72EDCFDAF7C for ; Sun, 13 May 2018 23:55:12 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1CCDA6F818; Sun, 13 May 2018 23:55:12 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F30D71475D; Sun, 13 May 2018 23:55:11 +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 w4DNtBLk012824; Sun, 13 May 2018 23:55:11 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4DNtBgm012823; Sun, 13 May 2018 23:55:11 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805132355.w4DNtBgm012823@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sun, 13 May 2018 23:55:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333593 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 333593 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.25 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: Sun, 13 May 2018 23:55:12 -0000 Author: rmacklem Date: Sun May 13 23:55:11 2018 New Revision: 333593 URL: https://svnweb.freebsd.org/changeset/base/333593 Log: Fix nfsrv_deleteds() for the case of more than two way mirrors with the first mirror already disabled when the main DS is disabled. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Sun May 13 23:38:01 2018 (r333592) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Sun May 13 23:55:11 2018 (r333593) @@ -7284,18 +7284,22 @@ nfsrv_deleteds(struct nfsdevice *fndds, struct nfsdevi return; } - if (TAILQ_EMPTY(&fndds->nfsdev_mirrors)) { + NFSD_DEBUG(4, "deleteds: deleting main ds\n"); + /* Search for a usable mirror. If none found, return. */ + TAILQ_FOREACH(mds, &fndds->nfsdev_mirrors, nfsdev_list) { + if (mds->nfsdev_nmp != NULL) + break; + } + if (mds == NULL) { printf("nfsrv_deleteds: empty mirror\n"); return; } /* - * The fndds is the first one, so make the first entry in the + * The fndds is the first one, so make the first valid entry in the * mirror list the first one. */ - NFSD_DEBUG(4, "deleteds: deleting main ds\n"); TAILQ_REMOVE(&nfsrv_devidhead, fndds, nfsdev_list); - mds = TAILQ_FIRST(&fndds->nfsdev_mirrors); TAILQ_REMOVE(&fndds->nfsdev_mirrors, mds, nfsdev_list); TAILQ_INIT(&mds->nfsdev_mirrors); @@ -7304,7 +7308,7 @@ nfsrv_deleteds(struct nfsdevice *fndds, struct nfsdevi while (nds != NULL) { NFSD_DEBUG(4, "shifting mirror up\n"); TAILQ_REMOVE(&fndds->nfsdev_mirrors, nds, nfsdev_list); - TAILQ_INSERT_HEAD(&mds->nfsdev_mirrors, nds, nfsdev_list); + TAILQ_INSERT_TAIL(&mds->nfsdev_mirrors, nds, nfsdev_list); nds = TAILQ_FIRST(&fndds->nfsdev_mirrors); } @@ -7314,7 +7318,7 @@ nfsrv_deleteds(struct nfsdevice *fndds, struct nfsdevi /* Put fndds in the mirror list with nfsdev_nmp == NULL. */ fndds->nfsdev_nmp = NULL; TAILQ_INIT(&fndds->nfsdev_mirrors); - TAILQ_INSERT_HEAD(&mds->nfsdev_mirrors, fndds, nfsdev_list); + TAILQ_INSERT_TAIL(&mds->nfsdev_mirrors, fndds, nfsdev_list); } /* From owner-svn-src-projects@freebsd.org Tue May 15 23:02:48 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9A185EDA4C6 for ; Tue, 15 May 2018 23:02:48 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48A0487860; Tue, 15 May 2018 23:02:48 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 29FD712008; Tue, 15 May 2018 23:02:48 +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 w4FN2l4e056154; Tue, 15 May 2018 23:02:47 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4FN2lns056153; Tue, 15 May 2018 23:02:47 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805152302.w4FN2lns056153@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Tue, 15 May 2018 23:02:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333653 - projects/pnfs-planb-server/usr.bin/pnfsdsfile X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/usr.bin/pnfsdsfile X-SVN-Commit-Revision: 333653 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.26 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: Tue, 15 May 2018 23:02:48 -0000 Author: rmacklem Date: Tue May 15 23:02:47 2018 New Revision: 333653 URL: https://svnweb.freebsd.org/changeset/base/333653 Log: Add a line that sets sin_len in pnfsdsfile.c for the "-r" option, just in case the previous address was INET6. Modified: projects/pnfs-planb-server/usr.bin/pnfsdsfile/pnfsdsfile.c Modified: projects/pnfs-planb-server/usr.bin/pnfsdsfile/pnfsdsfile.c ============================================================================== --- projects/pnfs-planb-server/usr.bin/pnfsdsfile/pnfsdsfile.c Tue May 15 22:26:09 2018 (r333652) +++ projects/pnfs-planb-server/usr.bin/pnfsdsfile/pnfsdsfile.c Tue May 15 23:02:47 2018 (r333653) @@ -213,6 +213,7 @@ main(int argc, char *argv[]) } if (ad != NULL) { sin->sin_family = AF_INET; + sin->sin_len = sizeof(*sin); sin->sin_port = 0; sin->sin_addr.s_addr = 0; dosetxattr = 1; From owner-svn-src-projects@freebsd.org Wed May 16 00:57:44 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EA420EE24EA for ; Wed, 16 May 2018 00:57:43 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 90E546DE2D; Wed, 16 May 2018 00:57:43 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 699C61325F; Wed, 16 May 2018 00:57:43 +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 w4G0vhvO015953; Wed, 16 May 2018 00:57:43 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4G0vg88015951; Wed, 16 May 2018 00:57:42 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805160057.w4G0vg88015951@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 May 2018 00:57:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333656 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 333656 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.26 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 May 2018 00:57:44 -0000 Author: rmacklem Date: Wed May 16 00:57:42 2018 New Revision: 333656 URL: https://svnweb.freebsd.org/changeset/base/333656 Log: Fix two cases where the test for "no mirrors" didn't traverse the list checking for a valid mirror. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c Tue May 15 23:55:38 2018 (r333655) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c Wed May 16 00:57:42 2018 (r333656) @@ -4331,8 +4331,12 @@ nfsv4_findmirror(struct nfsmount *nmp, struct nfsdevic if (fndds != NULL) break; if (ds->nfsdev_nmp == nmp) { - /* If there are no mirrors, return error. */ - if (TAILQ_EMPTY(&ds->nfsdev_mirrors)) { + /* If there are no mirrors, return NULL. */ + TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { + if (mds->nfsdev_nmp != NULL) + break; + } + if (mds == NULL) { NFSCL_DEBUG(4, "no mirror for DS\n"); return (NULL); } Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Tue May 15 23:55:38 2018 (r333655) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 16 00:57:42 2018 (r333656) @@ -7220,7 +7220,11 @@ nfsrv_delds(char *devid, NFSPROC_T *p) if (NFSBCMP(ds->nfsdev_deviceid, devid, NFSX_V4DEVICEID) == 0 && ds->nfsdev_nmp != NULL) { /* If there are no mirrors, return error. */ - if (TAILQ_EMPTY(&ds->nfsdev_mirrors)) { + TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) { + if (mds->nfsdev_nmp != NULL) + break; + } + if (mds == NULL) { NFSDDSUNLOCK(); NFSD_DEBUG(4, "no mirror for DS\n"); return (ENXIO); From owner-svn-src-projects@freebsd.org Wed May 16 22:32:10 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 61F36ED9BEC for ; Wed, 16 May 2018 22:32:10 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0F8F17FF4E; Wed, 16 May 2018 22:32:10 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E4E5D205AA; Wed, 16 May 2018 22:32:09 +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 w4GMW9GI075701; Wed, 16 May 2018 22:32:09 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4GMW9Bm075697; Wed, 16 May 2018 22:32:09 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805162232.w4GMW9Bm075697@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 16 May 2018 22:32:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333691 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 333691 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.26 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 May 2018 22:32:10 -0000 Author: rmacklem Date: Wed May 16 22:32:08 2018 New Revision: 333691 URL: https://svnweb.freebsd.org/changeset/base/333691 Log: Delete the "nmpp" argument for nfsrv_dsgetsockmnt() since it is not needed. Also, do a little cleanup of nfsrv_dsgetsockmnt() and add a few sanity checks. I don not believe this changes the server'semantics, except maybe for the case of "devid", which was filled in even for the error case. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_var.h projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_var.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_var.h Wed May 16 22:29:20 2018 (r333690) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_var.h Wed May 16 22:32:08 2018 (r333691) @@ -703,9 +703,8 @@ void nfsrv_backupstable(void); int nfsrv_dsgetdevandfh(struct vnode *, NFSPROC_T *, int *, fhandle_t *, char *); int nfsrv_dsgetsockmnt(struct vnode *, int, char *, int *, int *, - NFSPROC_T *, struct vnode **, struct nfsmount **, fhandle_t *, char *, - char *, struct vnode **, struct nfsmount *, struct nfsmount *, int *, - int *); + NFSPROC_T *, struct vnode **, fhandle_t *, char *, char *, + struct vnode **, struct nfsmount *, struct nfsmount *, int *, int *); int nfsrv_dscreate(struct vnode *, struct vattr *, struct vattr *, fhandle_t *, struct pnfsdsfile *, struct pnfsdsattr *, char *, struct ucred *, NFSPROC_T *, struct vnode **); Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Wed May 16 22:29:20 2018 (r333690) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Wed May 16 22:32:08 2018 (r333691) @@ -3948,6 +3948,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, NFSFREECRED(tcred); if (error == 0) { + ASSERT_VOP_ELOCKED(vp, "nfsrv_pnfscreate vp"); error = vn_start_write(vp, &mp, V_WAIT); if (error == 0) { error = vn_extattr_set(vp, IO_NODELOCKED, @@ -3978,7 +3979,6 @@ static void nfsrv_pnfsremovesetup(struct vnode *vp, NFSPROC_T *p, struct vnode **dvpp, int *mirrorcntp, char *fname) { - struct nfsmount *nmp[NFSDEV_MAXMIRRORS]; struct vattr va; struct ucred *tcred; char *buf; @@ -4005,7 +4005,7 @@ nfsrv_pnfsremovesetup(struct vnode *vp, NFSPROC_T *p, buf = malloc(buflen, M_TEMP, M_WAITOK); /* Get the directory vnode for the DS mount and the file handle. */ error = nfsrv_dsgetsockmnt(vp, LK_EXCLUSIVE, buf, &buflen, mirrorcntp, - p, dvpp, nmp, NULL, NULL, fname, NULL, NULL, NULL, NULL, NULL); + p, dvpp, NULL, NULL, fname, NULL, NULL, NULL, NULL, NULL); free(buf, M_TEMP); if (error != 0) printf("pNFS: nfsrv_pnfsremovesetup getsockmnt=%d\n", error); @@ -4285,9 +4285,12 @@ tryagain: if (error == 0) { buflen = 1024; error = nfsrv_dsgetsockmnt(vp, LK_SHARED, buf, &buflen, - &mirrorcnt, p, dvp, nmp, fh, NULL, NULL, NULL, NULL, NULL, + &mirrorcnt, p, dvp, fh, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - if (error != 0) + if (error == 0) { + for (i = 0; i < mirrorcnt; i++) + nmp[i] = VFSTONFS(dvp[i]->v_mount); + } else printf("pNFS: proxy getextattr sockaddr=%d\n", error); } else printf("pNFS: nfsrv_dsgetsockmnt=%d\n", error); @@ -4387,10 +4390,9 @@ tryagain: */ int nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char *buf, int *buflenp, - int *mirrorcntp, NFSPROC_T *p, struct vnode **dvpp, struct nfsmount **nmpp, - fhandle_t *fhp, char *devid, char *fnamep, struct vnode **nvpp, - struct nfsmount *newnmp, struct nfsmount *curnmp, int *zeroippos, - int *dsdirp) + int *mirrorcntp, NFSPROC_T *p, struct vnode **dvpp, fhandle_t *fhp, + char *devid, char *fnamep, struct vnode **nvpp, struct nfsmount *newnmp, + struct nfsmount *curnmp, int *zeroippos, int *dsdirp) { struct vnode *dvp, *nvp, **tdvpp; struct nfsmount *nmp; @@ -4401,16 +4403,15 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char uint32_t dsdir; int done, error, fnd, fhiszero, gotone, i, mirrorcnt; + ASSERT_VOP_LOCKED(vp, "nfsrv_dsgetsockmnt vp"); *mirrorcntp = 1; tdvpp = dvpp; if (lktype == 0) lktype = LK_SHARED; if (nvpp != NULL) *nvpp = NULL; - if (dvpp != NULL) { + if (dvpp != NULL) *dvpp = NULL; - *nmpp = NULL; - } if (zeroippos != NULL) *zeroippos = -1; error = vn_extattr_get(vp, IO_NODELOCKED, EXTATTR_NAMESPACE_SYSTEM, @@ -4465,6 +4466,10 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char if (mds->nfsdev_nmp != NULL) { dvp = mds->nfsdev_dvp; nmp = VFSTONFS(dvp->v_mount); + if (nmp != mds->nfsdev_nmp) + printf("different nmp " + "%p %p\n", nmp, + mds->nfsdev_nmp); if (nfsaddr2_match(sad, nmp->nm_nam)) { ds = mds; @@ -4477,6 +4482,9 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char break; dvp = ds->nfsdev_dvp; nmp = VFSTONFS(dvp->v_mount); + if (nmp != ds->nfsdev_nmp) + printf("different2 nmp %p %p\n", + nmp, ds->nfsdev_nmp); if (nfsaddr2_match(sad, nmp->nm_nam)) break; } @@ -4513,18 +4521,16 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char NFSVOPUNLOCK(dvp, 0); } } - if (devid != NULL) { - NFSBCOPY(ds->nfsdev_deviceid, devid, - NFSX_V4DEVICEID); - devid += NFSX_V4DEVICEID; - } if (error == 0) { gotone++; NFSD_DEBUG(4, "gotone=%d\n", gotone); - if (dvpp != NULL) { - *tdvpp++ = dvp; - *nmpp++ = nmp; + if (devid != NULL) { + NFSBCOPY(ds->nfsdev_deviceid, + devid, NFSX_V4DEVICEID); + devid += NFSX_V4DEVICEID; } + if (dvpp != NULL) + *tdvpp++ = dvp; if (fhp != NULL) NFSBCOPY(&pf->dsf_fh, fhp++, NFSX_MYFH); @@ -4579,6 +4585,7 @@ nfsrv_setextattr(struct vnode *vp, struct nfsvattr *na struct mount *mp; int error; + ASSERT_VOP_ELOCKED(vp, "nfsrv_setextattr vp"); error = vn_start_write(vp, &mp, V_WAIT); if (error == 0) { dsattr.dsa_filerev = nap->na_filerev; @@ -5307,7 +5314,7 @@ nfsrv_dsgetdevandfh(struct vnode *vp, NFSPROC_T *p, in buflen = 1024; buf = malloc(buflen, M_TEMP, M_WAITOK); error = nfsrv_dsgetsockmnt(vp, 0, buf, &buflen, mirrorcntp, p, NULL, - NULL, fhp, devid, NULL, NULL, NULL, NULL, NULL, NULL); + fhp, devid, NULL, NULL, NULL, NULL, NULL, NULL); free(buf, M_TEMP); return (error); } Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 16 22:29:20 2018 (r333690) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 16 22:32:08 2018 (r333691) @@ -7990,7 +7990,7 @@ nfsrv_mdscopymr(char *mdspathp, char *dspathp, char *c * nfsrv_dsgetsockmnt() returns EEXIST, so no copying will occur. */ error = nfsrv_dsgetsockmnt(vp, LK_EXCLUSIVE, buf, buflenp, - &mirrorcnt, p, NULL, NULL, NULL, NULL, fname, nvpp, nmp, curnmp, + &mirrorcnt, p, NULL, NULL, NULL, fname, nvpp, nmp, curnmp, &zeroippos, &dsdir); vput(nd.ni_vp); vput(curvp); From owner-svn-src-projects@freebsd.org Fri May 18 12:13:45 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7A368EF3A53 for ; Fri, 18 May 2018 12:13:45 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 27D87737DE; Fri, 18 May 2018 12:13:45 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0A82D17F95; Fri, 18 May 2018 12:13:45 +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 w4ICDiQG029361; Fri, 18 May 2018 12:13:44 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4ICDiUx029360; Fri, 18 May 2018 12:13:44 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805181213.w4ICDiUx029360@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 18 May 2018 12:13:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333788 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 333788 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.26 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: Fri, 18 May 2018 12:13:45 -0000 Author: rmacklem Date: Fri May 18 12:13:44 2018 New Revision: 333788 URL: https://svnweb.freebsd.org/changeset/base/333788 Log: Fix LayoutReturn so that it only returns a stateid when the layout will still exist after the LayoutReturn. I just found out about this case when reading the correct section of RFC5661 again. The handling of the FSID and ALL cases must still be fixed. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri May 18 12:12:24 2018 (r333787) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri May 18 12:13:44 2018 (r333788) @@ -6650,8 +6650,8 @@ nfsrv_layoutreturn(struct nfsrv_descript *nd, vnode_t fhandle_t fh; int error = 0; + *fndp = 0; if (kind == NFSV4LAYOUTRET_FILE) { - *fndp = 0; error = nfsvno_getfh(vp, &fh, p); if (error == 0) { error = nfsrv_updatemdsattr(vp, &na, p); @@ -6683,7 +6683,6 @@ nfsrv_layoutreturn(struct nfsrv_descript *nd, vnode_t if (++lyp->lay_stateid.seqid == 0) lyp->lay_stateid.seqid = 1; stateidp->seqid = lyp->lay_stateid.seqid; - *fndp = 1; if (offset == 0 && len == UINT64_MAX) { if ((iomode & NFSLAYOUTIOMODE_READ) != 0) @@ -6693,7 +6692,10 @@ nfsrv_layoutreturn(struct nfsrv_descript *nd, vnode_t if ((lyp->lay_flags & (NFSLAY_READ | NFSLAY_RW)) == 0) nfsrv_freelayout(lyp); - } + else + *fndp = 1; + } else + *fndp = 1; } NFSUNLOCKLAYOUT(lhyp); /* Search the nfsrv_recalllist for a match. */ From owner-svn-src-projects@freebsd.org Fri May 18 22:22:10 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BCAC8EDE607 for ; Fri, 18 May 2018 22:22:09 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6E0DC6C990; Fri, 18 May 2018 22:22:09 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 50A901E339; Fri, 18 May 2018 22:22:09 +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 w4IMM9Qi045351; Fri, 18 May 2018 22:22:09 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4IMM9El045350; Fri, 18 May 2018 22:22:09 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805182222.w4IMM9El045350@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 18 May 2018 22:22:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333815 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 333815 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.26 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: Fri, 18 May 2018 22:22:10 -0000 Author: rmacklem Date: Fri May 18 22:22:08 2018 New Revision: 333815 URL: https://svnweb.freebsd.org/changeset/base/333815 Log: Fix LayoutReturn for the FSID and ALL cases. At this time, I do not know of any client that actually do these, so this isn't actually tested. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri May 18 20:24:19 2018 (r333814) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri May 18 22:22:08 2018 (r333815) @@ -203,7 +203,9 @@ static int nfsrv_addlayout(struct nfsrv_descript *nd, nfsv4stateid_t *stateidp, char *layp, int *layoutlenp, NFSPROC_T *p); static void nfsrv_freelayout(struct nfslayout *lyp); static void nfsrv_freelayoutlist(nfsquad_t clientid); -static void nfsrv_freealllayouts(int *fndp); +static void nfsrv_freelayouts(nfsquad_t *clid, fsid_t *fs, int laytype, + int iomode); +static void nfsrv_freealllayouts(void); static void nfsrv_freedevid(struct nfsdevice *ds); static int nfsrv_setdsserver(char *dspathp, char *mirrorp, NFSPROC_T *p, struct nfsdevice **dsp); @@ -218,9 +220,9 @@ static int nfsrv_findlayout(struct nfsrv_descript *nd, int laytype, NFSPROC_T *, struct nfslayout **lypp); static int nfsrv_fndclid(nfsquad_t *clidvec, nfsquad_t clid, int clidcnt); static struct nfslayout *nfsrv_filelayout(struct nfsrv_descript *nd, int iomode, - fhandle_t *fhp, fhandle_t *dsfhp, char *devid); + fhandle_t *fhp, fhandle_t *dsfhp, char *devid, fsid_t fs); static struct nfslayout *nfsrv_flexlayout(struct nfsrv_descript *nd, int iomode, - int mirrorcnt, fhandle_t *fhp, fhandle_t *dsfhp, char *devid); + int mirrorcnt, fhandle_t *fhp, fhandle_t *dsfhp, char *devid, fsid_t fs); static int nfsrv_dontlayout(fhandle_t *fhp); static int nfsrv_createdsfile(vnode_t vp, fhandle_t *fhp, struct pnfsdsfile *pf, vnode_t dvp, struct nfsdevice *ds, struct ucred *cred, NFSPROC_T *p, @@ -6367,13 +6369,14 @@ nfsrv_layoutget(struct nfsrv_descript *nd, vnode_t vp, error = NFSERR_TOOSMALL; else lyp = nfsrv_filelayout(nd, *iomode, &fh, dsfhp, - devid); + devid, vp->v_mount->mnt_stat.f_fsid); } else { if (NFSX_V4FLEXLAYOUT(mirrorcnt) > maxcnt) error = NFSERR_TOOSMALL; else lyp = nfsrv_flexlayout(nd, *iomode, mirrorcnt, - &fh, dsfhp, devid); + &fh, dsfhp, devid, + vp->v_mount->mnt_stat.f_fsid); } } free(dsfhp, M_TEMP); @@ -6399,7 +6402,7 @@ nfsrv_layoutget(struct nfsrv_descript *nd, vnode_t vp, */ static struct nfslayout * nfsrv_filelayout(struct nfsrv_descript *nd, int iomode, fhandle_t *fhp, - fhandle_t *dsfhp, char *devid) + fhandle_t *dsfhp, char *devid, fsid_t fs) { uint32_t *tl; struct nfslayout *lyp; @@ -6414,6 +6417,7 @@ nfsrv_filelayout(struct nfsrv_descript *nd, int iomode lyp->lay_flags = NFSLAY_READ; NFSBCOPY(fhp, &lyp->lay_fh, sizeof(*fhp)); lyp->lay_clientid.qval = nd->nd_clientid.qval; + lyp->lay_fsid = fs; /* Fill in the xdr for the files layout. */ tl = (uint32_t *)lyp->lay_xdr; @@ -6451,7 +6455,7 @@ nfsrv_filelayout(struct nfsrv_descript *nd, int iomode */ static struct nfslayout * nfsrv_flexlayout(struct nfsrv_descript *nd, int iomode, int mirrorcnt, - fhandle_t *fhp, fhandle_t *dsfhp, char *devid) + fhandle_t *fhp, fhandle_t *dsfhp, char *devid, fsid_t fs) { uint32_t *tl; struct nfslayout *lyp; @@ -6467,6 +6471,7 @@ nfsrv_flexlayout(struct nfsrv_descript *nd, int iomode lyp->lay_flags = NFSLAY_READ; NFSBCOPY(fhp, &lyp->lay_fh, sizeof(*fhp)); lyp->lay_clientid.qval = nd->nd_clientid.qval; + lyp->lay_fsid = fs; lyp->lay_mirrorcnt = mirrorcnt; /* Fill in the xdr for the files layout. */ @@ -6719,8 +6724,13 @@ nfsrv_layoutreturn(struct nfsrv_descript *nd, vnode_t } if (layouttype == NFSLAYOUT_FLEXFILE) nfsrv_flexlayouterr(nd, layp, maxcnt, p); - } else - nfsrv_freealllayouts(fndp); + } else if (kind == NFSV4LAYOUTRET_FSID) + nfsrv_freelayouts(&nd->nd_clientid, + &vp->v_mount->mnt_stat.f_fsid, layouttype, iomode); + else if (kind == NFSV4LAYOUTRET_ALL) + nfsrv_freelayouts(&nd->nd_clientid, NULL, layouttype, iomode); + else + error = NFSERR_INVAL; if (error == -1) error = 0; return (error); @@ -6963,7 +6973,6 @@ nfsrv_freealllayoutsanddevids(void) { struct nfsdontlist *mrp, *nmrp; struct nfslayout *lyp, *nlyp; - int fnd; /* Get rid of the deviceid structures. */ nfsrv_freealldevids(); @@ -6971,7 +6980,7 @@ nfsrv_freealllayoutsanddevids(void) nfsrv_devidcnt = 0; /* Get rid of all layouts. */ - nfsrv_freealllayouts(&fnd); + nfsrv_freealllayouts(); /* Get rid of any nfsdontlist entries. */ LIST_FOREACH_SAFE(mrp, &nfsrv_dontlisthead, nfsmr_list, nmrp) @@ -6986,21 +6995,50 @@ nfsrv_freealllayoutsanddevids(void) } /* + * Free layouts that match the arguments. + */ +static void +nfsrv_freelayouts(nfsquad_t *clid, fsid_t *fs, int laytype, int iomode) +{ + struct nfslayouthash *lhyp; + struct nfslayout *lyp, *nlyp; + int i; + + for (i = 0; i < nfsrv_layouthashsize; i++) { + lhyp = &nfslayouthash[i]; + NFSLOCKLAYOUT(lhyp); + LIST_FOREACH_SAFE(lyp, &lhyp->list, lay_list, nlyp) { + if (clid->qval != lyp->lay_clientid.qval) + continue; + if (fs != NULL && (fs->val[0] != lyp->lay_fsid.val[0] || + fs->val[1] != lyp->lay_fsid.val[1])) + continue; + if (laytype != lyp->lay_type) + continue; + if ((iomode & NFSLAYOUTIOMODE_READ) != 0) + lyp->lay_flags &= ~NFSLAY_READ; + if ((iomode & NFSLAYOUTIOMODE_RW) != 0) + lyp->lay_flags &= ~NFSLAY_RW; + if ((lyp->lay_flags & (NFSLAY_READ | NFSLAY_RW)) == 0) + nfsrv_freelayout(lyp); + } + NFSUNLOCKLAYOUT(lhyp); + } +} + +/* * Free all layouts. */ static void -nfsrv_freealllayouts(int *fndp) +nfsrv_freealllayouts(void) { struct nfslayouthash *lhyp; struct nfslayout *lyp, *nlyp; int i; - *fndp = 0; for (i = 0; i < nfsrv_layouthashsize; i++) { lhyp = &nfslayouthash[i]; NFSLOCKLAYOUT(lhyp); - if (!LIST_EMPTY(&lhyp->list)) - *fndp = 1; LIST_FOREACH_SAFE(lyp, &lhyp->list, lay_list, nlyp) nfsrv_freelayout(lyp); NFSUNLOCKLAYOUT(lhyp); From owner-svn-src-projects@freebsd.org Fri May 18 23:42:09 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AF388EE085B for ; Fri, 18 May 2018 23:42:09 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 650176FDDC; Fri, 18 May 2018 23:42:09 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 475421EFA5; Fri, 18 May 2018 23:42:09 +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 w4INg9b2087476; Fri, 18 May 2018 23:42:09 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4INg9Es087475; Fri, 18 May 2018 23:42:09 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805182342.w4INg9Es087475@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 18 May 2018 23:42:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333818 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 333818 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.26 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: Fri, 18 May 2018 23:42:09 -0000 Author: rmacklem Date: Fri May 18 23:42:08 2018 New Revision: 333818 URL: https://svnweb.freebsd.org/changeset/base/333818 Log: Fix the checks for nfs_pnfsiothreads so that the call will be done when the default value of -1 is set. Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Fri May 18 23:17:49 2018 (r333817) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Fri May 18 23:42:08 2018 (r333818) @@ -4884,7 +4884,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s tdrpc->err = 0; tdrpc->m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK); ret = EIO; - if (nfs_pnfsiothreads > 0) { + if (nfs_pnfsiothreads != 0) { ret = nfs_pnfsio(start_writedsdorpc, tdrpc); NFSD_DEBUG(4, "nfsrv_writedsrpc: nfs_pnfsio=%d\n", ret); @@ -5068,7 +5068,7 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred, tdrpc->na = *nap; tdrpc->err = 0; ret = EIO; - if (nfs_pnfsiothreads > 0) { + if (nfs_pnfsiothreads != 0) { ret = nfs_pnfsio(start_setattrdsdorpc, tdrpc); NFSD_DEBUG(4, "nfsrv_setattrdsrpc: nfs_pnfsio=%d\n", ret); @@ -5216,7 +5216,7 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred, tdrpc->aclp = aclp; tdrpc->err = 0; ret = EIO; - if (nfs_pnfsiothreads > 0) { + if (nfs_pnfsiothreads != 0) { ret = nfs_pnfsio(start_setacldsdorpc, tdrpc); NFSD_DEBUG(4, "nfsrv_setacldsrpc: nfs_pnfsio=%d\n", ret); From owner-svn-src-projects@freebsd.org Sat May 19 00:47:26 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D5084EE230A for ; Sat, 19 May 2018 00:47:25 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 78F8571FDA; Sat, 19 May 2018 00:47:25 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5A1091FA3B; Sat, 19 May 2018 00:47:25 +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 w4J0lP8n019319; Sat, 19 May 2018 00:47:25 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4J0lPCj019318; Sat, 19 May 2018 00:47:25 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805190047.w4J0lPCj019318@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sat, 19 May 2018 00:47:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333821 - projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfsserver X-SVN-Commit-Revision: 333821 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.26 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: Sat, 19 May 2018 00:47:26 -0000 Author: rmacklem Date: Sat May 19 00:47:24 2018 New Revision: 333821 URL: https://svnweb.freebsd.org/changeset/base/333821 Log: Convert the pnfs create and remove operations for mirrored DSs to use taskqueue instead of kproc_create(). Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Sat May 19 00:26:00 2018 (r333820) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Sat May 19 00:47:24 2018 (r333821) @@ -3668,14 +3668,16 @@ nfsrv_backupstable(void) /* * Create a DS data file for nfsrv_pnfscreate(). Called for each mirror. * The arguments are in a structure, so that they can be passed through - * kproc_create() for a kernel process to execute this function. + * taskqueue for a kernel process to execute this function. */ struct nfsrvdscreate { + int done; + int inprog; + struct task tsk; struct ucred *tcred; struct vnode *dvp; NFSPROC_T *p; struct pnfsdsfile *pf; - int haskproc; int err; fhandle_t fh; struct vattr va; @@ -3776,18 +3778,15 @@ nfsrv_dscreate(struct vnode *dvp, struct vattr *vap, s * Start up the thread that will execute nfsrv_dscreate(). */ static void -start_dscreate(void *arg) +start_dscreate(void *arg, int pending) { struct nfsrvdscreate *dsc; dsc = (struct nfsrvdscreate *)arg; dsc->err = nfsrv_dscreate(dsc->dvp, &dsc->createva, &dsc->va, &dsc->fh, dsc->pf, NULL, NULL, dsc->tcred, dsc->p, NULL); - NFSDSCLOCK(); - dsc->haskproc = 0; - wakeup(dsc); - NFSDSCUNLOCK(); - kproc_exit(0); + dsc->done = 1; + NFSD_DEBUG(4, "start_dscreate: err=%d\n", dsc->err); } /* @@ -3810,8 +3809,8 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, gid_t vagid; u_short vamode; struct ucred *tcred; - int dsdir[NFSDEV_MAXMIRRORS], error, haskproc, i, mirrorcnt, ret; - int failpos; + int dsdir[NFSDEV_MAXMIRRORS], error, i, mirrorcnt, ret; + int failpos, timo; /* Get a DS server directory in a round-robin order. */ mirrorcnt = 1; @@ -3868,7 +3867,6 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, * additional mirrors. */ failpos = -1; - haskproc = 0; for (i = 0; i < mirrorcnt - 1 && error == 0; i++, tpf++, tdsc++) { tpf->dsf_dir = dsdir[i]; tdsc->tcred = tcred; @@ -3878,13 +3876,15 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, tdsc->fh = fh; tdsc->va = va; tdsc->dvp = dvp[i]; - tdsc->haskproc = 1; - ret = kproc_create(start_dscreate, (void *)tdsc, NULL, 0, 0, - "nfsdpcr"); - if (ret == 0) - haskproc = 1; - else { - tdsc->haskproc = 0; + tdsc->done = 0; + tdsc->inprog = 0; + tdsc->err = 0; + ret = EIO; + if (nfs_pnfsiothreads != 0) { + ret = nfs_pnfsio(start_dscreate, tdsc); + NFSD_DEBUG(4, "nfsrv_pnfscreate: nfs_pnfsio=%d\n", ret); + } + if (ret != 0) { ret = nfsrv_dscreate(dvp[i], vap, &va, &fh, tpf, NULL, NULL, tcred, p, NULL); if (ret != 0) { @@ -3906,21 +3906,19 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, error = 0; } } - if (haskproc != 0) { - /* Wait for kernel proc(s) to complete. */ - NFSDSCLOCK(); - for (tdsc = dsc, i = 0; i < mirrorcnt - 1; i++, tdsc++) { - while (tdsc->haskproc != 0) - mtx_sleep(tdsc, NFSDSCLOCKMUTEXPTR, PVFS, - "nfspcr", 0); - if (tdsc->err != 0) { - if (failpos == -1 && tdsc->err == ENXIO) - failpos = i; - else if (error == 0) - error = tdsc->err; - } + timo = hz / 50; /* Wait for 20msec. */ + if (timo < 1) + timo = 1; + /* Wait for kernel task(s) to complete. */ + for (tdsc = dsc, i = 0; i < mirrorcnt - 1; i++, tdsc++) { + while (tdsc->inprog != 0 && tdsc->done == 0) + tsleep(&tdsc->tsk, PVFS, "srvdcr", timo); + if (tdsc->err != 0) { + if (failpos == -1 && tdsc->err == ENXIO) + failpos = i; + else if (error == 0) + error = tdsc->err; } - NFSDSCUNLOCK(); } /* @@ -4014,13 +4012,15 @@ nfsrv_pnfsremovesetup(struct vnode *vp, NFSPROC_T *p, /* * Remove a DS data file for nfsrv_pnfsremove(). Called for each mirror. * The arguments are in a structure, so that they can be passed through - * kproc_create() for a kernel process to execute this function. + * taskqueue for a kernel process to execute this function. */ struct nfsrvdsremove { + int done; + int inprog; + struct task tsk; struct ucred *tcred; struct vnode *dvp; NFSPROC_T *p; - int haskproc; int err; char fname[PNFS_FILENAME_LEN + 1]; }; @@ -4061,18 +4061,15 @@ nfsrv_dsremove(struct vnode *dvp, char *fname, struct * Start up the thread that will execute nfsrv_dsremove(). */ static void -start_dsremove(void *arg) +start_dsremove(void *arg, int pending) { struct nfsrvdsremove *dsrm; dsrm = (struct nfsrvdsremove *)arg; dsrm->err = nfsrv_dsremove(dsrm->dvp, dsrm->fname, dsrm->tcred, dsrm->p); - NFSDSRMLOCK(); - dsrm->haskproc = 0; - wakeup(dsrm); - NFSDSRMUNLOCK(); - kproc_exit(0); + dsrm->done = 1; + NFSD_DEBUG(4, "start_dsremove: err=%d\n", dsrm->err); } /* @@ -4087,7 +4084,7 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch struct nfsrvdsremove *dsrm, *tdsrm; struct nfsdevice *ds; struct nfsmount *nmp; - int failpos, haskproc, i, ret; + int failpos, i, ret, timo; tcred = newnfs_getcred(); dsrm = NULL; @@ -4098,19 +4095,20 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch * additional mirrors. */ failpos = -1; - haskproc = 0; for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) { tdsrm->tcred = tcred; tdsrm->p = p; 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, - "nfsdprm"); - if (ret == 0) - haskproc = 1; - else { - tdsrm->haskproc = 0; + tdsrm->inprog = 0; + tdsrm->done = 0; + tdsrm->err = 0; + ret = EIO; + if (nfs_pnfsiothreads != 0) { + ret = nfs_pnfsio(start_dsremove, tdsrm); + NFSD_DEBUG(4, "nfsrv_pnfsremove: nfs_pnfsio=%d\n", ret); + } + if (ret != 0) { ret = nfsrv_dsremove(dvp[i], fname, tcred, p); if (failpos == -1 && ret == ENXIO) failpos = i; @@ -4119,17 +4117,15 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch ret = nfsrv_dsremove(dvp[mirrorcnt - 1], fname, tcred, p); if (failpos == -1 && mirrorcnt > 1 && ret == ENXIO) failpos = mirrorcnt - 1; - if (haskproc != 0) { - /* Wait for kernel proc(s) to complete. */ - NFSDSRMLOCK(); - for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) { - while (tdsrm->haskproc != 0) - mtx_sleep(tdsrm, NFSDSRMLOCKMUTEXPTR, PVFS, - "nfsprm", 0); - if (failpos == -1 && tdsrm->err == ENXIO) - failpos = i; - } - NFSDSRMUNLOCK(); + timo = hz / 50; /* Wait for 20msec. */ + if (timo < 1) + timo = 1; + /* Wait for kernel task(s) to complete. */ + for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) { + while (tdsrm->inprog != 0 && tdsrm->done == 0) + tsleep(&tdsrm->tsk, PVFS, "srvdsrm", timo); + if (failpos == -1 && tdsrm->err == ENXIO) + failpos = i; } /* From owner-svn-src-projects@freebsd.org Sat May 19 19:46:58 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8548EEE1875 for ; Sat, 19 May 2018 19:46:58 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3701B7CF88; Sat, 19 May 2018 19:46:58 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 182B33D5A; Sat, 19 May 2018 19:46:58 +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 w4JJkvTS004695; Sat, 19 May 2018 19:46:57 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4JJkv7F004693; Sat, 19 May 2018 19:46:57 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805191946.w4JJkv7F004693@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sat, 19 May 2018 19:46:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333889 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 333889 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.26 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: Sat, 19 May 2018 19:46:58 -0000 Author: rmacklem Date: Sat May 19 19:46:57 2018 New Revision: 333889 URL: https://svnweb.freebsd.org/changeset/base/333889 Log: Get rid of some mutexes no longer used now that the code is converted to using taskqueue. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c projects/pnfs-planb-server/sys/fs/nfs/nfsport.h projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Sat May 19 19:30:42 2018 (r333888) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Sat May 19 19:46:57 2018 (r333889) @@ -70,11 +70,6 @@ char nfsv4_callbackaddr[INET6_ADDRSTRLEN]; struct callout newnfsd_callout; int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; -struct mtx nfsrv_dsclock_mtx; -struct mtx nfsrv_dsrmlock_mtx; -struct mtx nfsrv_dwrpclock_mtx; -struct mtx nfsrv_dsrpclock_mtx; -struct mtx nfsrv_darpclock_mtx; struct nfsdevicehead nfsrv_devidhead; volatile int nfsrv_devidcnt = 0; void (*nfsd_call_servertimer)(void) = NULL; @@ -775,11 +770,6 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_init(&nfsrv_nfsuserdsock.nr_mtx, "nfsuserd", NULL, MTX_DEF); mtx_init(&nfsrv_dslock_mtx, "nfs4ds", NULL, MTX_DEF); - mtx_init(&nfsrv_dsclock_mtx, "nfsdsc", NULL, MTX_DEF); - mtx_init(&nfsrv_dsrmlock_mtx, "nfsdsrm", NULL, MTX_DEF); - mtx_init(&nfsrv_dwrpclock_mtx, "nfsdwrpc", NULL, MTX_DEF); - mtx_init(&nfsrv_dsrpclock_mtx, "nfsdsrpc", NULL, MTX_DEF); - mtx_init(&nfsrv_darpclock_mtx, "nfsdarpc", NULL, MTX_DEF); TAILQ_INIT(&nfsrv_devidhead); callout_init(&newnfsd_callout, 1); newnfs_init(); @@ -808,11 +798,6 @@ nfscommon_modevent(module_t mod, int type, void *data) mtx_destroy(&nfs_req_mutex); mtx_destroy(&nfsrv_nfsuserdsock.nr_mtx); mtx_destroy(&nfsrv_dslock_mtx); - mtx_destroy(&nfsrv_dsclock_mtx); - mtx_destroy(&nfsrv_dsrmlock_mtx); - mtx_destroy(&nfsrv_dwrpclock_mtx); - mtx_destroy(&nfsrv_dsrpclock_mtx); - mtx_destroy(&nfsrv_darpclock_mtx); loaded = 0; break; default: Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsport.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Sat May 19 19:30:42 2018 (r333888) +++ projects/pnfs-planb-server/sys/fs/nfs/nfsport.h Sat May 19 19:46:57 2018 (r333889) @@ -706,21 +706,6 @@ void nfsrvd_rcv(struct socket *, void *, int); #define NFSDDSMUTEXPTR (&nfsrv_dslock_mtx) #define NFSDDSLOCK() mtx_lock(&nfsrv_dslock_mtx) #define NFSDDSUNLOCK() mtx_unlock(&nfsrv_dslock_mtx) -#define NFSDSCLOCKMUTEXPTR (&nfsrv_dsclock_mtx) -#define NFSDSCLOCK() mtx_lock(&nfsrv_dsclock_mtx) -#define NFSDSCUNLOCK() mtx_unlock(&nfsrv_dsclock_mtx) -#define NFSDSRMLOCKMUTEXPTR (&nfsrv_dsrmlock_mtx) -#define NFSDSRMLOCK() mtx_lock(&nfsrv_dsrmlock_mtx) -#define NFSDSRMUNLOCK() mtx_unlock(&nfsrv_dsrmlock_mtx) -#define NFSDWRPCLOCKMUTEXPTR (&nfsrv_dwrpclock_mtx) -#define NFSDWRPCLOCK() mtx_lock(&nfsrv_dwrpclock_mtx) -#define NFSDWRPCUNLOCK() mtx_unlock(&nfsrv_dwrpclock_mtx) -#define NFSDSRPCLOCKMUTEXPTR (&nfsrv_dsrpclock_mtx) -#define NFSDSRPCLOCK() mtx_lock(&nfsrv_dsrpclock_mtx) -#define NFSDSRPCUNLOCK() mtx_unlock(&nfsrv_dsrpclock_mtx) -#define NFSDARPCLOCKMUTEXPTR (&nfsrv_darpclock_mtx) -#define NFSDARPCLOCK() mtx_lock(&nfsrv_darpclock_mtx) -#define NFSDARPCUNLOCK() mtx_unlock(&nfsrv_darpclock_mtx) #define NFSDDONTLISTMUTEXPTR (&nfsrv_dontlistlock_mtx) #define NFSDDONTLISTLOCK() mtx_lock(&nfsrv_dontlistlock_mtx) #define NFSDDONTLISTUNLOCK() mtx_unlock(&nfsrv_dontlistlock_mtx) Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Sat May 19 19:30:42 2018 (r333888) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Sat May 19 19:46:57 2018 (r333889) @@ -69,11 +69,6 @@ extern struct nfsstatsv1 nfsstatsv1; extern struct nfslayouthash *nfslayouthash; extern int nfsrv_layouthashsize; extern struct mtx nfsrv_dslock_mtx; -extern struct mtx nfsrv_dsclock_mtx; -extern struct mtx nfsrv_dsrmlock_mtx; -extern struct mtx nfsrv_dwrpclock_mtx; -extern struct mtx nfsrv_dsrpclock_mtx; -extern struct mtx nfsrv_darpclock_mtx; extern int nfs_pnfsiothreads; extern struct nfsdontlisthead nfsrv_dontlisthead; extern volatile int nfsrv_dontlistlen; From owner-svn-src-projects@freebsd.org Sat May 19 23:50:55 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 98368EE8D69 for ; Sat, 19 May 2018 23:50:55 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4C93B8530A; Sat, 19 May 2018 23:50:55 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2F1B4662E; Sat, 19 May 2018 23:50:55 +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 w4JNotpO026553; Sat, 19 May 2018 23:50:55 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4JNotRh026552; Sat, 19 May 2018 23:50:55 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805192350.w4JNotRh026552@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sat, 19 May 2018 23:50:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r333904 - projects/pnfs-planb-server/sys/fs/nfs X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/pnfs-planb-server/sys/fs/nfs X-SVN-Commit-Revision: 333904 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.26 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: Sat, 19 May 2018 23:50:55 -0000 Author: rmacklem Date: Sat May 19 23:50:54 2018 New Revision: 333904 URL: https://svnweb.freebsd.org/changeset/base/333904 Log: Make a slight change to the handling of a setting of vfs.nfs.pnfsiothreads=0. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Sat May 19 23:49:13 2018 (r333903) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonport.c Sat May 19 23:50:54 2018 (r333904) @@ -725,7 +725,9 @@ nfs_pnfsio(task_fn_t *func, void *context) pio = (struct pnfsio *)context; if (pnfsioq == NULL) { - if (nfs_pnfsiothreads <= 0) + if (nfs_pnfsiothreads == 0) + return (EPERM); + if (nfs_pnfsiothreads < 0) nfs_pnfsiothreads = mp_ncpus * 4; pnfsioq = taskqueue_create("pnfsioq", M_WAITOK, taskqueue_thread_enqueue, &pnfsioq);