--- fs/fuse/dir.c | 2 +- fs/fuse/file.c | 2 +- fs/fuse/fuse_i.h | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1167,7 +1167,7 @@ static int fuse_setattr(struct dentry *e return fuse_do_setattr(entry, attr, NULL); } -static int fuse_getattr(struct vfsmount *mnt, struct dentry *entry, +int fuse_getattr(struct vfsmount *mnt, struct dentry *entry, struct kstat *stat) { struct inode *inode = entry->d_inode; --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -855,7 +855,7 @@ static int fuse_file_fgetattr(struct fil if (!fuse_allow_task(fc, current)) return -EACCES; - return fuse_update_attributes(inode, stat, file, NULL); + return fuse_getattr(file->f_vfsmnt, file->f_dentry, stat); } static sector_t fuse_bmap(struct address_space *mapping, sector_t block) --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -597,3 +597,6 @@ int fuse_valid_type(int m); int fuse_allow_task(struct fuse_conn *fc, struct task_struct *task); u64 fuse_lock_owner_id(struct fuse_conn *fc, fl_owner_t id); + +int fuse_getattr(struct vfsmount *mnt, struct dentry *entry, + struct kstat *stat);