Loading fs/fuse/dir.c +13 −17 Original line number Diff line number Diff line Loading @@ -923,33 +923,29 @@ static int fuse_do_getattr(struct inode *inode, struct kstat *stat, return err; } int fuse_update_attributes(struct inode *inode, struct kstat *stat, struct file *file, bool *refreshed) static int fuse_update_get_attr(struct inode *inode, struct file *file, struct kstat *stat) { struct fuse_inode *fi = get_fuse_inode(inode); int err; bool r; int err = 0; if (time_before64(fi->i_time, get_jiffies_64())) { r = true; forget_all_cached_acls(inode); err = fuse_do_getattr(inode, stat, file); } else { r = false; err = 0; if (stat) { } else if (stat) { generic_fillattr(inode, stat); stat->mode = fi->orig_i_mode; stat->ino = fi->orig_ino; } } if (refreshed != NULL) *refreshed = r; return err; } int fuse_update_attributes(struct inode *inode, struct file *file) { return fuse_update_get_attr(inode, file, NULL); } int fuse_reverse_inval_entry(struct super_block *sb, u64 parent_nodeid, u64 child_nodeid, struct qstr *name) { Loading Loading @@ -1786,7 +1782,7 @@ static int fuse_getattr(const struct path *path, struct kstat *stat, if (!fuse_allow_current_process(fc)) return -EACCES; return fuse_update_attributes(inode, stat, NULL, NULL); return fuse_update_get_attr(inode, NULL, stat); } static const struct inode_operations fuse_dir_inode_operations = { Loading fs/fuse/file.c +4 −4 Original line number Diff line number Diff line Loading @@ -926,7 +926,7 @@ static ssize_t fuse_file_read_iter(struct kiocb *iocb, struct iov_iter *to) if (fc->auto_inval_data || (iocb->ki_pos + iov_iter_count(to) > i_size_read(inode))) { int err; err = fuse_update_attributes(inode, NULL, iocb->ki_filp, NULL); err = fuse_update_attributes(inode, iocb->ki_filp); if (err) return err; } Loading Loading @@ -1177,7 +1177,7 @@ static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from) if (get_fuse_conn(inode)->writeback_cache) { /* Update size (EOF optimization) and mode (SUID clearing) */ err = fuse_update_attributes(mapping->host, NULL, file, NULL); err = fuse_update_attributes(mapping->host, file); if (err) return err; Loading Loading @@ -2308,7 +2308,7 @@ static loff_t fuse_lseek(struct file *file, loff_t offset, int whence) return vfs_setpos(file, outarg.offset, inode->i_sb->s_maxbytes); fallback: err = fuse_update_attributes(inode, NULL, file, NULL); err = fuse_update_attributes(inode, file); if (!err) return generic_file_llseek(file, offset, whence); else Loading @@ -2328,7 +2328,7 @@ static loff_t fuse_file_llseek(struct file *file, loff_t offset, int whence) break; case SEEK_END: inode_lock(inode); retval = fuse_update_attributes(inode, NULL, file, NULL); retval = fuse_update_attributes(inode, file); if (!retval) retval = generic_file_llseek(file, offset, whence); inode_unlock(inode); Loading fs/fuse/fuse_i.h +1 −2 Original line number Diff line number Diff line Loading @@ -904,8 +904,7 @@ u64 fuse_lock_owner_id(struct fuse_conn *fc, fl_owner_t id); void fuse_update_ctime(struct inode *inode); int fuse_update_attributes(struct inode *inode, struct kstat *stat, struct file *file, bool *refreshed); int fuse_update_attributes(struct inode *inode, struct file *file); void fuse_flush_writepages(struct inode *inode); Loading Loading
fs/fuse/dir.c +13 −17 Original line number Diff line number Diff line Loading @@ -923,33 +923,29 @@ static int fuse_do_getattr(struct inode *inode, struct kstat *stat, return err; } int fuse_update_attributes(struct inode *inode, struct kstat *stat, struct file *file, bool *refreshed) static int fuse_update_get_attr(struct inode *inode, struct file *file, struct kstat *stat) { struct fuse_inode *fi = get_fuse_inode(inode); int err; bool r; int err = 0; if (time_before64(fi->i_time, get_jiffies_64())) { r = true; forget_all_cached_acls(inode); err = fuse_do_getattr(inode, stat, file); } else { r = false; err = 0; if (stat) { } else if (stat) { generic_fillattr(inode, stat); stat->mode = fi->orig_i_mode; stat->ino = fi->orig_ino; } } if (refreshed != NULL) *refreshed = r; return err; } int fuse_update_attributes(struct inode *inode, struct file *file) { return fuse_update_get_attr(inode, file, NULL); } int fuse_reverse_inval_entry(struct super_block *sb, u64 parent_nodeid, u64 child_nodeid, struct qstr *name) { Loading Loading @@ -1786,7 +1782,7 @@ static int fuse_getattr(const struct path *path, struct kstat *stat, if (!fuse_allow_current_process(fc)) return -EACCES; return fuse_update_attributes(inode, stat, NULL, NULL); return fuse_update_get_attr(inode, NULL, stat); } static const struct inode_operations fuse_dir_inode_operations = { Loading
fs/fuse/file.c +4 −4 Original line number Diff line number Diff line Loading @@ -926,7 +926,7 @@ static ssize_t fuse_file_read_iter(struct kiocb *iocb, struct iov_iter *to) if (fc->auto_inval_data || (iocb->ki_pos + iov_iter_count(to) > i_size_read(inode))) { int err; err = fuse_update_attributes(inode, NULL, iocb->ki_filp, NULL); err = fuse_update_attributes(inode, iocb->ki_filp); if (err) return err; } Loading Loading @@ -1177,7 +1177,7 @@ static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from) if (get_fuse_conn(inode)->writeback_cache) { /* Update size (EOF optimization) and mode (SUID clearing) */ err = fuse_update_attributes(mapping->host, NULL, file, NULL); err = fuse_update_attributes(mapping->host, file); if (err) return err; Loading Loading @@ -2308,7 +2308,7 @@ static loff_t fuse_lseek(struct file *file, loff_t offset, int whence) return vfs_setpos(file, outarg.offset, inode->i_sb->s_maxbytes); fallback: err = fuse_update_attributes(inode, NULL, file, NULL); err = fuse_update_attributes(inode, file); if (!err) return generic_file_llseek(file, offset, whence); else Loading @@ -2328,7 +2328,7 @@ static loff_t fuse_file_llseek(struct file *file, loff_t offset, int whence) break; case SEEK_END: inode_lock(inode); retval = fuse_update_attributes(inode, NULL, file, NULL); retval = fuse_update_attributes(inode, file); if (!retval) retval = generic_file_llseek(file, offset, whence); inode_unlock(inode); Loading
fs/fuse/fuse_i.h +1 −2 Original line number Diff line number Diff line Loading @@ -904,8 +904,7 @@ u64 fuse_lock_owner_id(struct fuse_conn *fc, fl_owner_t id); void fuse_update_ctime(struct inode *inode); int fuse_update_attributes(struct inode *inode, struct kstat *stat, struct file *file, bool *refreshed); int fuse_update_attributes(struct inode *inode, struct file *file); void fuse_flush_writepages(struct inode *inode); Loading