ANDROID: sdcardfs: Use lower getattr times/size
authorDaniel Rosenberg <drosen@google.com>
Tue, 30 Jan 2018 05:31:21 +0000 (21:31 -0800)
committerStricted <info@stricted.net>
Thu, 11 Oct 2018 16:03:46 +0000 (18:03 +0200)
We now use the lower filesystem's getattr for time and size related
information.

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

fs/sdcardfs/inode.c

index 36ae048edd77a9244ac8a37318e2487b1164a929..ccca427679debbd1423ba65c8a0d5475a6f53954 100644 (file)
@@ -828,8 +828,8 @@ out_err:
        return err;
 }
 
-static int sdcardfs_fillattr(struct vfsmount *mnt,
-                               struct inode *inode, struct kstat *stat)
+static int sdcardfs_fillattr(struct vfsmount *mnt, struct inode *inode,
+                               struct kstat *lower_stat, struct kstat *stat)
 {
        struct sdcardfs_inode_info *info = SDCARDFS_I(inode);
        struct sdcardfs_inode_data *top = top_data_get(info);
@@ -845,12 +845,12 @@ static int sdcardfs_fillattr(struct vfsmount *mnt,
        stat->uid = make_kuid(&init_user_ns, top->d_uid);
        stat->gid = make_kgid(&init_user_ns, get_gid(mnt, sb, top));
        stat->rdev = inode->i_rdev;
-       stat->size = i_size_read(inode);
-       stat->atime = inode->i_atime;
-       stat->mtime = inode->i_mtime;
-       stat->ctime = inode->i_ctime;
-       stat->blksize = (1 << inode->i_blkbits);
-       stat->blocks = inode->i_blocks;
+       stat->size = lower_stat->size;
+       stat->atime = lower_stat->atime;
+       stat->mtime = lower_stat->mtime;
+       stat->ctime = lower_stat->ctime;
+       stat->blksize = lower_stat->blksize;
+       stat->blocks = lower_stat->blocks;
        data_put(top);
        return 0;
 }
@@ -876,8 +876,7 @@ static int sdcardfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
                goto out;
        sdcardfs_copy_and_fix_attrs(dentry->d_inode,
                              lower_path.dentry->d_inode);
-       err = sdcardfs_fillattr(mnt, dentry->d_inode, stat);
-       stat->blocks = lower_stat.blocks;
+       err = sdcardfs_fillattr(mnt, dentry->d_inode, &lower_stat, stat);
 out:
        sdcardfs_put_lower_path(dentry, &lower_path);
        return err;