Revert "Android: sdcardfs: Don't do d_add for lower fs"
authorDaniel Rosenberg <drosen@google.com>
Thu, 20 Apr 2017 19:00:30 +0000 (12:00 -0700)
committerStricted <info@stricted.net>
Thu, 11 Oct 2018 16:03:38 +0000 (18:03 +0200)
This reverts commit 60df9f12992bc067216078ae756066c5d7c74d87.

This change caused issues for sdcardfs on top of vfat

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

fs/sdcardfs/lookup.c

index 666f9eb41e784089a2a515eaec3f30afbcb117be..3ac40fead4908d7221504e3435b81f3470f86be9 100644 (file)
@@ -368,15 +368,17 @@ put_name:
        dname.len = name->len;
        dname.hash = full_name_hash(dname.name, dname.len);
        lower_dentry = d_lookup(lower_dir_dentry, &dname);
+       if (lower_dentry)
+               goto setup_lower;
+
+       lower_dentry = d_alloc(lower_dir_dentry, &dname);
        if (!lower_dentry) {
-               /* We called vfs_path_lookup earlier, and did not get a negative
-                * dentry then. Don't confuse the lower filesystem by forcing one
-                * on it now...
-                */
-               err = -ENOENT;
+               err = -ENOMEM;
                goto out;
        }
+       d_add(lower_dentry, NULL); /* instantiate and hash */
 
+setup_lower:
        lower_path.dentry = lower_dentry;
        lower_path.mnt = mntget(lower_dir_mnt);
        sdcardfs_set_lower_path(dentry, &lower_path);