Lines Matching refs:dentry

45 	struct dentry			*d_parent;
46 struct dentry *dentry; member
69 static struct dentry *eventfs_root_lookup(struct inode *dir,
70 struct dentry *dentry,
107 static struct dentry *create_file(const char *name, umode_t mode, in create_file()
108 struct dentry *parent, void *data, in create_file()
112 struct dentry *dentry; in create_file() local
121 dentry = eventfs_start_creating(name, parent); in create_file()
123 if (IS_ERR(dentry)) in create_file()
124 return dentry; in create_file()
126 inode = tracefs_get_inode(dentry->d_sb); in create_file()
128 return eventfs_failed_creating(dentry); in create_file()
136 d_instantiate(dentry, inode); in create_file()
137 fsnotify_create(dentry->d_parent->d_inode, dentry); in create_file()
138 return eventfs_end_creating(dentry); in create_file()
158 static struct dentry *create_dir(const char *name, struct dentry *parent, void *data) in create_dir()
161 struct dentry *dentry; in create_dir() local
164 dentry = eventfs_start_creating(name, parent); in create_dir()
165 if (IS_ERR(dentry)) in create_dir()
166 return dentry; in create_dir()
168 inode = tracefs_get_inode(dentry->d_sb); in create_dir()
170 return eventfs_failed_creating(dentry); in create_dir()
181 d_instantiate(dentry, inode); in create_dir()
182 inc_nlink(dentry->d_parent->d_inode); in create_dir()
183 fsnotify_mkdir(dentry->d_parent->d_inode, dentry); in create_dir()
184 return eventfs_end_creating(dentry); in create_dir()
195 void eventfs_set_ef_status_free(struct tracefs_inode *ti, struct dentry *dentry) in eventfs_set_ef_status_free() argument
232 ti_parent = get_tracefs(dentry->d_parent->d_inode); in eventfs_set_ef_status_free()
236 ef = dentry->d_fsdata; in eventfs_set_ef_status_free()
248 dentry->d_fsdata = NULL; in eventfs_set_ef_status_free()
249 ef->dentry = NULL; in eventfs_set_ef_status_free()
269 ef_child->d_parent = ef->dentry; in eventfs_post_create_dir()
272 ti = get_tracefs(ef->dentry->d_inode); in eventfs_post_create_dir()
284 static struct dentry *
285 create_dentry(struct eventfs_file *ef, struct dentry *parent, bool lookup) in create_dentry()
288 struct dentry *dentry; in create_dentry() local
295 if (ef->dentry) { in create_dentry()
296 dentry = ef->dentry; in create_dentry()
299 dget(dentry); in create_dentry()
301 return dentry; in create_dentry()
309 dentry = create_dir(ef->name, parent, ef->data); in create_dentry()
311 dentry = create_file(ef->name, ef->mode, parent, in create_dentry()
318 if (IS_ERR_OR_NULL(dentry)) { in create_dentry()
320 dentry = ef->dentry; in create_dentry()
321 if (dentry && !lookup) in create_dentry()
322 dget(dentry); in create_dentry()
324 return dentry; in create_dentry()
327 if (!ef->dentry && !ef->is_freed) { in create_dentry()
328 ef->dentry = dentry; in create_dentry()
331 dentry->d_fsdata = ef; in create_dentry()
344 d_invalidate(dentry); in create_dentry()
347 dput(dentry); in create_dentry()
349 return invalidate ? NULL : dentry; in create_dentry()
372 static struct dentry *eventfs_root_lookup(struct inode *dir, in eventfs_root_lookup()
373 struct dentry *dentry, in eventfs_root_lookup() argument
379 struct dentry *ret = NULL; in eventfs_root_lookup()
390 if (!match_event_file(ef, dentry->d_name.name)) in eventfs_root_lookup()
392 ret = simple_lookup(dir, dentry, flags); in eventfs_root_lookup()
402 struct dentry **dentries;
451 struct dentry **dentries = NULL; in dcache_dir_open_wrapper()
452 struct dentry *dentry = file_dentry(file); in dcache_dir_open_wrapper() local
453 struct dentry *d; in dcache_dir_open_wrapper()
474 d = create_dentry(ef, dentry, false); in dcache_dir_open_wrapper()
476 struct dentry **tmp; in dcache_dir_open_wrapper()
572 struct dentry *eventfs_create_events_dir(const char *name, in eventfs_create_events_dir()
573 struct dentry *parent) in eventfs_create_events_dir()
575 struct dentry *dentry = tracefs_start_creating(name, parent); in eventfs_create_events_dir() local
583 if (IS_ERR(dentry)) in eventfs_create_events_dir()
584 return dentry; in eventfs_create_events_dir()
589 inode = tracefs_get_inode(dentry->d_sb); in eventfs_create_events_dir()
592 tracefs_failed_creating(dentry); in eventfs_create_events_dir()
608 d_instantiate(dentry, inode); in eventfs_create_events_dir()
609 inc_nlink(dentry->d_parent->d_inode); in eventfs_create_events_dir()
610 fsnotify_mkdir(dentry->d_parent->d_inode, dentry); in eventfs_create_events_dir()
611 return tracefs_end_creating(dentry); in eventfs_create_events_dir()
624 struct dentry *parent) in eventfs_add_subsystem_dir()
676 ef->d_parent = ef_parent->dentry; in eventfs_add_dir()
697 struct dentry *parent, void *data, in eventfs_add_events_file()
770 ef->d_parent = ef_parent->dentry; in eventfs_add_file()
831 struct dentry *dentry_list = NULL; in eventfs_remove()
832 struct dentry *dentry; in eventfs_remove() local
840 if (ef->dentry) { in eventfs_remove()
844 dget(ef->dentry); in eventfs_remove()
860 ef->dentry->d_fsdata = (void *)(ptr | 1); in eventfs_remove()
861 dentry_list = ef->dentry; in eventfs_remove()
862 ef->dentry = NULL; in eventfs_remove()
871 dentry = dentry_list; in eventfs_remove()
872 ptr = (unsigned long)dentry->d_fsdata & ~1UL; in eventfs_remove()
873 dentry_list = (struct dentry *)ptr; in eventfs_remove()
874 dentry->d_fsdata = NULL; in eventfs_remove()
875 d_invalidate(dentry); in eventfs_remove()
878 WARN_ONCE((int)d_count(dentry) < 1, in eventfs_remove()
880 dentry, d_count(dentry)); in eventfs_remove()
882 dput(dentry); in eventfs_remove()
892 void eventfs_remove_events_dir(struct dentry *dentry) in eventfs_remove_events_dir() argument
896 if (!dentry || !dentry->d_inode) in eventfs_remove_events_dir()
899 ti = get_tracefs(dentry->d_inode); in eventfs_remove_events_dir()
903 d_invalidate(dentry); in eventfs_remove_events_dir()
904 dput(dentry); in eventfs_remove_events_dir()