ovl: update of dentry revalidate flags after copy up
[platform/kernel/linux-starfive.git] / fs / overlayfs / util.c
index 81a57a8..850e8d1 100644 (file)
@@ -94,14 +94,30 @@ struct ovl_entry *ovl_alloc_entry(unsigned int numlower)
        return oe;
 }
 
+#define OVL_D_REVALIDATE (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE)
+
 bool ovl_dentry_remote(struct dentry *dentry)
 {
-       return dentry->d_flags &
-               (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE);
+       return dentry->d_flags & OVL_D_REVALIDATE;
+}
+
+void ovl_dentry_update_reval(struct dentry *dentry, struct dentry *realdentry)
+{
+       if (!ovl_dentry_remote(realdentry))
+               return;
+
+       spin_lock(&dentry->d_lock);
+       dentry->d_flags |= realdentry->d_flags & OVL_D_REVALIDATE;
+       spin_unlock(&dentry->d_lock);
+}
+
+void ovl_dentry_init_reval(struct dentry *dentry, struct dentry *upperdentry)
+{
+       return ovl_dentry_init_flags(dentry, upperdentry, OVL_D_REVALIDATE);
 }
 
-void ovl_dentry_update_reval(struct dentry *dentry, struct dentry *upperdentry,
-                            unsigned int mask)
+void ovl_dentry_init_flags(struct dentry *dentry, struct dentry *upperdentry,
+                          unsigned int mask)
 {
        struct ovl_entry *oe = OVL_E(dentry);
        unsigned int i, flags = 0;