From owner-dev-commits-src-main@freebsd.org Sat Jan 2 18:24:09 2021 Return-Path: Delivered-To: dev-commits-src-main@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8B9A14D99C9; Sat, 2 Jan 2021 18:24:09 +0000 (UTC) (envelope-from mark@markict.nl) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2060d.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e1b::60d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "GlobalSign Organization Validation CA - SHA256 - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4D7Vdz4qBrz4ksZ; Sat, 2 Jan 2021 18:24:06 +0000 (UTC) (envelope-from mark@markict.nl) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TMah0g6Ud1Avvc5pC+49zMxFko0Y9N7xdy6s7ucaZmznzxLnKbGPf7x6Tav0e+0uzqB6jo/E9zhdEIK90Wkov/No6GyVP5GUbfSeatUiGxisItbmUUsVJOqbFjEkqYUaNiBHUPF21+blTixWR6EpLV3udGq3kzNOJqFCvoeI7JWA1/A09kzlJagy1LjFTOmgIti3gTKJwnb3J40rjcinUgECLGX1udEn9SMqaG+YVKk+x1TuLJ2Mr9YDdaXzDn9YdNdZYcor5wkNoA6JfaTJOFWzh4rvYhCGel8c40s+pgrS1SXqZWkOuZDrSgEOUNXjpKOFOuHMYdsHVE0fY4dLlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/RjjWkeKgLJWmv+ej3TAoR4QZilQBqHlYAwSYx0QelE=; b=YdxXUQb0XUvOEm+ECvXeXaiSsz2Rn9Ut9l5fyZmowxOF4VCy4deRprIfEkUYGZc3VyqB65cfYnlZeTVL4Cb77BCftT+PhgVH6p57WdvHldel7U3IOzlkzeYRyhAfGKiy6bZq/PB9QIz/Znwz1Ob+EU9KHFZcm51OXydBJzKQA+3XVmEtM/3hyLcUOrE0Dz7d5hcfyTRcYmuAzLEBz+YUxWoDUhhinvi3vYn1jg9ILH9mqtgUsbdR2liR9YAjKbuBIfz2WUCepqR3+xxpJmy6/y0PSh+la1S4605kmhDshfTwIQy/P4z6ol0nUf/3VtAL9Dfx6BxwKU6uaXglad+19A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=markict.nl; dmarc=pass action=none header.from=markict.nl; dkim=pass header.d=markict.nl; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=markict.onmicrosoft.com; s=selector2-markict-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/RjjWkeKgLJWmv+ej3TAoR4QZilQBqHlYAwSYx0QelE=; b=Sd0egimdGEB8ugDkbUGHtioUc7npYhs9NmLP6SJRA3umXaWxtsNadhJpvkylVvqIacoX29P3IS30bnIF3qhWNSiFEEYKgmT95uxgxZuok9k5kwIvz54lqEpa4zIstI/gHKv2e7ihCx7fI41lX1AtERkmV2lsXrfk/SLyuoRHNKA= Received: from AM0PR08MB3363.eurprd08.prod.outlook.com (2603:10a6:208:e1::10) by AM0PR08MB3841.eurprd08.prod.outlook.com (2603:10a6:208:106::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3721.20; Sat, 2 Jan 2021 18:24:04 +0000 Received: from AM0PR08MB3363.eurprd08.prod.outlook.com ([fe80::c41d:98df:1cc0:936d]) by AM0PR08MB3363.eurprd08.prod.outlook.com ([fe80::c41d:98df:1cc0:936d%7]) with mapi id 15.20.3721.022; Sat, 2 Jan 2021 18:24:03 +0000 From: Mark de Groot To: "src-committers@FreeBSD.org" , "dev-commits-src-all@FreeBSD.org" , "dev-commits-src-main@FreeBSD.org" Subject: Re: git: 51a9b978e750 - main - nfs server: improve use of the VFS KPI Thread-Topic: git: 51a9b978e750 - main - nfs server: improve use of the VFS KPI Thread-Index: AQHW4TO0nm+xtDwQ5kOsVpcqt3Ohz6oUpmvJ Date: Sat, 2 Jan 2021 18:24:03 +0000 Message-ID: References: <202101021818.102IIK6C032104@gitrepo.freebsd.org> In-Reply-To: <202101021818.102IIK6C032104@gitrepo.freebsd.org> Accept-Language: nl-NL, en-US Content-Language: nl-NL X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [195.64.83.246] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d5fd804c-1aa7-4287-0480-08d8af4b9598 x-ms-traffictypediagnostic: AM0PR08MB3841: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1332; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: t17kdgdvXKrVcVYVzYtJbeM+LWHVnAPccQsk+ZPlhrz4PyPJ0fQQ/UIyaHiA6KRj28sgWBUTK8itzDuZq+pfyXMY5K/o/wQz0+fltg1DspscEDFVRHE1vwuFpVe5IAIqWzUB7qJs948FSFRuYRPIB5YFefJzebc9RkDAALvBy4y260dozIeN1z9N6yJ+Mz48K+8Kv1hf1LqRK3a0fDMNUOnEr0en+/bvbZBMAANLmHY8Qaxk8i3QPc8UUircpwCZhBmCpzplgDGgDONYr4nT0wrDFXaSSEBvWKQge2y48zQysfgTZl+SEcSpWRyhhJbmTCDK6b9lwrNojkbQM3ygRaiQL9qXAFnRbxyouEclelKvzSUlHSz3kLAAs7zavgjKOx3fGNbLLd0iz0VQYyftXdN3v6ED+A6Ee9jqzF8G3HMUsNN+qbX1AQIA18WT5Z0cUIYt6FAZS8F4Zs7xyKPBMw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB3363.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(396003)(39830400003)(376002)(346002)(136003)(66446008)(64756008)(52536014)(186003)(66946007)(478600001)(966005)(76116006)(19627405001)(5660300002)(7696005)(66476007)(66556008)(6506007)(83380400001)(110136005)(166002)(71200400001)(2906002)(8676002)(33656002)(8936002)(86362001)(316002)(26005)(55016002)(9686003)(450100002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?uTZK9Yv2g/4GmDoAMEGXC9ujseoHi+jEyKnxSndH2imrHPomWm5fsrOiwAde?= =?us-ascii?Q?dZp8eyBkSJfAPmpmoi3X0eG7dO1wDlelz5r+R8XTSvxakSbwvAN73ycs3ZHm?= =?us-ascii?Q?UWIXNqbnlR4aG7+1yw1a37SJUrcG6/wabesCgpQIghrJGfDIkI5ii3mDp57i?= =?us-ascii?Q?M+doHr2dbZORNHpKHpu8NsML/oP2JmQghtWJXWcC79qg5W/AEtCmFcolF5hp?= =?us-ascii?Q?gpe/PGi0sxPgfciEZiK4kE3ftl/kx9subWaoZigClbckqvv/i4jbA0hLxyXy?= =?us-ascii?Q?B1sEpqzZduO/hM55zAAQFLPR2utWSHmeA7vY76f2JbMBpWb6jN3427INx/hc?= =?us-ascii?Q?Sug3alBv0xHpL8AAY8R66Ucqqh2IMVIj5breKihvUP8qeJIV6InUlMQQ5Qj8?= =?us-ascii?Q?BcuARZhDMjSSqHctvV9KVXGPXNf9at3LJnmujXyzcjAaFaTFxnbiwe2w3B9/?= =?us-ascii?Q?JyvwHD/byMiqgmG3IKK293vzd38/eaazkC49w9w9NWztC+Ojdx6jPdelwh+T?= =?us-ascii?Q?DzqQYpDGbJqO3Mb3tKcsYViY4iYXSY5hXjAFutns2YEyHlPb0cI1GZc29i/5?= =?us-ascii?Q?0mUpmcCPOPwIuGJZBi+5yVtJ6iKLac5dFLfbybqvRLQMpvU0VfRl36m4Rxcz?= =?us-ascii?Q?7lm+m4mlKHE9c5NPXdNFLpCV2D9j4Il0yZuvNYeSeNkeuOGedQwg2QSTiXsV?= =?us-ascii?Q?l6x68Y0tO8GGp7MRWZlxnSfHynyrcT38HNDNb5hwIuTwUsBJXnoF7Qiu8GLS?= =?us-ascii?Q?uKJ/BGrrpMT71IL308iCkoCIMuYCUSxxp51NoWSzWngdhJ62A1Ru3fqfBsI/?= =?us-ascii?Q?fdjaYnN/kSyMx4VOfTIN6Ad/Q4JaAa0QLdu2XV2AZGsbhnAqdy9hNPZuDpVT?= =?us-ascii?Q?6O2ZAP+UyBFtCqifdkQW/NswVOgZ86A5NAmf90Kg6SxtDnuj/zH7scDx+j7x?= =?us-ascii?Q?mM4L8Vy+NIx2GgqN4BMU+Fkkn1ikgWvZjvDHuru8nsY=3D?= x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: markict.nl X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR08MB3363.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5fd804c-1aa7-4287-0480-08d8af4b9598 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jan 2021 18:24:03.8601 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 6f779486-6c93-41bc-a032-73d9e107a037 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: r7Lar2odP7WP3nFOem08ezZJMMUtF3dy4CsWvCoQjHAR2nE72vAROvhPaeu3F3yh X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3841 X-Rspamd-Queue-Id: 4D7Vdz4qBrz4ksZ X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=markict.onmicrosoft.com header.s=selector2-markict-onmicrosoft-com header.b=Sd0egimd; arc=pass (microsoft.com:s=arcselector9901:i=1); dmarc=none; spf=pass (mx1.freebsd.org: domain of mark@markict.nl designates 2a01:111:f400:7e1b::60d as permitted sender) smtp.mailfrom=mark@markict.nl X-Spamd-Result: default: False [-4.50 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; RBL_DBL_DONT_QUERY_IPS(0.00)[2a01:111:f400:7e1b::60d:from]; R_DKIM_ALLOW(-0.20)[markict.onmicrosoft.com:s=selector2-markict-onmicrosoft-com]; HAS_XOIP(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; FREEFALL_USER(0.00)[mark]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; R_SPF_ALLOW(-0.20)[+ip6:2a01:111:f400::/48]; DMARC_NA(0.00)[markict.nl]; SPAMHAUS_ZRD(0.00)[2a01:111:f400:7e1b::60d:from:127.0.2.255]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[markict.onmicrosoft.com:+]; NEURAL_HAM_SHORT(-1.00)[-1.000]; RCVD_IN_DNSWL_NONE(0.00)[2a01:111:f400:7e1b::60d:from]; TO_DN_EQ_ADDR_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:8075, ipnet:2a01:111:f000::/36, country:US]; ARC_ALLOW(-1.00)[microsoft.com:s=arcselector9901:i=1]; MAILMAN_DEST(0.00)[dev-commits-src-all,dev-commits-src-main] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.34 X-BeenThere: dev-commits-src-main@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for the main branch of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jan 2021 18:24:09 -0000 unsubscribe ________________________________ Van: owner-dev-commits-src-all@freebsd.org namens Konstantin Belousov Verzonden: zaterdag 2 januari 2021 19:18 Aan: src-committers@FreeBSD.org ; dev-commits-s= rc-all@FreeBSD.org ; dev-commits-src-main@= FreeBSD.org Onderwerp: git: 51a9b978e750 - main - nfs server: improve use of the VFS KP= I The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=3D51a9b978e75021415fdced616b4e= 4bc373a20a8a commit 51a9b978e75021415fdced616b4e4bc373a20a8a Author: Konstantin Belousov AuthorDate: 2021-01-01 15:35:44 +0000 Commit: Konstantin Belousov CommitDate: 2021-01-02 18:17:12 +0000 nfs server: improve use of the VFS KPI In particular, do not assume that vn_start_write() returns the same mp as it was passed in, or never returns error. Also be more accurate to return NULL vp and mp when error occured, to catch wrong control flow easier. Stop checking for NULL mp before calling vn_finished_write(), NULL mp is handled transparently by the function. Reviewed by: rmacklem Tested by: pho MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D27881 --- sys/fs/nfsserver/nfs_nfsdport.c | 33 ++++++++++++++++++++------------- sys/fs/nfsserver/nfs_nfsdsocket.c | 6 ++---- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdpor= t.c index e9a9443dc08c..727a83005fa0 100644 --- a/sys/fs/nfsserver/nfs_nfsdport.c +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -3243,28 +3243,35 @@ nfsd_fhtovp(struct nfsrv_descript *nd, struct nfsrv= fh *nfp, int lktype, struct vnode **vpp, struct nfsexstuff *exp, struct mount **mpp, int startwrite) { - struct mount *mp; + struct mount *mp, *mpw; struct ucred *credanon; fhandle_t *fhp; + int error; + if (mpp !=3D NULL) + *mpp =3D NULL; + *vpp =3D NULL; fhp =3D (fhandle_t *)nfp->nfsrvfh_data; - /* - * Check for the special case of the nfsv4root_fh. - */ mp =3D vfs_busyfs(&fhp->fh_fsid); - if (mpp !=3D NULL) - *mpp =3D mp; if (mp =3D=3D NULL) { - *vpp =3D NULL; nd->nd_repstat =3D ESTALE; goto out; } if (startwrite) { - vn_start_write(NULL, mpp, V_WAIT); + mpw =3D mp; + error =3D vn_start_write(NULL, &mpw, V_WAIT); + if (error !=3D 0) { + mpw =3D NULL; + vfs_unbusy(mp); + nd->nd_repstat =3D ESTALE; + goto out; + } if (lktype =3D=3D LK_SHARED && !(MNT_SHARED_WRITES(mp))) lktype =3D LK_EXCLUSIVE; - } + } else + mpw =3D NULL; + nd->nd_repstat =3D nfsvno_fhtovp(mp, fhp, nd->nd_nam, lktype, vpp,= exp, &credanon); vfs_unbusy(mp); @@ -3276,6 +3283,7 @@ nfsd_fhtovp(struct nfsrv_descript *nd, struct nfsrvfh= *nfp, int lktype, if (!nd->nd_repstat && exp->nes_exflag =3D=3D 0 && !(nd->nd_flag & ND_NFSV4)) { vput(*vpp); + *vpp =3D NULL; nd->nd_repstat =3D EACCES; } @@ -3336,11 +3344,10 @@ nfsd_fhtovp(struct nfsrv_descript *nd, struct nfsrv= fh *nfp, int lktype, if (credanon !=3D NULL) crfree(credanon); if (nd->nd_repstat) { - if (startwrite) - vn_finished_write(mp); + vn_finished_write(mpw); *vpp =3D NULL; - if (mpp !=3D NULL) - *mpp =3D NULL; + } else if (mpp !=3D NULL) { + *mpp =3D mpw; } out: diff --git a/sys/fs/nfsserver/nfs_nfsdsocket.c b/sys/fs/nfsserver/nfs_nfsds= ocket.c index 530ebb8a8cc8..e9602c352420 100644 --- a/sys/fs/nfsserver/nfs_nfsdsocket.c +++ b/sys/fs/nfsserver/nfs_nfsdsocket.c @@ -612,8 +612,7 @@ tryagain: nfsrvd_statstart(nfsv3to4op[nd->nd_procnum], /*now*/ NULL)= ; nfsrvd_statend(nfsv3to4op[nd->nd_procnum], /*bytes*/ 0, /*now*/ NULL, /*then*/ NULL); - if (mp !=3D NULL && nfsrv_writerpc[nd->nd_procnum] !=3D 0) - vn_finished_write(mp); + vn_finished_write(mp); goto out; } @@ -643,8 +642,7 @@ tryagain: error =3D (*(nfsrv3_procs0[nd->nd_procnum]))(nd, i= sdgram, vp, &nes); } - if (mp !=3D NULL && nfsrv_writerpc[nd->nd_procnum] !=3D 0) - vn_finished_write(mp); + vn_finished_write(mp); if (error =3D=3D 0 && nd->nd_repstat =3D=3D ERELOOKUP) { /* _______________________________________________ dev-commits-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all To unsubscribe, send any mail to "dev-commits-src-all-unsubscribe@freebsd.o= rg"