Lines Matching refs:entry
38 static inline void __fuse_dentry_settime(struct dentry *entry, u64 time) in __fuse_dentry_settime() argument
40 entry->d_fsdata = (void *) time; in __fuse_dentry_settime()
43 static inline u64 fuse_dentry_time(const struct dentry *entry) in fuse_dentry_time() argument
45 return (u64)entry->d_fsdata; in fuse_dentry_time()
59 static inline u64 fuse_dentry_time(const struct dentry *entry) in fuse_dentry_time() argument
61 return ((union fuse_dentry *) entry->d_fsdata)->time; in fuse_dentry_time()
112 void fuse_change_entry_timeout(struct dentry *entry, struct fuse_entry_out *o) in fuse_change_entry_timeout() argument
114 fuse_dentry_settime(entry, in fuse_change_entry_timeout()
156 void fuse_invalidate_entry_cache(struct dentry *entry) in fuse_invalidate_entry_cache() argument
158 fuse_dentry_settime(entry, 0); in fuse_invalidate_entry_cache()
165 static void fuse_invalidate_entry(struct dentry *entry) in fuse_invalidate_entry() argument
167 d_invalidate(entry); in fuse_invalidate_entry()
168 fuse_invalidate_entry_cache(entry); in fuse_invalidate_entry()
199 struct dentry *entry, unsigned int flags) in fuse_dentry_revalidate() argument
208 if (entry->d_time < atomic_read(&fc->epoch)) in fuse_dentry_revalidate()
211 inode = d_inode_rcu(entry); in fuse_dentry_revalidate()
214 else if (time_before64(fuse_dentry_time(entry), get_jiffies_64()) || in fuse_dentry_revalidate()
267 fuse_change_entry_timeout(entry, &outarg); in fuse_dentry_revalidate()
410 static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry, in fuse_lookup() argument
428 err = fuse_lookup_name(dir->i_sb, get_node_id(dir), &entry->d_name, in fuse_lookup()
442 newent = d_splice_alias(inode, entry); in fuse_lookup()
447 entry = newent ? newent : entry; in fuse_lookup()
448 entry->d_time = epoch; in fuse_lookup()
450 fuse_change_entry_timeout(entry, &outarg); in fuse_lookup()
452 fuse_invalidate_entry_cache(entry); in fuse_lookup()
464 static int get_security_context(struct dentry *entry, umode_t mode, in get_security_context() argument
476 err = security_dentry_init_security(entry, mode, &entry->d_name, in get_security_context()
619 struct dentry *entry, struct file *file, in fuse_create_open() argument
668 args.in_args[1].size = entry->d_name.len + 1; in fuse_create_open()
669 args.in_args[1].value = entry->d_name.name; in fuse_create_open()
678 err = get_create_ext(idmap, &args, dir, entry, mode); in fuse_create_open()
705 d_instantiate(entry, inode); in fuse_create_open()
706 entry->d_time = epoch; in fuse_create_open()
707 fuse_change_entry_timeout(entry, &outentry); in fuse_create_open()
712 err = finish_open(file, entry, fuse_finish_open); in fuse_create_open()
735 static int fuse_atomic_open(struct inode *dir, struct dentry *entry, in fuse_atomic_open() argument
747 if (d_in_lookup(entry)) { in fuse_atomic_open()
748 res = fuse_lookup(dir, entry, 0); in fuse_atomic_open()
753 entry = res; in fuse_atomic_open()
756 if (!(flags & O_CREAT) || d_really_is_positive(entry)) in fuse_atomic_open()
765 err = fuse_create_open(idmap, dir, entry, file, flags, mode, FUSE_CREATE); in fuse_atomic_open()
770 fuse_invalidate_entry(entry); in fuse_atomic_open()
776 err = fuse_mknod(idmap, dir, entry, mode, 0); in fuse_atomic_open()
788 struct dentry *entry, umode_t mode) in create_new_entry() argument
812 err = get_create_ext(idmap, args, dir, entry, mode); in create_new_entry()
837 d_drop(entry); in create_new_entry()
838 d = d_splice_alias(inode, entry); in create_new_entry()
846 entry->d_time = epoch; in create_new_entry()
847 fuse_change_entry_timeout(entry, &outarg); in create_new_entry()
854 fuse_invalidate_entry(entry); in create_new_entry()
861 struct dentry *entry, umode_t mode) in create_new_nondir() argument
872 return PTR_ERR(create_new_entry(idmap, fm, args, dir, entry, mode)); in create_new_nondir()
876 struct dentry *entry, umode_t mode, dev_t rdev) in fuse_mknod() argument
893 args.in_args[1].size = entry->d_name.len + 1; in fuse_mknod()
894 args.in_args[1].value = entry->d_name.name; in fuse_mknod()
895 return create_new_nondir(idmap, fm, &args, dir, entry, mode); in fuse_mknod()
899 struct dentry *entry, umode_t mode, bool excl) in fuse_create() argument
901 return fuse_mknod(idmap, dir, entry, mode, 0); in fuse_create()
923 struct dentry *entry, umode_t mode) in fuse_mkdir() argument
939 args.in_args[1].size = entry->d_name.len + 1; in fuse_mkdir()
940 args.in_args[1].value = entry->d_name.name; in fuse_mkdir()
941 return create_new_entry(idmap, fm, &args, dir, entry, S_IFDIR); in fuse_mkdir()
945 struct dentry *entry, const char *link) in fuse_symlink() argument
954 args.in_args[1].size = entry->d_name.len + 1; in fuse_symlink()
955 args.in_args[1].value = entry->d_name.name; in fuse_symlink()
958 return create_new_nondir(idmap, fm, &args, dir, entry, S_IFLNK); in fuse_symlink()
983 static void fuse_entry_unlinked(struct dentry *entry) in fuse_entry_unlinked() argument
985 struct inode *inode = d_inode(entry); in fuse_entry_unlinked()
1002 fuse_invalidate_entry_cache(entry); in fuse_entry_unlinked()
1006 static int fuse_unlink(struct inode *dir, struct dentry *entry) in fuse_unlink() argument
1019 args.in_args[1].size = entry->d_name.len + 1; in fuse_unlink()
1020 args.in_args[1].value = entry->d_name.name; in fuse_unlink()
1024 fuse_entry_unlinked(entry); in fuse_unlink()
1026 fuse_invalidate_entry(entry); in fuse_unlink()
1030 static int fuse_rmdir(struct inode *dir, struct dentry *entry) in fuse_rmdir() argument
1043 args.in_args[1].size = entry->d_name.len + 1; in fuse_rmdir()
1044 args.in_args[1].value = entry->d_name.name; in fuse_rmdir()
1048 fuse_entry_unlinked(entry); in fuse_rmdir()
1050 fuse_invalidate_entry(entry); in fuse_rmdir()
1138 static int fuse_link(struct dentry *entry, struct inode *newdir, in fuse_link() argument
1143 struct inode *inode = d_inode(entry); in fuse_link()
1400 struct dentry *entry; in fuse_reverse_inval_entry() local
1416 entry = d_lookup(dir, name); in fuse_reverse_inval_entry()
1418 if (!entry) in fuse_reverse_inval_entry()
1423 d_invalidate(entry); in fuse_reverse_inval_entry()
1424 fuse_invalidate_entry_cache(entry); in fuse_reverse_inval_entry()
1426 if (child_nodeid != 0 && d_really_is_positive(entry)) { in fuse_reverse_inval_entry()
1427 inode_lock(d_inode(entry)); in fuse_reverse_inval_entry()
1428 if (get_node_id(d_inode(entry)) != child_nodeid) { in fuse_reverse_inval_entry()
1432 if (d_mountpoint(entry)) { in fuse_reverse_inval_entry()
1436 if (d_is_dir(entry)) { in fuse_reverse_inval_entry()
1437 shrink_dcache_parent(entry); in fuse_reverse_inval_entry()
1438 if (!simple_empty(entry)) { in fuse_reverse_inval_entry()
1442 d_inode(entry)->i_flags |= S_DEAD; in fuse_reverse_inval_entry()
1444 dont_mount(entry); in fuse_reverse_inval_entry()
1445 clear_nlink(d_inode(entry)); in fuse_reverse_inval_entry()
1448 inode_unlock(d_inode(entry)); in fuse_reverse_inval_entry()
1450 d_delete(entry); in fuse_reverse_inval_entry()
1454 dput(entry); in fuse_reverse_inval_entry()
2118 static int fuse_setattr(struct mnt_idmap *idmap, struct dentry *entry, in fuse_setattr() argument
2121 struct inode *inode = d_inode(entry); in fuse_setattr()
2165 ret = fuse_do_setattr(idmap, entry, attr, file); in fuse_setattr()
2175 if (d_is_dir(entry) && (attr->ia_valid & ATTR_MODE)) in fuse_setattr()
2176 fuse_invalidate_entry_cache(entry); in fuse_setattr()