The branch releng/13.0 has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=c2007457027d54f60d4558b4e8f90673596357a2

commit c2007457027d54f60d4558b4e8f90673596357a2
Author:     Konstantin Belousov <k...@freebsd.org>
AuthorDate: 2021-02-03 11:02:18 +0000
Commit:     Konstantin Belousov <k...@freebsd.org>
CommitDate: 2021-02-25 20:48:28 +0000

    vn_open(): If the vnode is reclaimed during open(2), do not return error.
    
    Approved by:    re (delphij, gjb)
    
    (cherry picked from commit ee965dfa64929227ced8adb68900c35f877480e7)
---
 sys/fs/deadfs/dead_vnops.c | 11 +++++++++--
 sys/kern/vfs_vnops.c       |  2 --
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c
index 09c3c996ee0e..324bbafd7caf 100644
--- a/sys/fs/deadfs/dead_vnops.c
+++ b/sys/fs/deadfs/dead_vnops.c
@@ -45,6 +45,7 @@
  */
 static vop_lookup_t    dead_lookup;
 static vop_open_t      dead_open;
+static vop_close_t     dead_close;
 static vop_getwritemount_t dead_getwritemount;
 static vop_rename_t    dead_rename;
 static vop_unset_text_t        dead_unset_text;
@@ -55,6 +56,7 @@ struct vop_vector dead_vnodeops = {
        .vop_access =           VOP_EBADF,
        .vop_advlock =          VOP_EBADF,
        .vop_bmap =             VOP_EBADF,
+       .vop_close =            dead_close,
        .vop_create =           VOP_PANIC,
        .vop_getattr =          VOP_EBADF,
        .vop_getwritemount =    dead_getwritemount,
@@ -104,13 +106,18 @@ dead_lookup(struct vop_lookup_args *ap)
 }
 
 /*
- * Open always fails as if device did not exist.
+ * Silently succeed open and close.
  */
 static int
 dead_open(struct vop_open_args *ap)
 {
+       return (0);
+}
 
-       return (ENXIO);
+static int
+dead_close(struct vop_close_args *ap)
+{
+       return (0);
 }
 
 int
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 1e52a797a1f7..3ec2662dfcd8 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -356,8 +356,6 @@ vn_open_vnode_advlock(struct vnode *vp, int fmode, struct 
file *fp)
                fp->f_flag |= FHASLOCK;
 
        vn_lock(vp, lock_flags | LK_RETRY);
-       if (error == 0 && VN_IS_DOOMED(vp))
-               error = ENOENT;
        return (error);
 }
 
_______________________________________________
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-unsubscr...@freebsd.org"

Reply via email to