Lines Matching refs:dentry
45 static void configfs_d_iput(struct dentry * dentry, in configfs_d_iput() argument
48 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_d_iput()
59 if (sd->s_dentry == dentry) in configfs_d_iput()
232 static int configfs_dirent_exists(struct dentry *dentry) in configfs_dirent_exists() argument
234 struct configfs_dirent *parent_sd = dentry->d_parent->d_fsdata; in configfs_dirent_exists()
235 const unsigned char *new = dentry->d_name.name; in configfs_dirent_exists()
253 struct dentry * dentry, void * element, in configfs_make_dirent() argument
263 sd->s_dentry = dentry; in configfs_make_dirent()
264 if (dentry) in configfs_make_dirent()
265 dentry->d_fsdata = configfs_get(sd); in configfs_make_dirent()
270 static void configfs_remove_dirent(struct dentry *dentry) in configfs_remove_dirent() argument
272 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_remove_dirent()
292 static int configfs_create_dir(struct config_item *item, struct dentry *dentry, in configfs_create_dir() argument
297 struct dentry *p = dentry->d_parent; in configfs_create_dir()
302 error = configfs_make_dirent(p->d_fsdata, dentry, item, mode, in configfs_create_dir()
308 configfs_set_dir_dirent_depth(p->d_fsdata, dentry->d_fsdata); in configfs_create_dir()
309 inode = configfs_create(dentry, mode); in configfs_create_dir()
317 d_instantiate(dentry, inode); in configfs_create_dir()
319 dget(dentry); /* pin directory dentries in core */ in configfs_create_dir()
321 item->ci_dentry = dentry; in configfs_create_dir()
325 configfs_put(dentry->d_fsdata); in configfs_create_dir()
326 configfs_remove_dirent(dentry); in configfs_create_dir()
368 int configfs_create_link(struct configfs_dirent *target, struct dentry *parent, in configfs_create_link()
369 struct dentry *dentry, char *body) in configfs_create_link() argument
376 err = configfs_make_dirent(p, dentry, target, mode, CONFIGFS_ITEM_LINK, in configfs_create_link()
381 inode = configfs_create(dentry, mode); in configfs_create_link()
387 d_instantiate(dentry, inode); in configfs_create_link()
388 dget(dentry); /* pin link dentries in core */ in configfs_create_link()
392 configfs_put(dentry->d_fsdata); in configfs_create_link()
393 configfs_remove_dirent(dentry); in configfs_create_link()
397 static void remove_dir(struct dentry * d) in remove_dir()
399 struct dentry * parent = dget(d->d_parent); in remove_dir()
424 struct dentry * dentry = dget(item->ci_dentry); in configfs_remove_dir() local
426 if (!dentry) in configfs_remove_dir()
429 remove_dir(dentry); in configfs_remove_dir()
433 dput(dentry); in configfs_remove_dir()
436 static struct dentry * configfs_lookup(struct inode *dir, in configfs_lookup()
437 struct dentry *dentry, in configfs_lookup() argument
440 struct configfs_dirent * parent_sd = dentry->d_parent->d_fsdata; in configfs_lookup()
444 if (dentry->d_name.len > NAME_MAX) in configfs_lookup()
473 !strcmp(configfs_get_name(sd), dentry->d_name.name)) { in configfs_lookup()
477 dentry->d_fsdata = configfs_get(sd); in configfs_lookup()
478 sd->s_dentry = dentry; in configfs_lookup()
481 inode = configfs_create(dentry, mode); in configfs_lookup()
498 d_add(dentry, inode); in configfs_lookup()
510 static int configfs_detach_prep(struct dentry *dentry, struct dentry **wait) in configfs_detach_prep() argument
512 struct configfs_dirent *parent_sd = dentry->d_fsdata; in configfs_detach_prep()
557 static void configfs_detach_rollback(struct dentry *dentry) in configfs_detach_rollback() argument
559 struct configfs_dirent *parent_sd = dentry->d_fsdata; in configfs_detach_rollback()
571 struct dentry * dentry = dget(item->ci_dentry); in detach_attrs() local
575 if (!dentry) in detach_attrs()
579 dentry->d_name.name); in detach_attrs()
581 parent_sd = dentry->d_fsdata; in detach_attrs()
588 configfs_drop_dentry(sd, dentry); in detach_attrs()
595 dput(dentry); in detach_attrs()
640 struct dentry *dentry,
646 struct dentry * dentry = dget(group->cg_item.ci_dentry); in detach_groups() local
647 struct dentry *child; in detach_groups()
651 if (!dentry) in detach_groups()
654 parent_sd = dentry->d_fsdata; in detach_groups()
677 dput(dentry); in detach_groups()
695 struct dentry *child, *parent = parent_group->cg_item.ci_dentry; in create_default_group()
841 struct dentry *dentry, in configfs_attach_item() argument
846 ret = configfs_create_dir(item, dentry, frag); in configfs_attach_item()
855 inode_lock(d_inode(dentry)); in configfs_attach_item()
857 d_inode(dentry)->i_flags |= S_DEAD; in configfs_attach_item()
858 dont_mount(dentry); in configfs_attach_item()
859 inode_unlock(d_inode(dentry)); in configfs_attach_item()
860 d_delete(dentry); in configfs_attach_item()
876 struct dentry *dentry, in configfs_attach_group() argument
882 ret = configfs_attach_item(parent_item, item, dentry, frag); in configfs_attach_group()
884 sd = dentry->d_fsdata; in configfs_attach_group()
896 inode_lock_nested(d_inode(dentry), I_MUTEX_CHILD); in configfs_attach_group()
901 d_inode(dentry)->i_flags |= S_DEAD; in configfs_attach_group()
902 dont_mount(dentry); in configfs_attach_group()
905 inode_unlock(d_inode(dentry)); in configfs_attach_group()
907 d_delete(dentry); in configfs_attach_group()
1062 static int configfs_depend_prep(struct dentry *origin, in configfs_depend_prep()
1092 static int configfs_do_depend_item(struct dentry *subsys_dentry, in configfs_do_depend_item()
1142 struct dentry *root; in configfs_depend_item()
1282 static struct dentry *configfs_mkdir(struct mnt_idmap *idmap, struct inode *dir, in configfs_mkdir()
1283 struct dentry *dentry, umode_t mode) in configfs_mkdir() argument
1297 sd = dentry->d_parent->d_fsdata; in configfs_mkdir()
1320 parent_item = configfs_get_config_item(dentry->d_parent); in configfs_mkdir()
1347 name = kmalloc(dentry->d_name.len + 1, GFP_KERNEL); in configfs_mkdir()
1353 snprintf(name, dentry->d_name.len + 1, "%s", dentry->d_name.name); in configfs_mkdir()
1421 ret = configfs_attach_group(parent_item, item, dentry, frag); in configfs_mkdir()
1423 ret = configfs_attach_item(parent_item, item, dentry, frag); in configfs_mkdir()
1428 configfs_dir_set_ready(dentry->d_fsdata); in configfs_mkdir()
1466 static int configfs_rmdir(struct inode *dir, struct dentry *dentry) in configfs_rmdir() argument
1476 sd = dentry->d_fsdata; in configfs_rmdir()
1481 parent_item = configfs_get_config_item(dentry->d_parent); in configfs_rmdir()
1499 struct dentry *wait; in configfs_rmdir()
1510 ret = configfs_detach_prep(dentry, &wait); in configfs_rmdir()
1512 configfs_detach_rollback(dentry); in configfs_rmdir()
1533 configfs_detach_rollback(dentry); in configfs_rmdir()
1542 item = configfs_get_config_item(dentry); in configfs_rmdir()
1592 struct dentry * dentry = file->f_path.dentry; in configfs_dir_open() local
1593 struct configfs_dirent * parent_sd = dentry->d_fsdata; in configfs_dir_open()
1596 inode_lock(d_inode(dentry)); in configfs_dir_open()
1609 inode_unlock(d_inode(dentry)); in configfs_dir_open()
1616 struct dentry * dentry = file->f_path.dentry; in configfs_dir_close() local
1619 inode_lock(d_inode(dentry)); in configfs_dir_close()
1623 inode_unlock(d_inode(dentry)); in configfs_dir_close()
1632 struct dentry *dentry = file->f_path.dentry; in configfs_readdir() local
1633 struct super_block *sb = dentry->d_sb; in configfs_readdir()
1634 struct configfs_dirent * parent_sd = dentry->d_fsdata; in configfs_readdir()
1667 dentry = next->s_dentry; in configfs_readdir()
1668 if (dentry) in configfs_readdir()
1669 inode = d_inode(dentry); in configfs_readdir()
1694 struct dentry * dentry = file->f_path.dentry; in configfs_dir_lseek() local
1710 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_dir_lseek()
1755 struct dentry *parent; in configfs_register_group()
1799 struct dentry *dentry = group->cg_item.ci_dentry; in configfs_unregister_group() local
1800 struct dentry *parent = group->cg_item.ci_parent->ci_dentry; in configfs_unregister_group()
1801 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_unregister_group()
1810 configfs_detach_prep(dentry, NULL); in configfs_unregister_group()
1814 d_inode(dentry)->i_flags |= S_DEAD; in configfs_unregister_group()
1815 dont_mount(dentry); in configfs_unregister_group()
1816 d_drop(dentry); in configfs_unregister_group()
1817 fsnotify_rmdir(d_inode(parent), dentry); in configfs_unregister_group()
1820 dput(dentry); in configfs_unregister_group()
1876 struct dentry *dentry; in configfs_register_subsystem() local
1877 struct dentry *root; in configfs_register_subsystem()
1902 dentry = d_alloc_name(root, group->cg_item.ci_name); in configfs_register_subsystem()
1903 if (dentry) { in configfs_register_subsystem()
1904 d_add(dentry, NULL); in configfs_register_subsystem()
1906 err = configfs_dirent_exists(dentry); in configfs_register_subsystem()
1910 dentry, frag); in configfs_register_subsystem()
1912 BUG_ON(d_inode(dentry)); in configfs_register_subsystem()
1913 d_drop(dentry); in configfs_register_subsystem()
1914 dput(dentry); in configfs_register_subsystem()
1917 configfs_dir_set_ready(dentry->d_fsdata); in configfs_register_subsystem()
1938 struct dentry *dentry = group->cg_item.ci_dentry; in configfs_unregister_subsystem() local
1939 struct dentry *root = dentry->d_sb->s_root; in configfs_unregister_subsystem()
1940 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_unregister_subsystem()
1943 if (dentry->d_parent != root) { in configfs_unregister_subsystem()
1954 inode_lock_nested(d_inode(dentry), I_MUTEX_CHILD); in configfs_unregister_subsystem()
1957 if (configfs_detach_prep(dentry, NULL)) { in configfs_unregister_subsystem()
1963 d_inode(dentry)->i_flags |= S_DEAD; in configfs_unregister_subsystem()
1964 dont_mount(dentry); in configfs_unregister_subsystem()
1965 inode_unlock(d_inode(dentry)); in configfs_unregister_subsystem()
1967 d_drop(dentry); in configfs_unregister_subsystem()
1968 fsnotify_rmdir(d_inode(root), dentry); in configfs_unregister_subsystem()
1972 dput(dentry); in configfs_unregister_subsystem()