From nobody Wed Feb 8 22:27:13 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PBvkT3Qcnz3n1xX; Wed, 8 Feb 2023 22:27:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PBvkT2nCtz3x5r; Wed, 8 Feb 2023 22:27:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675895233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AoU3VOpj1nqojdMErEx637vQXgwmJMdocf/dXJ7YUN4=; b=QjHstmD4t3AOmymZDIEX8AU51az0kClu4ardjDZP9CmuAM2msL1qbIPWSaOQUVFvbGyflB pnb+3/aaME0eaP5N/YnYRYbz9xKqiDu6iMKbMO9vaEz1XWg6NUoxHowtutJQ1TDXzlxl70 2CmvKBqGHrZC9ngP4Bg2Cs46FE/68xp9kHFDE2Mx5ttnIutUUCnWXfzQN9qCNJp/yirsj+ ezD9EZfqTdu1I4qpcehX4DpPKav8NwtG/EmLrinSZZkkEDWzvzxL1OnmHPMCTm/To9HZF0 R2NuDXpKYcTh1Da70Y23pvPGlIMuzJQhWsCMr2KEnzNMYGrGVJlRfpZ588FYxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675895233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AoU3VOpj1nqojdMErEx637vQXgwmJMdocf/dXJ7YUN4=; b=U78ohExJLGn90zgdHqZfLW0Jehn9lQHaU8U08Dtp3rZgc3tFVVIhwokur+hOBqESeNY0ZK jsCDyY3KPiuDOZi5tCbRmuqmRBJVlePEr8rSxqpB6NG0xZXwfsPkbdbqYglsyksWjy/Dt9 aHzGK4xTRFzC9pJu8f3JDwl3KBWsNDQwM2qJLu+aXcFdfAFJWhESUmgw+4dzV8Msh/pHnd VqDI2T1HqrgOzUfKq2d9Fjl/VrBcM5XYbFlKhc12OhGQD/XGpGknv38pBgy1AL1XH+RwRM P/IMApgXIIR2RUP/ETo/oN9lVK2NQMe72JTEy1n+0XNmUT6OAvvMeoLlOQBPXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675895233; a=rsa-sha256; cv=none; b=PBY3ja9on3cTY2+tEdO/gv/qxzZnw116E3qLMfmuTs9aTJxN8UrHa0OmpgVvEAGKCIfbMs FBXB89hQk9+GUEM5EVpF84HK/SNrwmlaopwQkko/dy4KaRIBCTTKFPR1KV8QlwIBA6uOY3 c4jy9h5bt1Ldd0E7K/1jj1eb1RKy0qGXquyUWQqKbSvNSLI2StWQCeq7+RmHQXID8BAEWi Hz3MUl0NmYvfm7ClzKzLe6wHpV3KlV9EX4l34AijRxjGLhZxN/15DNjgofYwkNqmFAhYRw zhUQJHmuPuga8xTeRpZI84voNxfnYX+wj3Kw1LM7RGJdsxsYEnDp3tC0z28vHw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PBvkT1qhFz1CtZ; Wed, 8 Feb 2023 22:27:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 318MRDYl081982; Wed, 8 Feb 2023 22:27:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 318MRDaE081981; Wed, 8 Feb 2023 22:27:13 GMT (envelope-from git) Date: Wed, 8 Feb 2023 22:27:13 GMT Message-Id: <202302082227.318MRDaE081981@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 847967bc4e19 - main - nfscl: Fix interaction between mmap'd and VOP_WRITE file updates List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 847967bc4e198a258b030a5864e64e029e7452e5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=847967bc4e198a258b030a5864e64e029e7452e5 commit 847967bc4e198a258b030a5864e64e029e7452e5 Author: Rick Macklem AuthorDate: 2023-02-08 22:25:01 +0000 Commit: Rick Macklem CommitDate: 2023-02-08 22:25:01 +0000 nfscl: Fix interaction between mmap'd and VOP_WRITE file updates asomers@ found a problem with the NFS client, where a write to an NFS mounted file done via mmap(2) was lost when fspacectl(2) was done before it. This turned out to be caused by clearing the dirty bit on pages when the client was doing commit RPCs, due to the second argument to vfs_busy_pages() being set to 1. Commit RPCs tell the server to commit previously written data to stable storage. However, Commit RPCs do not write data from the client to the server. As such, if the dirty bit on the page has been set by a mmap'd write to an address in the page, it should not be cleared. Clearing it causes the mmap'd write to by lost. This patch fixes the problem by changing the 2nd argument to vfs_busy_pages() to 0 for this case. I doubt this bug has affected many, since it was inherited from the old NFS client and was in 4.3 FreeBSD twenty years ago. Although fspacectl(2) is FreeBSD 14 specific, a write(2) would cause the same failure. Reviewed by: kib Tested by: asomers PR: 269328 MFC after: 1 week --- sys/fs/nfsclient/nfs_clvnops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index eeffce65a7db..3e9cf7e3a475 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -3015,7 +3015,7 @@ again: wcred = bp->b_wcred; else if (wcred != bp->b_wcred) wcred = NOCRED; - vfs_busy_pages(bp, 1); + vfs_busy_pages(bp, 0); BO_LOCK(bo); /*