Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/ufs Don't cache id's for vnodes that have ACLs. ok chs@



details:   https://anonhg.NetBSD.org/src/rev/8903091d8410
branches:  trunk
changeset: 1013060:8903091d8410
user:      christos <christos%NetBSD.org@localhost>
date:      Thu Aug 20 20:28:13 2020 +0000

description:
Don't cache id's for vnodes that have ACLs. ok chs@

diffstat:

 sys/ufs/ffs/ffs_vfsops.c |   8 ++++----
 sys/ufs/ufs/inode.h      |  10 +++++++++-
 sys/ufs/ufs/ufs_vnops.c  |  10 +++++-----
 3 files changed, 18 insertions(+), 10 deletions(-)

diffs (105 lines):

diff -r b510bb22a158 -r 8903091d8410 sys/ufs/ffs/ffs_vfsops.c
--- a/sys/ufs/ffs/ffs_vfsops.c  Thu Aug 20 19:43:42 2020 +0000
+++ b/sys/ufs/ffs/ffs_vfsops.c  Thu Aug 20 20:28:13 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ffs_vfsops.c,v 1.371 2020/07/05 20:37:40 christos Exp $        */
+/*     $NetBSD: ffs_vfsops.c,v 1.372 2020/08/20 20:28:13 christos Exp $        */
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.371 2020/07/05 20:37:40 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.372 2020/08/20 20:28:13 christos Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -2139,7 +2139,7 @@
                ip->i_gid = ip->i_ffs1_ogid;                    /* XXX */
        }                                                       /* XXX */
        uvm_vnp_setsize(vp, ip->i_size);
-       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, true);
+       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, !HAS_ACLS(ip));
        *new_key = &ip->i_number;
        return 0;
 }
@@ -2261,7 +2261,7 @@
        }
 
        uvm_vnp_setsize(vp, ip->i_size);
-       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, true);
+       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, !HAS_ACLS(ip));
        *new_key = &ip->i_number;
        return 0;
 }
diff -r b510bb22a158 -r 8903091d8410 sys/ufs/ufs/inode.h
--- a/sys/ufs/ufs/inode.h       Thu Aug 20 19:43:42 2020 +0000
+++ b/sys/ufs/ufs/inode.h       Thu Aug 20 20:28:13 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: inode.h,v 1.77 2020/04/18 19:18:34 christos Exp $      */
+/*     $NetBSD: inode.h,v 1.78 2020/08/20 20:28:13 christos Exp $      */
 
 /*
  * Copyright (c) 1982, 1989, 1993
@@ -238,6 +238,14 @@
 #if defined(_KERNEL)
 
 /*
+ * This macro does not differentiate between having extattrs and having
+ * extattrs containing ACLS, but that's ok since it is only used to
+ * determine if we are eligible for namei cache and we can be pessimistic
+ */
+#define HAS_ACLS(ip) \
+    ((ip)->i_ump->um_fstype == UFS2 && (ip)->i_ffs2_extsize > 0)
+
+/*
  * The DIP macro is used to access fields in the dinode that are
  * not cached in the inode itself.
  */
diff -r b510bb22a158 -r 8903091d8410 sys/ufs/ufs/ufs_vnops.c
--- a/sys/ufs/ufs/ufs_vnops.c   Thu Aug 20 19:43:42 2020 +0000
+++ b/sys/ufs/ufs/ufs_vnops.c   Thu Aug 20 20:28:13 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ufs_vnops.c,v 1.255 2020/05/18 08:28:44 hannken Exp $  */
+/*     $NetBSD: ufs_vnops.c,v 1.256 2020/08/20 20:28:13 christos Exp $ */
 
 /*-
  * Copyright (c) 2008, 2020 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.255 2020/05/18 08:28:44 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.256 2020/08/20 20:28:13 christos Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -669,7 +669,7 @@
        }
        VN_KNOTE(vp, NOTE_ATTRIB);
 out:
-       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, true);
+       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, !HAS_ACLS(ip));
        return (error);
 }
 
@@ -740,7 +740,7 @@
        ip->i_flag |= IN_CHANGE;
        DIP_ASSIGN(ip, mode, ip->i_mode);
        UFS_WAPBL_UPDATE(vp, NULL, NULL, 0);
-       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, true);
+       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, !HAS_ACLS(ip));
        return (0);
 }
 
@@ -810,7 +810,7 @@
 #endif /* QUOTA || QUOTA2 */
        ip->i_flag |= IN_CHANGE;
        UFS_WAPBL_UPDATE(vp, NULL, NULL, 0);
-       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, true);
+       cache_enter_id(vp, ip->i_mode, ip->i_uid, ip->i_gid, !HAS_ACLS(ip));
        return (0);
 }
 



Home | Main Index | Thread Index | Old Index