hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/fs/overlayfs/util.c
....@@ -98,14 +98,30 @@
9898 return oe;
9999 }
100100
101
+#define OVL_D_REVALIDATE (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE)
102
+
101103 bool ovl_dentry_remote(struct dentry *dentry)
102104 {
103
- return dentry->d_flags &
104
- (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE);
105
+ return dentry->d_flags & OVL_D_REVALIDATE;
105106 }
106107
107
-void ovl_dentry_update_reval(struct dentry *dentry, struct dentry *upperdentry,
108
- unsigned int mask)
108
+void ovl_dentry_update_reval(struct dentry *dentry, struct dentry *realdentry)
109
+{
110
+ if (!ovl_dentry_remote(realdentry))
111
+ return;
112
+
113
+ spin_lock(&dentry->d_lock);
114
+ dentry->d_flags |= realdentry->d_flags & OVL_D_REVALIDATE;
115
+ spin_unlock(&dentry->d_lock);
116
+}
117
+
118
+void ovl_dentry_init_reval(struct dentry *dentry, struct dentry *upperdentry)
119
+{
120
+ return ovl_dentry_init_flags(dentry, upperdentry, OVL_D_REVALIDATE);
121
+}
122
+
123
+void ovl_dentry_init_flags(struct dentry *dentry, struct dentry *upperdentry,
124
+ unsigned int mask)
109125 {
110126 struct ovl_entry *oe = OVL_E(dentry);
111127 unsigned int i, flags = 0;