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;
688 inode = fuse_iget(dir->i_sb, outentry.nodeid, outentry.generation,
690 if (!inode) {
698 d_instantiate(entry, inode);
701 err = generic_file_open(inode, file);
707 fi = get_fuse_inode(inode);
711 truncate_pagecache(inode, 0);
713 invalidate_inode_pages2(inode->i_mapping);
725 static int fuse_mknod(struct mnt_idmap *, struct inode *, struct dentry *,
727 static int fuse_atomic_open(struct inode *dir, struct dentry *entry,
778 struct inode *dir, struct dentry *entry,
782 struct inode *inode;
818 inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
820 if (!inode) {
827 d = d_splice_alias(inode, entry);
847 static int fuse_mknod(struct mnt_idmap *idmap, struct inode *dir,
870 static int fuse_create(struct mnt_idmap *idmap, struct inode *dir,
876 static int fuse_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
893 static int fuse_mkdir(struct mnt_idmap *idmap, struct inode *dir,
915 static int fuse_symlink(struct mnt_idmap *idmap, struct inode *dir,
931 void fuse_flush_time_update(struct inode *inode)
933 int err = sync_inode_metadata(inode, 1);
935 mapping_set_error(inode->i_mapping, err);
938 static void fuse_update_ctime_in_cache(struct inode *inode)
940 if (!IS_NOCMTIME(inode)) {
941 inode_set_ctime_current(inode);
942 mark_inode_dirty_sync(inode);
943 fuse_flush_time_update(inode);
947 void fuse_update_ctime(struct inode *inode)
949 fuse_invalidate_attr_mask(inode, STATX_CTIME);
950 fuse_update_ctime_in_cache(inode);
955 struct inode *inode = d_inode(entry);
956 struct fuse_conn *fc = get_fuse_conn(inode);
957 struct fuse_inode *fi = get_fuse_inode(inode);
967 if (S_ISDIR(inode->i_mode))
968 clear_nlink(inode);
969 else if (inode->i_nlink > 0)
970 drop_nlink(inode);
973 fuse_update_ctime(inode);
976 static int fuse_unlink(struct inode *dir, struct dentry *entry)
999 static int fuse_rmdir(struct inode *dir, struct dentry *entry)
1022 static int fuse_rename_common(struct inode *olddir, struct dentry *oldent,
1023 struct inode *newdir, struct dentry *newent,
1072 static int fuse_rename2(struct mnt_idmap *idmap, struct inode *olddir,
1073 struct dentry *oldent, struct inode *newdir,
1105 static int fuse_link(struct dentry *entry, struct inode *newdir,
1110 struct inode *inode = d_inode(entry);
1111 struct fuse_mount *fm = get_fuse_mount(inode);
1115 inarg.oldnodeid = get_node_id(inode);
1122 err = create_new_entry(fm, &args, newdir, newent, inode->i_mode);
1124 fuse_update_ctime_in_cache(inode);
1126 fuse_invalidate_attr(inode);
1131 static void fuse_fillattr(struct inode *inode, struct fuse_attr *attr,
1135 struct fuse_conn *fc = get_fuse_conn(inode);
1137 stat->dev = inode->i_sb->s_dev;
1139 stat->mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
1143 stat->rdev = inode->i_rdev;
1156 blkbits = inode->i_sb->s_blocksize_bits;
1181 static int fuse_do_statx(struct inode *inode, struct file *file,
1189 struct fuse_mount *fm = get_fuse_mount(inode);
1196 if (file && S_ISREG(inode->i_mode)) {
1206 args.nodeid = get_node_id(inode);
1220 inode_wrong_type(inode, sx->mode)))) {
1221 fuse_make_bad(inode);
1227 fuse_change_attributes(inode, &attr, &outarg.stat,
1235 fuse_fillattr(inode, &attr, stat);
1242 static int fuse_do_getattr(struct inode *inode, struct kstat *stat,
1248 struct fuse_mount *fm = get_fuse_mount(inode);
1257 if (file && S_ISREG(inode->i_mode)) {
1264 args.nodeid = get_node_id(inode);
1274 inode_wrong_type(inode, outarg.attr.mode)) {
1275 fuse_make_bad(inode);
1278 fuse_change_attributes(inode, &outarg.attr, NULL,
1282 fuse_fillattr(inode, &outarg.attr, stat);
1288 static int fuse_update_get_attr(struct inode *inode, struct file *file,
1292 struct fuse_inode *fi = get_fuse_inode(inode);
1293 struct fuse_conn *fc = get_fuse_conn(inode);
1297 u32 cache_mask = fuse_get_cache_mask(inode);
1318 forget_all_cached_acls(inode);
1321 err = fuse_do_statx(inode, file, stat);
1328 err = fuse_do_getattr(inode, stat, file);
1331 generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat);
1343 int fuse_update_attributes(struct inode *inode, struct file *file, u32 mask)
1345 return fuse_update_get_attr(inode, file, NULL, mask, 0);
1352 struct inode *parent;
1456 static int fuse_access(struct inode *inode, int mask)
1458 struct fuse_mount *fm = get_fuse_mount(inode);
1471 args.nodeid = get_node_id(inode);
1483 static int fuse_perm_getattr(struct inode *inode, int mask)
1488 forget_all_cached_acls(inode);
1489 return fuse_do_getattr(inode, NULL, NULL);
1500 * checking permission in each inode operation. An exception to this
1506 struct inode *inode, int mask)
1508 struct fuse_conn *fc = get_fuse_conn(inode);
1512 if (fuse_is_bad(inode))
1522 ((mask & MAY_EXEC) && S_ISREG(inode->i_mode))) {
1523 struct fuse_inode *fi = get_fuse_inode(inode);
1530 err = fuse_perm_getattr(inode, mask);
1537 err = generic_permission(&nop_mnt_idmap, inode, mask);
1543 err = fuse_perm_getattr(inode, mask);
1546 inode, mask);
1554 err = fuse_access(inode, mask);
1555 } else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) {
1556 if (!(inode->i_mode & S_IXUGO)) {
1560 err = fuse_perm_getattr(inode, mask);
1561 if (!err && !(inode->i_mode & S_IXUGO))
1568 static int fuse_readlink_page(struct inode *inode, struct page *page)
1570 struct fuse_mount *fm = get_fuse_mount(inode);
1581 ap.args.nodeid = get_node_id(inode);
1589 fuse_invalidate_atime(inode);
1603 static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
1606 struct fuse_conn *fc = get_fuse_conn(inode);
1611 if (fuse_is_bad(inode))
1615 return page_get_link(dentry, inode, callback);
1626 err = fuse_readlink_page(inode, page);
1640 static int fuse_dir_open(struct inode *inode, struct file *file)
1642 struct fuse_mount *fm = get_fuse_mount(inode);
1645 if (fuse_is_bad(inode))
1648 err = generic_file_open(inode, file);
1652 err = fuse_do_open(fm, get_node_id(inode), file, true);
1662 nonseekable_open(inode, file);
1668 static int fuse_dir_release(struct inode *inode, struct file *file)
1678 struct inode *inode = file->f_mapping->host;
1679 struct fuse_conn *fc = get_fuse_conn(inode);
1682 if (fuse_is_bad(inode))
1688 inode_lock(inode);
1694 inode_unlock(inode);
1776 * Prevent concurrent writepages on inode
1778 * This is done by adding a negative bias to the inode write counter
1781 void fuse_set_nowrite(struct inode *inode)
1783 struct fuse_inode *fi = get_fuse_inode(inode);
1785 BUG_ON(!inode_is_locked(inode));
1795 * Allow writepages on inode
1800 static void __fuse_release_nowrite(struct inode *inode)
1802 struct fuse_inode *fi = get_fuse_inode(inode);
1806 fuse_flush_writepages(inode);
1809 void fuse_release_nowrite(struct inode *inode)
1811 struct fuse_inode *fi = get_fuse_inode(inode);
1814 __fuse_release_nowrite(inode);
1819 struct inode *inode,
1824 args->nodeid = get_node_id(inode);
1834 * Flush inode->i_mtime to the server
1836 int fuse_flush_times(struct inode *inode, struct fuse_file *ff)
1838 struct fuse_mount *fm = get_fuse_mount(inode);
1847 inarg.mtime = inode_get_mtime_sec(inode);
1848 inarg.mtimensec = inode_get_mtime_nsec(inode);
1851 inarg.ctime = inode_get_ctime_sec(inode);
1852 inarg.ctimensec = inode_get_ctime_nsec(inode);
1858 fuse_setattr_fill(fm->fc, &args, inode, &inarg, &outarg);
1874 struct inode *inode = d_inode(dentry);
1875 struct fuse_mount *fm = get_fuse_mount(inode);
1877 struct fuse_inode *fi = get_fuse_inode(inode);
1878 struct address_space *mapping = inode->i_mapping;
1883 bool is_wb = fc->writeback_cache && S_ISREG(inode->i_mode);
1897 if (WARN_ON(!S_ISREG(inode->i_mode)))
1902 if (FUSE_IS_DAX(inode) && is_truncate) {
1905 err = fuse_dax_break_layouts(inode, 0, 0);
1922 i_size_write(inode, 0);
1923 truncate_pagecache(inode, 0);
1934 err = write_inode_now(inode, true);
1938 fuse_set_nowrite(inode);
1939 fuse_release_nowrite(inode);
1943 fuse_set_nowrite(inode);
1945 if (trust_local_cmtime && attr->ia_size != inode->i_size)
1959 if (fc->handle_killpriv_v2 && !S_ISDIR(inode->i_mode) &&
1972 fuse_setattr_fill(fc, &args, inode, &inarg, &outarg);
1976 fuse_invalidate_attr(inode);
1981 inode_wrong_type(inode, outarg.attr.mode)) {
1982 fuse_make_bad(inode);
1991 inode_set_mtime_to_ts(inode, attr->ia_mtime);
1993 inode_set_ctime_to_ts(inode, attr->ia_ctime);
1997 fuse_change_attributes_common(inode, &outarg.attr, NULL,
1999 fuse_get_cache_mask(inode));
2000 oldsize = inode->i_size;
2003 i_size_write(inode, outarg.attr.size);
2007 __fuse_release_nowrite(inode);
2016 S_ISREG(inode->i_mode) && oldsize != outarg.attr.size) {
2017 truncate_pagecache(inode, outarg.attr.size);
2030 fuse_release_nowrite(inode);
2042 struct inode *inode = d_inode(entry);
2043 struct fuse_conn *fc = get_fuse_conn(inode);
2047 if (fuse_is_bad(inode))
2050 if (!fuse_allow_current_process(get_fuse_conn(inode)))
2068 ret = fuse_do_getattr(inode, NULL, file);
2072 attr->ia_mode = inode->i_mode;
2073 if (inode->i_mode & S_ISUID) {
2077 if ((inode->i_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) {
2090 * the filesystem, so forget cached acls for the inode.
2093 forget_all_cached_acls(inode);
2106 struct inode *inode = d_inode(path->dentry);
2107 struct fuse_conn *fc = get_fuse_conn(inode);
2109 if (fuse_is_bad(inode))
2119 stat->dev = inode->i_sb->s_dev;
2125 return fuse_update_get_attr(inode, NULL, stat, request_mask, flags);
2181 void fuse_init_common(struct inode *inode)
2183 inode->i_op = &fuse_common_inode_operations;
2186 void fuse_init_dir(struct inode *inode)
2188 struct fuse_inode *fi = get_fuse_inode(inode);
2190 inode->i_op = &fuse_dir_inode_operations;
2191 inode->i_fop = &fuse_dir_operations;
2216 void fuse_init_symlink(struct inode *inode)
2218 inode->i_op = &fuse_symlink_inode_operations;
2219 inode->i_data.a_ops = &fuse_symlink_aops;
2220 inode_nohighmem(inode);