Lines Matching defs:inode
30 static void fuse_advise_use_readdirplus(struct inode *dir)
118 void fuse_invalidate_attr_mask(struct inode *inode, u32 mask)
120 set_mask_bits(&get_fuse_inode(inode)->inval_mask, 0, mask);
127 void fuse_invalidate_attr(struct inode *inode)
129 fuse_invalidate_attr_mask(inode, STATX_BASIC_STATS);
132 static void fuse_dir_changed(struct inode *dir)
142 void fuse_invalidate_atime(struct inode *inode)
144 if (!IS_RDONLY(inode))
145 fuse_invalidate_attr_mask(inode, STATX_ATIME);
191 * different inode, then let the VFS invalidate the dentry and redo
192 * the lookup once more. If the lookup results in the same inode,
197 struct inode *inode;
203 inode = d_inode_rcu(entry);
204 if (inode && fuse_is_bad(inode))
214 if (!inode)
221 fm = get_fuse_mount(inode);
239 fi = get_fuse_inode(inode);
240 if (outarg.nodeid != get_node_id(inode) ||
241 (bool) IS_AUTOMOUNT(inode) != (bool) (outarg.attr.flags & FUSE_ATTR_SUBMOUNT)) {
254 fuse_stale_inode(inode, outarg.generation, &outarg.attr))
257 forget_all_cached_acls(inode);
258 fuse_change_attributes(inode, &outarg.attr, NULL,
262 } else if (inode) {
263 fi = get_fuse_inode(inode);
318 /* Pass the FUSE inode of the mount for fuse_get_tree_submount() */
364 struct fuse_entry_out *outarg, struct inode **inode)
372 *inode = NULL;
399 *inode = fuse_iget(sb, outarg->nodeid, outarg->generation,
403 if (!*inode) {
415 static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry,
420 struct inode *inode;
430 &outarg, &inode);
440 if (inode && get_node_id(inode) == FUSE_ROOT_ID)
443 newent = d_splice_alias(inode, entry);
454 if (inode)
459 iput(inode);
548 static int get_create_supp_group(struct inode *dir, struct fuse_in_arg *ext)
576 struct inode *dir, struct dentry *dentry,
612 static int fuse_create_open(struct inode *dir, struct dentry *entry,
617 struct inode *inode;
686 inode = fuse_iget(dir->i_sb, outentry.nodeid, outentry.generation,
688 if (!inode) {
696 d_instantiate(entry, inode);
701 fi = get_fuse_inode(inode);
705 fuse_finish_open(inode, file);
707 truncate_pagecache(inode, 0);
709 invalidate_inode_pages2(inode->i_mapping);
721 static int fuse_mknod(struct mnt_idmap *, struct inode *, struct dentry *,
723 static int fuse_atomic_open(struct inode *dir, struct dentry *entry,
774 struct inode *dir, struct dentry *entry,
778 struct inode *inode;
814 inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
816 if (!inode) {
823 d = d_splice_alias(inode, entry);
843 static int fuse_mknod(struct mnt_idmap *idmap, struct inode *dir,
866 static int fuse_create(struct mnt_idmap *idmap, struct inode *dir,
872 static int fuse_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
889 static int fuse_mkdir(struct mnt_idmap *idmap, struct inode *dir,
911 static int fuse_symlink(struct mnt_idmap *idmap, struct inode *dir,
927 void fuse_flush_time_update(struct inode *inode)
929 int err = sync_inode_metadata(inode, 1);
931 mapping_set_error(inode->i_mapping, err);
934 static void fuse_update_ctime_in_cache(struct inode *inode)
936 if (!IS_NOCMTIME(inode)) {
937 inode_set_ctime_current(inode);
938 mark_inode_dirty_sync(inode);
939 fuse_flush_time_update(inode);
943 void fuse_update_ctime(struct inode *inode)
945 fuse_invalidate_attr_mask(inode, STATX_CTIME);
946 fuse_update_ctime_in_cache(inode);
951 struct inode *inode = d_inode(entry);
952 struct fuse_conn *fc = get_fuse_conn(inode);
953 struct fuse_inode *fi = get_fuse_inode(inode);
963 if (S_ISDIR(inode->i_mode))
964 clear_nlink(inode);
965 else if (inode->i_nlink > 0)
966 drop_nlink(inode);
969 fuse_update_ctime(inode);
972 static int fuse_unlink(struct inode *dir, struct dentry *entry)
995 static int fuse_rmdir(struct inode *dir, struct dentry *entry)
1018 static int fuse_rename_common(struct inode *olddir, struct dentry *oldent,
1019 struct inode *newdir, struct dentry *newent,
1068 static int fuse_rename2(struct mnt_idmap *idmap, struct inode *olddir,
1069 struct dentry *oldent, struct inode *newdir,
1101 static int fuse_link(struct dentry *entry, struct inode *newdir,
1106 struct inode *inode = d_inode(entry);
1107 struct fuse_mount *fm = get_fuse_mount(inode);
1111 inarg.oldnodeid = get_node_id(inode);
1118 err = create_new_entry(fm, &args, newdir, newent, inode->i_mode);
1120 fuse_update_ctime_in_cache(inode);
1122 fuse_invalidate_attr(inode);
1127 static void fuse_fillattr(struct inode *inode, struct fuse_attr *attr,
1131 struct fuse_conn *fc = get_fuse_conn(inode);
1133 stat->dev = inode->i_sb->s_dev;
1135 stat->mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
1139 stat->rdev = inode->i_rdev;
1152 blkbits = inode->i_sb->s_blocksize_bits;
1177 static int fuse_do_statx(struct inode *inode, struct file *file,
1185 struct fuse_mount *fm = get_fuse_mount(inode);
1192 if (file && S_ISREG(inode->i_mode)) {
1202 args.nodeid = get_node_id(inode);
1216 inode_wrong_type(inode, sx->mode)))) {
1217 fuse_make_bad(inode);
1223 fuse_change_attributes(inode, &attr, &outarg.stat,
1231 fuse_fillattr(inode, &attr, stat);
1238 static int fuse_do_getattr(struct inode *inode, struct kstat *stat,
1244 struct fuse_mount *fm = get_fuse_mount(inode);
1253 if (file && S_ISREG(inode->i_mode)) {
1260 args.nodeid = get_node_id(inode);
1270 inode_wrong_type(inode, outarg.attr.mode)) {
1271 fuse_make_bad(inode);
1274 fuse_change_attributes(inode, &outarg.attr, NULL,
1278 fuse_fillattr(inode, &outarg.attr, stat);
1284 static int fuse_update_get_attr(struct inode *inode, struct file *file,
1288 struct fuse_inode *fi = get_fuse_inode(inode);
1289 struct fuse_conn *fc = get_fuse_conn(inode);
1293 u32 cache_mask = fuse_get_cache_mask(inode);
1314 forget_all_cached_acls(inode);
1317 err = fuse_do_statx(inode, file, stat);
1323 err = fuse_do_getattr(inode, stat, file);
1326 generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat);
1338 int fuse_update_attributes(struct inode *inode, struct file *file, u32 mask)
1340 return fuse_update_get_attr(inode, file, NULL, mask, 0);
1347 struct inode *parent;
1451 static int fuse_access(struct inode *inode, int mask)
1453 struct fuse_mount *fm = get_fuse_mount(inode);
1466 args.nodeid = get_node_id(inode);
1478 static int fuse_perm_getattr(struct inode *inode, int mask)
1483 forget_all_cached_acls(inode);
1484 return fuse_do_getattr(inode, NULL, NULL);
1495 * checking permission in each inode operation. An exception to this
1501 struct inode *inode, int mask)
1503 struct fuse_conn *fc = get_fuse_conn(inode);
1507 if (fuse_is_bad(inode))
1517 ((mask & MAY_EXEC) && S_ISREG(inode->i_mode))) {
1518 struct fuse_inode *fi = get_fuse_inode(inode);
1525 err = fuse_perm_getattr(inode, mask);
1532 err = generic_permission(&nop_mnt_idmap, inode, mask);
1538 err = fuse_perm_getattr(inode, mask);
1541 inode, mask);
1549 err = fuse_access(inode, mask);
1550 } else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) {
1551 if (!(inode->i_mode & S_IXUGO)) {
1555 err = fuse_perm_getattr(inode, mask);
1556 if (!err && !(inode->i_mode & S_IXUGO))
1563 static int fuse_readlink_page(struct inode *inode, struct page *page)
1565 struct fuse_mount *fm = get_fuse_mount(inode);
1576 ap.args.nodeid = get_node_id(inode);
1584 fuse_invalidate_atime(inode);
1598 static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
1601 struct fuse_conn *fc = get_fuse_conn(inode);
1606 if (fuse_is_bad(inode))
1610 return page_get_link(dentry, inode, callback);
1621 err = fuse_readlink_page(inode, page);
1635 static int fuse_dir_open(struct inode *inode, struct file *file)
1637 return fuse_open_common(inode, file, true);
1640 static int fuse_dir_release(struct inode *inode, struct file *file)
1650 struct inode *inode = file->f_mapping->host;
1651 struct fuse_conn *fc = get_fuse_conn(inode);
1654 if (fuse_is_bad(inode))
1660 inode_lock(inode);
1666 inode_unlock(inode);
1748 * Prevent concurrent writepages on inode
1750 * This is done by adding a negative bias to the inode write counter
1753 void fuse_set_nowrite(struct inode *inode)
1755 struct fuse_inode *fi = get_fuse_inode(inode);
1757 BUG_ON(!inode_is_locked(inode));
1767 * Allow writepages on inode
1772 static void __fuse_release_nowrite(struct inode *inode)
1774 struct fuse_inode *fi = get_fuse_inode(inode);
1778 fuse_flush_writepages(inode);
1781 void fuse_release_nowrite(struct inode *inode)
1783 struct fuse_inode *fi = get_fuse_inode(inode);
1786 __fuse_release_nowrite(inode);
1791 struct inode *inode,
1796 args->nodeid = get_node_id(inode);
1806 * Flush inode->i_mtime to the server
1808 int fuse_flush_times(struct inode *inode, struct fuse_file *ff)
1810 struct fuse_mount *fm = get_fuse_mount(inode);
1819 inarg.mtime = inode->i_mtime.tv_sec;
1820 inarg.mtimensec = inode->i_mtime.tv_nsec;
1823 inarg.ctime = inode_get_ctime(inode).tv_sec;
1824 inarg.ctimensec = inode_get_ctime(inode).tv_nsec;
1830 fuse_setattr_fill(fm->fc, &args, inode, &inarg, &outarg);
1846 struct inode *inode = d_inode(dentry);
1847 struct fuse_mount *fm = get_fuse_mount(inode);
1849 struct fuse_inode *fi = get_fuse_inode(inode);
1850 struct address_space *mapping = inode->i_mapping;
1855 bool is_wb = fc->writeback_cache && S_ISREG(inode->i_mode);
1869 if (WARN_ON(!S_ISREG(inode->i_mode)))
1874 if (FUSE_IS_DAX(inode) && is_truncate) {
1877 err = fuse_dax_break_layouts(inode, 0, 0);
1894 i_size_write(inode, 0);
1895 truncate_pagecache(inode, 0);
1906 err = write_inode_now(inode, true);
1910 fuse_set_nowrite(inode);
1911 fuse_release_nowrite(inode);
1915 fuse_set_nowrite(inode);
1917 if (trust_local_cmtime && attr->ia_size != inode->i_size)
1931 if (fc->handle_killpriv_v2 && !S_ISDIR(inode->i_mode) &&
1944 fuse_setattr_fill(fc, &args, inode, &inarg, &outarg);
1948 fuse_invalidate_attr(inode);
1953 inode_wrong_type(inode, outarg.attr.mode)) {
1954 fuse_make_bad(inode);
1963 inode->i_mtime = attr->ia_mtime;
1965 inode_set_ctime_to_ts(inode, attr->ia_ctime);
1969 fuse_change_attributes_common(inode, &outarg.attr, NULL,
1971 fuse_get_cache_mask(inode));
1972 oldsize = inode->i_size;
1975 i_size_write(inode, outarg.attr.size);
1979 __fuse_release_nowrite(inode);
1988 S_ISREG(inode->i_mode) && oldsize != outarg.attr.size) {
1989 truncate_pagecache(inode, outarg.attr.size);
2002 fuse_release_nowrite(inode);
2014 struct inode *inode = d_inode(entry);
2015 struct fuse_conn *fc = get_fuse_conn(inode);
2019 if (fuse_is_bad(inode))
2022 if (!fuse_allow_current_process(get_fuse_conn(inode)))
2040 ret = fuse_do_getattr(inode, NULL, file);
2044 attr->ia_mode = inode->i_mode;
2045 if (inode->i_mode & S_ISUID) {
2049 if ((inode->i_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) {
2062 * the filesystem, so forget cached acls for the inode.
2065 forget_all_cached_acls(inode);
2078 struct inode *inode = d_inode(path->dentry);
2079 struct fuse_conn *fc = get_fuse_conn(inode);
2081 if (fuse_is_bad(inode))
2091 stat->dev = inode->i_sb->s_dev;
2097 return fuse_update_get_attr(inode, NULL, stat, request_mask, flags);
2153 void fuse_init_common(struct inode *inode)
2155 inode->i_op = &fuse_common_inode_operations;
2158 void fuse_init_dir(struct inode *inode)
2160 struct fuse_inode *fi = get_fuse_inode(inode);
2162 inode->i_op = &fuse_dir_inode_operations;
2163 inode->i_fop = &fuse_dir_operations;
2188 void fuse_init_symlink(struct inode *inode)
2190 inode->i_op = &fuse_symlink_inode_operations;
2191 inode->i_data.a_ops = &fuse_symlink_aops;
2192 inode_nohighmem(inode);