git: 3f2ac12e658c - stable/13 - nfscl: Partially revert commit 867c27c23a5c
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 09 Jun 2022 04:16:12 UTC
The branch stable/13 has been updated by rmacklem:
URL: https://cgit.FreeBSD.org/src/commit/?id=3f2ac12e658c3e9b36fcd501e225cb3261f9c388
commit 3f2ac12e658c3e9b36fcd501e225cb3261f9c388
Author: Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2021-12-16 22:30:37 +0000
Commit: Rick Macklem <rmacklem@FreeBSD.org>
CommitDate: 2022-06-09 04:15:32 +0000
nfscl: Partially revert commit 867c27c23a5c
Commit 867c27c23a5c enabled the n_directio_opens code
in open/close, which sets/clears NNONCACHE, for
IO_APPEND. This code should not be enabled unless
newnfs_directio_enable is non-zero.
This patch reverts that part of commit 867c27c23a5c.
A future patch that fixes the case where the
file that is being written IO_APPEND is mmap()'d.
(cherry picked from commit 150da1e3cd51e552f7d6bc159b387e540c5a3733)
---
sys/fs/nfsclient/nfs_clvnops.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
index 538f029a8bfd..38b637c5c062 100644
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -707,8 +707,8 @@ nfs_open(struct vop_open_args *ap)
/*
* If the object has >= 1 O_DIRECT active opens, we disable caching.
*/
- if (vp->v_type == VREG && ((newnfs_directio_enable && (fmode &
- O_DIRECT)) || (fmode & O_APPEND))) {
+ if (newnfs_directio_enable && (fmode & O_DIRECT) &&
+ (vp->v_type == VREG)) {
if (np->n_directio_opens == 0) {
NFSUNLOCKNODE(np);
if (VOP_ISLOCKED(vp) != LK_EXCLUSIVE) {
@@ -965,11 +965,11 @@ nfs_close(struct vop_close_args *ap)
error = nfscl_maperr(ap->a_td, error, (uid_t)0,
(gid_t)0);
}
- if (vp->v_type == VREG && ((newnfs_directio_enable && (fmode &
- O_DIRECT)) || (fmode & O_APPEND))) {
+ if (newnfs_directio_enable)
KASSERT((np->n_directio_asyncwr == 0),
("nfs_close: dirty unflushed (%d) directio buffers\n",
np->n_directio_asyncwr));
+ if (newnfs_directio_enable && (fmode & O_DIRECT) && (vp->v_type == VREG)) {
NFSLOCKNODE(np);
KASSERT((np->n_directio_opens > 0),
("nfs_close: unexpectedly value (0) of n_directio_opens\n"));