Lines Matching refs:inode
21 static void fuse_advise_use_readdirplus(struct inode *dir)
119 static void fuse_invalidate_attr_mask(struct inode *inode, u32 mask)
121 set_mask_bits(&get_fuse_inode(inode)->inval_mask, 0, mask);
128 void fuse_invalidate_attr(struct inode *inode)
130 fuse_invalidate_attr_mask(inode, STATX_BASIC_STATS);
133 static void fuse_dir_changed(struct inode *dir)
143 void fuse_invalidate_atime(struct inode *inode)
145 if (!IS_RDONLY(inode))
146 fuse_invalidate_attr_mask(inode, STATX_ATIME);
192 * different inode, then let the VFS invalidate the dentry and redo
193 * the lookup once more. If the lookup results in the same inode,
198 struct inode *inode;
204 inode = d_inode_rcu(entry);
205 if (inode && fuse_is_bad(inode))
215 if (!inode)
222 fm = get_fuse_mount(inode);
240 fi = get_fuse_inode(inode);
241 if (outarg.nodeid != get_node_id(inode) ||
242 (bool) IS_AUTOMOUNT(inode) != (bool) (outarg.attr.flags & FUSE_ATTR_SUBMOUNT)) {
255 fuse_stale_inode(inode, outarg.generation, &outarg.attr))
258 forget_all_cached_acls(inode);
259 fuse_change_attributes(inode, &outarg.attr,
263 } else if (inode) {
264 fi = get_fuse_inode(inode);
422 struct fuse_entry_out *outarg, struct inode **inode)
430 *inode = NULL;
455 *inode = fuse_iget(sb, outarg->nodeid, outarg->generation,
459 if (!*inode) {
471 static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry,
476 struct inode *inode;
486 &outarg, &inode);
496 if (inode && get_node_id(inode) == FUSE_ROOT_ID)
499 newent = d_splice_alias(inode, entry);
510 if (inode)
515 iput(inode);
526 static int fuse_create_open(struct inode *dir, struct dentry *entry,
531 struct inode *inode;
588 inode = fuse_iget(dir->i_sb, outentry.nodeid, outentry.generation,
590 if (!inode) {
598 d_instantiate(entry, inode);
603 fi = get_fuse_inode(inode);
607 fuse_finish_open(inode, file);
609 truncate_pagecache(inode, 0);
611 invalidate_inode_pages2(inode->i_mapping);
623 static int fuse_mknod(struct inode *, struct dentry *, umode_t, dev_t);
624 static int fuse_atomic_open(struct inode *dir, struct dentry *entry,
674 struct inode *dir, struct dentry *entry,
678 struct inode *inode;
706 inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
708 if (!inode) {
715 d = d_splice_alias(inode, entry);
733 static int fuse_mknod(struct inode *dir, struct dentry *entry, umode_t mode,
756 static int fuse_create(struct inode *dir, struct dentry *entry, umode_t mode,
762 static int fuse_mkdir(struct inode *dir, struct dentry *entry, umode_t mode)
783 static int fuse_symlink(struct inode *dir, struct dentry *entry,
799 void fuse_flush_time_update(struct inode *inode)
801 int err = sync_inode_metadata(inode, 1);
803 mapping_set_error(inode->i_mapping, err);
806 void fuse_update_ctime(struct inode *inode)
808 if (!IS_NOCMTIME(inode)) {
809 inode->i_ctime = current_time(inode);
810 mark_inode_dirty_sync(inode);
811 fuse_flush_time_update(inode);
815 static int fuse_unlink(struct inode *dir, struct dentry *entry)
831 struct inode *inode = d_inode(entry);
832 struct fuse_inode *fi = get_fuse_inode(inode);
842 if (inode->i_nlink > 0)
843 drop_nlink(inode);
845 fuse_invalidate_attr(inode);
848 fuse_update_ctime(inode);
854 static int fuse_rmdir(struct inode *dir, struct dentry *entry)
878 static int fuse_rename_common(struct inode *olddir, struct dentry *oldent,
879 struct inode *newdir, struct dentry *newent,
934 static int fuse_rename2(struct inode *olddir, struct dentry *oldent,
935 struct inode *newdir, struct dentry *newent,
967 static int fuse_link(struct dentry *entry, struct inode *newdir,
972 struct inode *inode = d_inode(entry);
973 struct fuse_mount *fm = get_fuse_mount(inode);
977 inarg.oldnodeid = get_node_id(inode);
984 err = create_new_entry(fm, &args, newdir, newent, inode->i_mode);
987 inode. We invalidate the attributes of the old one, so it
988 will reflect changes in the backing inode (link count,
992 struct fuse_inode *fi = get_fuse_inode(inode);
996 if (likely(inode->i_nlink < UINT_MAX))
997 inc_nlink(inode);
999 fuse_invalidate_attr(inode);
1000 fuse_update_ctime(inode);
1002 fuse_invalidate_attr(inode);
1007 static void fuse_fillattr(struct inode *inode, struct fuse_attr *attr,
1011 struct fuse_conn *fc = get_fuse_conn(inode);
1014 if (fc->writeback_cache && S_ISREG(inode->i_mode)) {
1015 attr->size = i_size_read(inode);
1016 attr->mtime = inode->i_mtime.tv_sec;
1017 attr->mtimensec = inode->i_mtime.tv_nsec;
1018 attr->ctime = inode->i_ctime.tv_sec;
1019 attr->ctimensec = inode->i_ctime.tv_nsec;
1022 stat->dev = inode->i_sb->s_dev;
1024 stat->mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
1028 stat->rdev = inode->i_rdev;
1041 blkbits = inode->i_sb->s_blocksize_bits;
1046 static int fuse_do_getattr(struct inode *inode, struct kstat *stat,
1052 struct fuse_mount *fm = get_fuse_mount(inode);
1061 if (file && S_ISREG(inode->i_mode)) {
1068 args.nodeid = get_node_id(inode);
1078 inode_wrong_type(inode, outarg.attr.mode)) {
1079 fuse_make_bad(inode);
1082 fuse_change_attributes(inode, &outarg.attr,
1086 fuse_fillattr(inode, &outarg.attr, stat);
1092 static int fuse_update_get_attr(struct inode *inode, struct file *file,
1096 struct fuse_inode *fi = get_fuse_inode(inode);
1110 forget_all_cached_acls(inode);
1111 err = fuse_do_getattr(inode, stat, file);
1113 generic_fillattr(inode, stat);
1121 int fuse_update_attributes(struct inode *inode, struct file *file)
1124 return fuse_update_get_attr(inode, file, NULL,
1132 struct inode *parent;
1226 static int fuse_access(struct inode *inode, int mask)
1228 struct fuse_mount *fm = get_fuse_mount(inode);
1241 args.nodeid = get_node_id(inode);
1253 static int fuse_perm_getattr(struct inode *inode, int mask)
1258 forget_all_cached_acls(inode);
1259 return fuse_do_getattr(inode, NULL, NULL);
1270 * checking permission in each inode operation. An exception to this
1275 static int fuse_permission(struct inode *inode, int mask)
1277 struct fuse_conn *fc = get_fuse_conn(inode);
1281 if (fuse_is_bad(inode))
1291 ((mask & MAY_EXEC) && S_ISREG(inode->i_mode))) {
1292 struct fuse_inode *fi = get_fuse_inode(inode);
1299 err = fuse_perm_getattr(inode, mask);
1306 err = generic_permission(inode, mask);
1312 err = fuse_perm_getattr(inode, mask);
1314 err = generic_permission(inode, mask);
1322 err = fuse_access(inode, mask);
1323 } else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) {
1324 if (!(inode->i_mode & S_IXUGO)) {
1328 err = fuse_perm_getattr(inode, mask);
1329 if (!err && !(inode->i_mode & S_IXUGO))
1336 static int fuse_readlink_page(struct inode *inode, struct page *page)
1338 struct fuse_mount *fm = get_fuse_mount(inode);
1349 ap.args.nodeid = get_node_id(inode);
1357 fuse_invalidate_atime(inode);
1371 static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
1374 struct fuse_conn *fc = get_fuse_conn(inode);
1379 if (fuse_is_bad(inode))
1383 return page_get_link(dentry, inode, callback);
1394 err = fuse_readlink_page(inode, page);
1408 static int fuse_dir_open(struct inode *inode, struct file *file)
1410 return fuse_open_common(inode, file, true);
1413 static int fuse_dir_release(struct inode *inode, struct file *file)
1423 struct inode *inode = file->f_mapping->host;
1424 struct fuse_conn *fc = get_fuse_conn(inode);
1427 if (fuse_is_bad(inode))
1433 inode_lock(inode);
1439 inode_unlock(inode);
1521 * Prevent concurrent writepages on inode
1523 * This is done by adding a negative bias to the inode write counter
1526 void fuse_set_nowrite(struct inode *inode)
1528 struct fuse_inode *fi = get_fuse_inode(inode);
1530 BUG_ON(!inode_is_locked(inode));
1540 * Allow writepages on inode
1545 static void __fuse_release_nowrite(struct inode *inode)
1547 struct fuse_inode *fi = get_fuse_inode(inode);
1551 fuse_flush_writepages(inode);
1554 void fuse_release_nowrite(struct inode *inode)
1556 struct fuse_inode *fi = get_fuse_inode(inode);
1559 __fuse_release_nowrite(inode);
1564 struct inode *inode,
1569 args->nodeid = get_node_id(inode);
1579 * Flush inode->i_mtime to the server
1581 int fuse_flush_times(struct inode *inode, struct fuse_file *ff)
1583 struct fuse_mount *fm = get_fuse_mount(inode);
1592 inarg.mtime = inode->i_mtime.tv_sec;
1593 inarg.mtimensec = inode->i_mtime.tv_nsec;
1596 inarg.ctime = inode->i_ctime.tv_sec;
1597 inarg.ctimensec = inode->i_ctime.tv_nsec;
1603 fuse_setattr_fill(fm->fc, &args, inode, &inarg, &outarg);
1619 struct inode *inode = d_inode(dentry);
1620 struct fuse_mount *fm = get_fuse_mount(inode);
1622 struct fuse_inode *fi = get_fuse_inode(inode);
1630 bool trust_local_cmtime = is_wb && S_ISREG(inode->i_mode);
1641 if (WARN_ON(!S_ISREG(inode->i_mode)))
1646 if (FUSE_IS_DAX(inode) && is_truncate) {
1649 err = fuse_dax_break_layouts(inode, 0, 0);
1666 i_size_write(inode, 0);
1667 truncate_pagecache(inode, 0);
1674 if (is_wb && S_ISREG(inode->i_mode) &&
1678 err = write_inode_now(inode, true);
1682 fuse_set_nowrite(inode);
1683 fuse_release_nowrite(inode);
1687 fuse_set_nowrite(inode);
1689 if (trust_local_cmtime && attr->ia_size != inode->i_size)
1706 fuse_setattr_fill(fc, &args, inode, &inarg, &outarg);
1710 fuse_invalidate_attr(inode);
1715 inode_wrong_type(inode, outarg.attr.mode)) {
1716 fuse_make_bad(inode);
1725 inode->i_mtime = attr->ia_mtime;
1727 inode->i_ctime = attr->ia_ctime;
1731 fuse_change_attributes_common(inode, &outarg.attr,
1733 oldsize = inode->i_size;
1735 if (!is_wb || is_truncate || !S_ISREG(inode->i_mode))
1736 i_size_write(inode, outarg.attr.size);
1740 __fuse_release_nowrite(inode);
1749 S_ISREG(inode->i_mode) && oldsize != outarg.attr.size) {
1750 truncate_pagecache(inode, outarg.attr.size);
1751 invalidate_inode_pages2(inode->i_mapping);
1763 fuse_release_nowrite(inode);
1774 struct inode *inode = d_inode(entry);
1775 struct fuse_conn *fc = get_fuse_conn(inode);
1779 if (fuse_is_bad(inode))
1782 if (!fuse_allow_current_process(get_fuse_conn(inode)))
1800 ret = fuse_do_getattr(inode, NULL, file);
1804 attr->ia_mode = inode->i_mode;
1805 if (inode->i_mode & S_ISUID) {
1809 if ((inode->i_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) {
1822 * the filesystem, so forget cached acls for the inode.
1825 forget_all_cached_acls(inode);
1837 struct inode *inode = d_inode(path->dentry);
1838 struct fuse_conn *fc = get_fuse_conn(inode);
1840 if (fuse_is_bad(inode))
1850 stat->dev = inode->i_sb->s_dev;
1856 return fuse_update_get_attr(inode, NULL, stat, request_mask, flags);
1905 void fuse_init_common(struct inode *inode)
1907 inode->i_op = &fuse_common_inode_operations;
1910 void fuse_init_dir(struct inode *inode)
1912 struct fuse_inode *fi = get_fuse_inode(inode);
1914 inode->i_op = &fuse_dir_inode_operations;
1915 inode->i_fop = &fuse_dir_operations;
1940 void fuse_init_symlink(struct inode *inode)
1942 inode->i_op = &fuse_symlink_inode_operations;
1943 inode->i_data.a_ops = &fuse_symlink_aops;
1944 inode_nohighmem(inode);