Lines Matching refs:inode

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