ANDROID: sdcardfs: Call lower fs's revalidate
authorDaniel Rosenberg <drosen@google.com>
Tue, 25 Apr 2017 02:49:02 +0000 (19:49 -0700)
committerDaniel Rosenberg <drosen@google.com>
Tue, 30 Jan 2018 03:40:09 +0000 (19:40 -0800)
We should be calling the lower filesystem's revalidate
inside of sdcardfs's revalidate, as wrapfs does.

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35766959
Change-Id: I939d1c4192fafc1e21678aeab43fe3d588b8e2f4

fs/sdcardfs/dentry.c

index afd97710f7ad051cefb5792a32e946af755491b2..ae2b4babe2e56f443119c44e3133386e73df8a2c 100644 (file)
@@ -60,6 +60,14 @@ static int sdcardfs_d_revalidate(struct dentry *dentry, unsigned int flags)
        lower_dentry = lower_path.dentry;
        lower_cur_parent_dentry = dget_parent(lower_dentry);
 
+       if ((lower_dentry->d_flags & DCACHE_OP_REVALIDATE)) {
+               err = lower_dentry->d_op->d_revalidate(lower_dentry, flags);
+               if (err == 0) {
+                       d_drop(dentry);
+                       goto out;
+               }
+       }
+
        spin_lock(&lower_dentry->d_lock);
        if (d_unhashed(lower_dentry)) {
                spin_unlock(&lower_dentry->d_lock);