Lines Matching defs:inode
89 static struct inode *fuse_alloc_inode(struct super_block *sb)
114 return &fi->inode;
123 static void fuse_free_inode(struct inode *inode)
125 struct fuse_inode *fi = get_fuse_inode(inode);
146 static void fuse_evict_inode(struct inode *inode)
148 struct fuse_inode *fi = get_fuse_inode(inode);
150 /* Will write inode on close/munmap and in all other dirtiers */
151 WARN_ON(inode->i_state & I_DIRTY_INODE);
153 truncate_inode_pages_final(&inode->i_data);
154 clear_inode(inode);
155 if (inode->i_sb->s_flags & SB_ACTIVE) {
156 struct fuse_conn *fc = get_fuse_conn(inode);
158 if (FUSE_IS_DAX(inode))
159 fuse_dax_inode_cleanup(inode);
171 if (S_ISREG(inode->i_mode) && !fuse_is_bad(inode)) {
200 void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
204 struct fuse_conn *fc = get_fuse_conn(inode);
205 struct fuse_inode *fi = get_fuse_inode(inode);
214 inode->i_ino = fuse_squash_ino(attr->ino);
215 inode->i_mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
216 set_nlink(inode, attr->nlink);
217 inode->i_uid = make_kuid(fc->user_ns, attr->uid);
218 inode->i_gid = make_kgid(fc->user_ns, attr->gid);
219 inode->i_blocks = attr->blocks;
226 inode->i_atime.tv_sec = attr->atime;
227 inode->i_atime.tv_nsec = attr->atimensec;
230 inode->i_mtime.tv_sec = attr->mtime;
231 inode->i_mtime.tv_nsec = attr->mtimensec;
234 inode_set_ctime(inode, attr->ctime, attr->ctimensec);
257 inode->i_blkbits = ilog2(attr->blksize);
259 inode->i_blkbits = inode->i_sb->s_blocksize_bits;
266 fi->orig_i_mode = inode->i_mode;
268 inode->i_mode &= ~S_ISVTX;
273 * We are refreshing inode data and it is possible that another
280 inode->i_flags &= ~S_NOSEC;
283 u32 fuse_get_cache_mask(struct inode *inode)
285 struct fuse_conn *fc = get_fuse_conn(inode);
287 if (!fc->writeback_cache || !S_ISREG(inode->i_mode))
293 void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
297 struct fuse_conn *fc = get_fuse_conn(inode);
298 struct fuse_inode *fi = get_fuse_inode(inode);
307 * inode.
309 cache_mask = fuse_get_cache_mask(inode);
311 attr->size = i_size_read(inode);
314 attr->mtime = inode->i_mtime.tv_sec;
315 attr->mtimensec = inode->i_mtime.tv_nsec;
318 attr->ctime = inode_get_ctime(inode).tv_sec;
319 attr->ctimensec = inode_get_ctime(inode).tv_nsec;
328 old_mtime = inode->i_mtime;
329 fuse_change_attributes_common(inode, attr, sx, attr_valid, cache_mask);
331 oldsize = inode->i_size;
338 i_size_write(inode, attr->size);
341 if (!cache_mask && S_ISREG(inode->i_mode)) {
345 truncate_pagecache(inode, attr->size);
363 invalidate_inode_pages2(inode->i_mapping);
367 fuse_dax_dontcache(inode, attr->flags);
377 static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr,
380 inode->i_mode = attr->mode & S_IFMT;
381 inode->i_size = attr->size;
382 inode->i_mtime.tv_sec = attr->mtime;
383 inode->i_mtime.tv_nsec = attr->mtimensec;
384 inode_set_ctime(inode, attr->ctime, attr->ctimensec);
385 if (S_ISREG(inode->i_mode)) {
386 fuse_init_common(inode);
387 fuse_init_file_inode(inode, attr->flags);
388 } else if (S_ISDIR(inode->i_mode))
389 fuse_init_dir(inode);
390 else if (S_ISLNK(inode->i_mode))
391 fuse_init_symlink(inode);
392 else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||
393 S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
394 fuse_init_common(inode);
395 init_special_inode(inode, inode->i_mode,
404 inode->i_acl = inode->i_default_acl = ACL_DONT_CACHE;
407 static int fuse_inode_eq(struct inode *inode, void *_nodeidp)
410 if (get_node_id(inode) == nodeid)
416 static int fuse_inode_set(struct inode *inode, void *_nodeidp)
419 get_fuse_inode(inode)->nodeid = nodeid;
423 struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
427 struct inode *inode;
435 * To avoid conflicts, do not place submount points into the inode hash
442 inode = new_inode(sb);
443 if (!inode)
446 fuse_init_inode(inode, attr, fc);
447 fi = get_fuse_inode(inode);
451 iput(inode);
456 inode->i_flags |= S_AUTOMOUNT;
461 inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set, &nodeid);
462 if (!inode)
465 if ((inode->i_state & I_NEW)) {
466 inode->i_flags |= S_NOATIME;
468 inode->i_flags |= S_NOCMTIME;
469 inode->i_generation = generation;
470 fuse_init_inode(inode, attr, fc);
471 unlock_new_inode(inode);
472 } else if (fuse_stale_inode(inode, generation, attr)) {
473 /* nodeid was reused, any I/O on the old inode should fail */
474 fuse_make_bad(inode);
475 if (inode != d_inode(sb->s_root)) {
476 remove_inode_hash(inode);
477 iput(inode);
481 fi = get_fuse_inode(inode);
486 fuse_change_attributes(inode, attr, NULL, attr_valid, attr_version);
488 return inode;
491 struct inode *fuse_ilookup(struct fuse_conn *fc, u64 nodeid,
495 struct inode *inode;
502 inode = ilookup5(fm_iter->sb, nodeid, fuse_inode_eq, &nodeid);
503 if (inode) {
506 return inode;
517 struct inode *inode;
521 inode = fuse_ilookup(fc, nodeid, NULL);
522 if (!inode)
525 fi = get_fuse_inode(inode);
530 fuse_invalidate_attr(inode);
531 forget_all_cached_acls(inode);
538 invalidate_inode_pages2_range(inode->i_mapping,
541 iput(inode);
545 bool fuse_lock_inode(struct inode *inode)
549 if (!get_fuse_conn(inode)->parallel_dirops) {
550 mutex_lock(&get_fuse_inode(inode)->mutex);
557 void fuse_unlock_inode(struct inode *inode, bool locked)
560 mutex_unlock(&get_fuse_inode(inode)->mutex);
871 seq_puts(m, ",dax=inode");
968 static struct inode *fuse_get_root_inode(struct super_block *sb, unsigned mode)
988 struct inode *inode;
995 inode = ilookup5(sb, handle->nodeid, fuse_inode_eq, &handle->nodeid);
996 if (!inode) {
1004 &inode);
1007 if (err || !inode) {
1012 if (get_node_id(inode) != handle->nodeid)
1016 if (inode->i_generation != handle->generation)
1019 entry = d_obtain_alias(inode);
1020 if (!IS_ERR(entry) && get_node_id(inode) != FUSE_ROOT_ID)
1026 iput(inode);
1031 static int fuse_encode_fh(struct inode *inode, u32 *fh, int *max_len,
1032 struct inode *parent)
1043 nodeid = get_fuse_inode(inode)->nodeid;
1044 generation = inode->i_generation;
1093 struct inode *child_inode = d_inode(child);
1095 struct inode *inode;
1104 &dotdot_name, &outarg, &inode);
1111 parent = d_obtain_alias(inode);
1112 if (!IS_ERR(parent) && get_node_id(inode) != FUSE_ROOT_ID)
1481 struct timespec64 ctime = inode_get_ctime(&fi->inode);
1484 .ino = fi->inode.i_ino,
1485 .size = fi->inode.i_size,
1486 .blocks = fi->inode.i_blocks,
1487 .atime = fi->inode.i_atime.tv_sec,
1488 .mtime = fi->inode.i_mtime.tv_sec,
1490 .atimensec = fi->inode.i_atime.tv_nsec,
1491 .mtimensec = fi->inode.i_mtime.tv_nsec,
1493 .mode = fi->inode.i_mode,
1494 .nlink = fi->inode.i_nlink,
1495 .uid = fi->inode.i_uid.val,
1496 .gid = fi->inode.i_gid.val,
1497 .rdev = fi->inode.i_rdev,
1498 .blksize = 1u << fi->inode.i_blkbits,
1520 struct super_block *parent_sb = parent_fi->inode.i_sb;
1522 struct inode *root;
1543 * This inode is just a duplicate, so it is not looked up and
1571 /* Filesystem context private data holds the FUSE inode of the mount point */
1576 struct fuse_conn *fc = get_fuse_conn(&mp_fi->inode);
1625 struct inode *root;
1969 struct inode *inode = foo;
1971 inode_init_once(inode);