From owner-svn-src-projects@freebsd.org Sat Aug 5 23:50:39 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 4A910DD1AC4 for ; Sat, 5 Aug 2017 23:50:39 +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 25A016808B; Sat, 5 Aug 2017 23:50:39 +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 v75Nocl7089329; Sat, 5 Aug 2017 23:50:38 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v75Nocbb089327; Sat, 5 Aug 2017 23:50:38 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708052350.v75Nocbb089327@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sat, 5 Aug 2017 23:50:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322110 - in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322110 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: Sat, 05 Aug 2017 23:50:39 -0000 Author: rmacklem Date: Sat Aug 5 23:50:37 2017 New Revision: 322110 URL: https://svnweb.freebsd.org/changeset/base/322110 Log: Add a layouttype field to the nfslayout structure. This doesn't affect semantics at this time, but helps prepare the code for the addition of Flex files layout support. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsrvstate.h projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsrvstate.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsrvstate.h Sat Aug 5 20:57:34 2017 (r322109) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsrvstate.h Sat Aug 5 23:50:37 2017 (r322110) @@ -128,7 +128,8 @@ struct nfslayout { nfsv4stateid_t lay_stateid; nfsquad_t lay_clientid; fhandle_t lay_fh; - uint16_t lay_layoutlen; + uint32_t lay_layoutlen; + uint16_t lay_type; uint8_t lay_read; uint8_t lay_rw; char lay_xdr[0]; Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Sat Aug 5 20:57:34 2017 (r322109) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Sat Aug 5 23:50:37 2017 (r322110) @@ -192,7 +192,7 @@ static int nfsrv_setdsserver(char *dspathp, NFSPROC_T static void nfsrv_allocdevid(struct nfsdevice *ds, char *addr, char *dnshost); static void nfsrv_freealldevids(void); static int nfsrv_findlayout(struct nfsrv_descript *nd, fhandle_t *fhp, - NFSPROC_T *, struct nfslayout **lypp); + int laytype, NFSPROC_T *, struct nfslayout **lypp); static int nfsrv_fndclid(nfsquad_t *clidvec, nfsquad_t clid, int clidcnt); /* @@ -6253,7 +6253,7 @@ nfsrv_layoutget(struct nfsrv_descript *nd, vnode_t vp, /* First, see if a layout already exists and return if found. */ lhyp = NFSLAYOUTHASH(&fh); NFSLOCKLAYOUT(lhyp); - error = nfsrv_findlayout(nd, &fh, p, &lyp); + error = nfsrv_findlayout(nd, &fh, layouttype, p, &lyp); NFSD_DEBUG(4, "layoutget findlay=%d\n", error); if (error == 0) { /* @@ -6289,6 +6289,7 @@ nfsrv_layoutget(struct nfsrv_descript *nd, vnode_t vp, lyp = malloc(sizeof(struct nfslayout) + NFSX_V4FILELAYOUT, M_NFSDSTATE, M_WAITOK | M_ZERO); + lyp->lay_type = layouttype; if (*iomode == NFSLAYOUTIOMODE_RW) lyp->lay_rw = 1; else @@ -6309,7 +6310,6 @@ nfsrv_layoutget(struct nfsrv_descript *nd, vnode_t vp, * that should cover most/all arches w.r.t. PAGE_SIZE. */ *tl++ = txdr_unsigned(NFSFLAYUTIL_STRIPE_MASK & ~0xffff); - *tl++ = 0; /* 1st stripe index. */ pattern_offset = 0; txdr_hyper(pattern_offset, tl); tl += 2; /* Pattern offset. */ @@ -6358,7 +6358,7 @@ nfsrv_layoutreturn(struct nfsrv_descript *nd, vnode_t if (error == 0) { lhyp = NFSLAYOUTHASH(&fh); NFSLOCKLAYOUT(lhyp); - error = nfsrv_findlayout(nd, &fh, p, &lyp); + error = nfsrv_findlayout(nd, &fh, layouttype, p, &lyp); NFSD_DEBUG(4, "layoutret findlay=%d\n", error); if (error == 0) { NFSD_DEBUG(4, "nfsrv_layoutreturn: stateid %d" @@ -6409,8 +6409,8 @@ nfsrv_layoutreturn(struct nfsrv_descript *nd, vnode_t * Look for an existing layout. */ static int -nfsrv_findlayout(struct nfsrv_descript *nd, fhandle_t *fhp, NFSPROC_T *p, - struct nfslayout **lypp) +nfsrv_findlayout(struct nfsrv_descript *nd, fhandle_t *fhp, int laytype, + NFSPROC_T *p, struct nfslayout **lypp) { struct nfslayouthash *lhyp; struct nfslayout *lyp; @@ -6423,7 +6423,8 @@ nfsrv_findlayout(struct nfsrv_descript *nd, fhandle_t lhyp = NFSLAYOUTHASH(fhp); LIST_FOREACH(lyp, &lhyp->list, lay_list) { if (NFSBCMP(&lyp->lay_fh, fhp, sizeof(*fhp)) == 0 && - lyp->lay_clientid.qval == nd->nd_clientid.qval) + lyp->lay_clientid.qval == nd->nd_clientid.qval && + lyp->lay_type == laytype) break; } if (lyp != NULL)