Lines Matching refs:inode

89 static struct inode *fuse_alloc_inode(struct super_block *sb)  in fuse_alloc_inode()
117 return &fi->inode; in fuse_alloc_inode()
126 static void fuse_free_inode(struct inode *inode) in fuse_free_inode() argument
128 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_free_inode()
152 static void fuse_evict_inode(struct inode *inode) in fuse_evict_inode() argument
154 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_evict_inode()
157 WARN_ON(inode->i_state & I_DIRTY_INODE); in fuse_evict_inode()
159 truncate_inode_pages_final(&inode->i_data); in fuse_evict_inode()
160 clear_inode(inode); in fuse_evict_inode()
161 if (inode->i_sb->s_flags & SB_ACTIVE) { in fuse_evict_inode()
162 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_evict_inode()
164 if (FUSE_IS_DAX(inode)) in fuse_evict_inode()
165 fuse_dax_inode_cleanup(inode); in fuse_evict_inode()
177 if (S_ISREG(inode->i_mode) && !fuse_is_bad(inode)) { in fuse_evict_inode()
207 void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr, in fuse_change_attributes_common() argument
211 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_change_attributes_common()
212 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_change_attributes_common()
221 inode->i_ino = fuse_squash_ino(attr->ino); in fuse_change_attributes_common()
222 inode->i_mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777); in fuse_change_attributes_common()
223 set_nlink(inode, attr->nlink); in fuse_change_attributes_common()
224 inode->i_uid = make_kuid(fc->user_ns, attr->uid); in fuse_change_attributes_common()
225 inode->i_gid = make_kgid(fc->user_ns, attr->gid); in fuse_change_attributes_common()
226 inode->i_blocks = attr->blocks; in fuse_change_attributes_common()
233 inode_set_atime(inode, attr->atime, attr->atimensec); in fuse_change_attributes_common()
236 inode_set_mtime(inode, attr->mtime, attr->mtimensec); in fuse_change_attributes_common()
239 inode_set_ctime(inode, attr->ctime, attr->ctimensec); in fuse_change_attributes_common()
262 inode->i_blkbits = ilog2(attr->blksize); in fuse_change_attributes_common()
264 inode->i_blkbits = inode->i_sb->s_blocksize_bits; in fuse_change_attributes_common()
271 fi->orig_i_mode = inode->i_mode; in fuse_change_attributes_common()
273 inode->i_mode &= ~S_ISVTX; in fuse_change_attributes_common()
285 inode->i_flags &= ~S_NOSEC; in fuse_change_attributes_common()
288 u32 fuse_get_cache_mask(struct inode *inode) in fuse_get_cache_mask() argument
290 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_get_cache_mask()
292 if (!fc->writeback_cache || !S_ISREG(inode->i_mode)) in fuse_get_cache_mask()
298 void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr, in fuse_change_attributes() argument
302 struct fuse_conn *fc = get_fuse_conn(inode); in fuse_change_attributes()
303 struct fuse_inode *fi = get_fuse_inode(inode); in fuse_change_attributes()
314 cache_mask = fuse_get_cache_mask(inode); in fuse_change_attributes()
316 attr->size = i_size_read(inode); in fuse_change_attributes()
319 attr->mtime = inode_get_mtime_sec(inode); in fuse_change_attributes()
320 attr->mtimensec = inode_get_mtime_nsec(inode); in fuse_change_attributes()
323 attr->ctime = inode_get_ctime_sec(inode); in fuse_change_attributes()
324 attr->ctimensec = inode_get_ctime_nsec(inode); in fuse_change_attributes()
333 old_mtime = inode_get_mtime(inode); in fuse_change_attributes()
334 fuse_change_attributes_common(inode, attr, sx, attr_valid, cache_mask); in fuse_change_attributes()
336 oldsize = inode->i_size; in fuse_change_attributes()
343 i_size_write(inode, attr->size); in fuse_change_attributes()
346 if (!cache_mask && S_ISREG(inode->i_mode)) { in fuse_change_attributes()
350 truncate_pagecache(inode, attr->size); in fuse_change_attributes()
368 invalidate_inode_pages2(inode->i_mapping); in fuse_change_attributes()
372 fuse_dax_dontcache(inode, attr->flags); in fuse_change_attributes()
382 static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr, in fuse_init_inode() argument
385 inode->i_mode = attr->mode & S_IFMT; in fuse_init_inode()
386 inode->i_size = attr->size; in fuse_init_inode()
387 inode_set_mtime(inode, attr->mtime, attr->mtimensec); in fuse_init_inode()
388 inode_set_ctime(inode, attr->ctime, attr->ctimensec); in fuse_init_inode()
389 if (S_ISREG(inode->i_mode)) { in fuse_init_inode()
390 fuse_init_common(inode); in fuse_init_inode()
391 fuse_init_file_inode(inode, attr->flags); in fuse_init_inode()
392 } else if (S_ISDIR(inode->i_mode)) in fuse_init_inode()
393 fuse_init_dir(inode); in fuse_init_inode()
394 else if (S_ISLNK(inode->i_mode)) in fuse_init_inode()
395 fuse_init_symlink(inode); in fuse_init_inode()
396 else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) || in fuse_init_inode()
397 S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) { in fuse_init_inode()
398 fuse_init_common(inode); in fuse_init_inode()
399 init_special_inode(inode, inode->i_mode, in fuse_init_inode()
408 inode->i_acl = inode->i_default_acl = ACL_DONT_CACHE; in fuse_init_inode()
411 static int fuse_inode_eq(struct inode *inode, void *_nodeidp) in fuse_inode_eq() argument
414 if (get_node_id(inode) == nodeid) in fuse_inode_eq()
420 static int fuse_inode_set(struct inode *inode, void *_nodeidp) in fuse_inode_set() argument
423 get_fuse_inode(inode)->nodeid = nodeid; in fuse_inode_set()
427 struct inode *fuse_iget(struct super_block *sb, u64 nodeid, in fuse_iget()
431 struct inode *inode; in fuse_iget() local
446 inode = new_inode(sb); in fuse_iget()
447 if (!inode) in fuse_iget()
450 fuse_init_inode(inode, attr, fc); in fuse_iget()
451 fi = get_fuse_inode(inode); in fuse_iget()
455 iput(inode); in fuse_iget()
460 inode->i_flags |= S_AUTOMOUNT; in fuse_iget()
465 inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set, &nodeid); in fuse_iget()
466 if (!inode) in fuse_iget()
469 if ((inode->i_state & I_NEW)) { in fuse_iget()
470 inode->i_flags |= S_NOATIME; in fuse_iget()
472 inode->i_flags |= S_NOCMTIME; in fuse_iget()
473 inode->i_generation = generation; in fuse_iget()
474 fuse_init_inode(inode, attr, fc); in fuse_iget()
475 unlock_new_inode(inode); in fuse_iget()
476 } else if (fuse_stale_inode(inode, generation, attr)) { in fuse_iget()
478 fuse_make_bad(inode); in fuse_iget()
479 if (inode != d_inode(sb->s_root)) { in fuse_iget()
480 remove_inode_hash(inode); in fuse_iget()
481 iput(inode); in fuse_iget()
485 fi = get_fuse_inode(inode); in fuse_iget()
490 fuse_change_attributes(inode, attr, NULL, attr_valid, attr_version); in fuse_iget()
492 return inode; in fuse_iget()
495 struct inode *fuse_ilookup(struct fuse_conn *fc, u64 nodeid, in fuse_ilookup()
499 struct inode *inode; in fuse_ilookup() local
506 inode = ilookup5(fm_iter->sb, nodeid, fuse_inode_eq, &nodeid); in fuse_ilookup()
507 if (inode) { in fuse_ilookup()
510 return inode; in fuse_ilookup()
521 struct inode *inode; in fuse_reverse_inval_inode() local
525 inode = fuse_ilookup(fc, nodeid, NULL); in fuse_reverse_inval_inode()
526 if (!inode) in fuse_reverse_inval_inode()
529 fi = get_fuse_inode(inode); in fuse_reverse_inval_inode()
534 fuse_invalidate_attr(inode); in fuse_reverse_inval_inode()
535 forget_all_cached_acls(inode); in fuse_reverse_inval_inode()
542 invalidate_inode_pages2_range(inode->i_mapping, in fuse_reverse_inval_inode()
545 iput(inode); in fuse_reverse_inval_inode()
549 bool fuse_lock_inode(struct inode *inode) in fuse_lock_inode() argument
553 if (!get_fuse_conn(inode)->parallel_dirops) { in fuse_lock_inode()
554 mutex_lock(&get_fuse_inode(inode)->mutex); in fuse_lock_inode()
561 void fuse_unlock_inode(struct inode *inode, bool locked) in fuse_unlock_inode() argument
564 mutex_unlock(&get_fuse_inode(inode)->mutex); in fuse_unlock_inode()
996 static struct inode *fuse_get_root_inode(struct super_block *sb, unsigned mode) in fuse_get_root_inode()
1016 struct inode *inode; in fuse_get_dentry() local
1023 inode = ilookup5(sb, handle->nodeid, fuse_inode_eq, &handle->nodeid); in fuse_get_dentry()
1024 if (!inode) { in fuse_get_dentry()
1032 &inode); in fuse_get_dentry()
1035 if (err || !inode) { in fuse_get_dentry()
1040 if (get_node_id(inode) != handle->nodeid) in fuse_get_dentry()
1044 if (inode->i_generation != handle->generation) in fuse_get_dentry()
1047 entry = d_obtain_alias(inode); in fuse_get_dentry()
1048 if (!IS_ERR(entry) && get_node_id(inode) != FUSE_ROOT_ID) in fuse_get_dentry()
1054 iput(inode); in fuse_get_dentry()
1059 static int fuse_encode_fh(struct inode *inode, u32 *fh, int *max_len, in fuse_encode_fh() argument
1060 struct inode *parent) in fuse_encode_fh()
1071 nodeid = get_fuse_inode(inode)->nodeid; in fuse_encode_fh()
1072 generation = inode->i_generation; in fuse_encode_fh()
1122 struct inode *child_inode = d_inode(child); in fuse_get_parent()
1124 struct inode *inode; in fuse_get_parent() local
1133 &dotdot_name, &outarg, &inode); in fuse_get_parent()
1140 parent = d_obtain_alias(inode); in fuse_get_parent()
1141 if (!IS_ERR(parent) && get_node_id(inode) != FUSE_ROOT_ID) in fuse_get_parent()
1549 struct timespec64 atime = inode_get_atime(&fi->inode); in fuse_fill_attr_from_inode()
1550 struct timespec64 mtime = inode_get_mtime(&fi->inode); in fuse_fill_attr_from_inode()
1551 struct timespec64 ctime = inode_get_ctime(&fi->inode); in fuse_fill_attr_from_inode()
1554 .ino = fi->inode.i_ino, in fuse_fill_attr_from_inode()
1555 .size = fi->inode.i_size, in fuse_fill_attr_from_inode()
1556 .blocks = fi->inode.i_blocks, in fuse_fill_attr_from_inode()
1563 .mode = fi->inode.i_mode, in fuse_fill_attr_from_inode()
1564 .nlink = fi->inode.i_nlink, in fuse_fill_attr_from_inode()
1565 .uid = __kuid_val(fi->inode.i_uid), in fuse_fill_attr_from_inode()
1566 .gid = __kgid_val(fi->inode.i_gid), in fuse_fill_attr_from_inode()
1567 .rdev = fi->inode.i_rdev, in fuse_fill_attr_from_inode()
1568 .blksize = 1u << fi->inode.i_blkbits, in fuse_fill_attr_from_inode()
1591 struct super_block *parent_sb = parent_fi->inode.i_sb; in fuse_fill_super_submount()
1593 struct inode *root; in fuse_fill_super_submount()
1648 struct fuse_conn *fc = get_fuse_conn(&mp_fi->inode); in fuse_get_tree_submount()
1697 struct inode *root; in fuse_fill_super_common()
2041 struct inode *inode = foo; in fuse_inode_init_once() local
2043 inode_init_once(inode); in fuse_inode_init_once()