Lines Matching refs:dentry

37 static void configfs_d_iput(struct dentry * dentry,  in configfs_d_iput()  argument
40 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_d_iput()
51 if (sd->s_dentry == dentry) in configfs_d_iput()
235 struct dentry * dentry, void * element, in configfs_make_dirent() argument
245 sd->s_dentry = dentry; in configfs_make_dirent()
246 if (dentry) in configfs_make_dirent()
247 dentry->d_fsdata = configfs_get(sd); in configfs_make_dirent()
252 static void configfs_remove_dirent(struct dentry *dentry) in configfs_remove_dirent() argument
254 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_remove_dirent()
274 static int configfs_create_dir(struct config_item *item, struct dentry *dentry, in configfs_create_dir() argument
279 struct dentry *p = dentry->d_parent; in configfs_create_dir()
284 error = configfs_dirent_exists(p->d_fsdata, dentry->d_name.name); in configfs_create_dir()
288 error = configfs_make_dirent(p->d_fsdata, dentry, item, mode, in configfs_create_dir()
294 configfs_set_dir_dirent_depth(p->d_fsdata, dentry->d_fsdata); in configfs_create_dir()
295 inode = configfs_create(dentry, mode); in configfs_create_dir()
303 d_instantiate(dentry, inode); in configfs_create_dir()
305 dget(dentry); /* pin directory dentries in core */ in configfs_create_dir()
307 item->ci_dentry = dentry; in configfs_create_dir()
311 configfs_remove_dirent(dentry); in configfs_create_dir()
353 int configfs_create_link(struct configfs_dirent *target, struct dentry *parent, in configfs_create_link()
354 struct dentry *dentry, char *body) in configfs_create_link() argument
361 err = configfs_make_dirent(p, dentry, target, mode, CONFIGFS_ITEM_LINK, in configfs_create_link()
366 inode = configfs_create(dentry, mode); in configfs_create_link()
372 d_instantiate(dentry, inode); in configfs_create_link()
373 dget(dentry); /* pin link dentries in core */ in configfs_create_link()
377 configfs_remove_dirent(dentry); in configfs_create_link()
381 static void remove_dir(struct dentry * d) in remove_dir()
383 struct dentry * parent = dget(d->d_parent); in remove_dir()
408 struct dentry * dentry = dget(item->ci_dentry); in configfs_remove_dir() local
410 if (!dentry) in configfs_remove_dir()
413 remove_dir(dentry); in configfs_remove_dir()
417 dput(dentry); in configfs_remove_dir()
420 static struct dentry * configfs_lookup(struct inode *dir, in configfs_lookup()
421 struct dentry *dentry, in configfs_lookup() argument
424 struct configfs_dirent * parent_sd = dentry->d_parent->d_fsdata; in configfs_lookup()
428 if (dentry->d_name.len > NAME_MAX) in configfs_lookup()
445 !strcmp(configfs_get_name(sd), dentry->d_name.name)) { in configfs_lookup()
449 dentry->d_fsdata = configfs_get(sd); in configfs_lookup()
450 sd->s_dentry = dentry; in configfs_lookup()
453 inode = configfs_create(dentry, mode); in configfs_lookup()
470 d_add(dentry, inode); in configfs_lookup()
482 static int configfs_detach_prep(struct dentry *dentry, struct dentry **wait) in configfs_detach_prep() argument
484 struct configfs_dirent *parent_sd = dentry->d_fsdata; in configfs_detach_prep()
529 static void configfs_detach_rollback(struct dentry *dentry) in configfs_detach_rollback() argument
531 struct configfs_dirent *parent_sd = dentry->d_fsdata; in configfs_detach_rollback()
543 struct dentry * dentry = dget(item->ci_dentry); in detach_attrs() local
547 if (!dentry) in detach_attrs()
551 dentry->d_name.name); in detach_attrs()
553 parent_sd = dentry->d_fsdata; in detach_attrs()
560 configfs_drop_dentry(sd, dentry); in detach_attrs()
567 dput(dentry); in detach_attrs()
602 struct dentry *dentry,
608 struct dentry * dentry = dget(group->cg_item.ci_dentry); in detach_groups() local
609 struct dentry *child; in detach_groups()
613 if (!dentry) in detach_groups()
616 parent_sd = dentry->d_fsdata; in detach_groups()
639 dput(dentry); in detach_groups()
657 struct dentry *child, *parent = parent_group->cg_item.ci_dentry; in create_default_group()
803 struct dentry *dentry, in configfs_attach_item() argument
808 ret = configfs_create_dir(item, dentry, frag); in configfs_attach_item()
817 inode_lock(d_inode(dentry)); in configfs_attach_item()
819 d_inode(dentry)->i_flags |= S_DEAD; in configfs_attach_item()
820 dont_mount(dentry); in configfs_attach_item()
821 inode_unlock(d_inode(dentry)); in configfs_attach_item()
822 d_delete(dentry); in configfs_attach_item()
838 struct dentry *dentry, in configfs_attach_group() argument
844 ret = configfs_attach_item(parent_item, item, dentry, frag); in configfs_attach_group()
846 sd = dentry->d_fsdata; in configfs_attach_group()
858 inode_lock_nested(d_inode(dentry), I_MUTEX_CHILD); in configfs_attach_group()
863 d_inode(dentry)->i_flags |= S_DEAD; in configfs_attach_group()
864 dont_mount(dentry); in configfs_attach_group()
867 inode_unlock(d_inode(dentry)); in configfs_attach_group()
869 d_delete(dentry); in configfs_attach_group()
1024 static int configfs_depend_prep(struct dentry *origin, in configfs_depend_prep()
1054 static int configfs_do_depend_item(struct dentry *subsys_dentry, in configfs_do_depend_item()
1104 struct dentry *root; in configfs_depend_item()
1245 struct dentry *dentry, umode_t mode) in configfs_mkdir() argument
1259 sd = dentry->d_parent->d_fsdata; in configfs_mkdir()
1282 parent_item = configfs_get_config_item(dentry->d_parent); in configfs_mkdir()
1309 name = kmalloc(dentry->d_name.len + 1, GFP_KERNEL); in configfs_mkdir()
1315 snprintf(name, dentry->d_name.len + 1, "%s", dentry->d_name.name); in configfs_mkdir()
1383 ret = configfs_attach_group(parent_item, item, dentry, frag); in configfs_mkdir()
1385 ret = configfs_attach_item(parent_item, item, dentry, frag); in configfs_mkdir()
1390 configfs_dir_set_ready(dentry->d_fsdata); in configfs_mkdir()
1428 static int configfs_rmdir(struct inode *dir, struct dentry *dentry) in configfs_rmdir() argument
1438 sd = dentry->d_fsdata; in configfs_rmdir()
1443 parent_item = configfs_get_config_item(dentry->d_parent); in configfs_rmdir()
1461 struct dentry *wait; in configfs_rmdir()
1472 ret = configfs_detach_prep(dentry, &wait); in configfs_rmdir()
1474 configfs_detach_rollback(dentry); in configfs_rmdir()
1495 configfs_detach_rollback(dentry); in configfs_rmdir()
1504 item = configfs_get_config_item(dentry); in configfs_rmdir()
1554 struct dentry * dentry = file->f_path.dentry; in configfs_dir_open() local
1555 struct configfs_dirent * parent_sd = dentry->d_fsdata; in configfs_dir_open()
1558 inode_lock(d_inode(dentry)); in configfs_dir_open()
1571 inode_unlock(d_inode(dentry)); in configfs_dir_open()
1578 struct dentry * dentry = file->f_path.dentry; in configfs_dir_close() local
1581 inode_lock(d_inode(dentry)); in configfs_dir_close()
1585 inode_unlock(d_inode(dentry)); in configfs_dir_close()
1600 struct dentry *dentry = file->f_path.dentry; in configfs_readdir() local
1601 struct super_block *sb = dentry->d_sb; in configfs_readdir()
1602 struct configfs_dirent * parent_sd = dentry->d_fsdata; in configfs_readdir()
1635 dentry = next->s_dentry; in configfs_readdir()
1636 if (dentry) in configfs_readdir()
1637 inode = d_inode(dentry); in configfs_readdir()
1661 struct dentry * dentry = file->f_path.dentry; in configfs_dir_lseek() local
1677 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_dir_lseek()
1722 struct dentry *parent; in configfs_register_group()
1766 struct dentry *dentry = group->cg_item.ci_dentry; in configfs_unregister_group() local
1767 struct dentry *parent = group->cg_item.ci_parent->ci_dentry; in configfs_unregister_group()
1768 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_unregister_group()
1777 configfs_detach_prep(dentry, NULL); in configfs_unregister_group()
1781 d_inode(dentry)->i_flags |= S_DEAD; in configfs_unregister_group()
1782 dont_mount(dentry); in configfs_unregister_group()
1783 fsnotify_rmdir(d_inode(parent), dentry); in configfs_unregister_group()
1784 d_delete(dentry); in configfs_unregister_group()
1787 dput(dentry); in configfs_unregister_group()
1843 struct dentry *dentry; in configfs_register_subsystem() local
1844 struct dentry *root; in configfs_register_subsystem()
1867 dentry = d_alloc_name(root, group->cg_item.ci_name); in configfs_register_subsystem()
1868 if (dentry) { in configfs_register_subsystem()
1869 d_add(dentry, NULL); in configfs_register_subsystem()
1872 dentry, frag); in configfs_register_subsystem()
1874 BUG_ON(d_inode(dentry)); in configfs_register_subsystem()
1875 d_drop(dentry); in configfs_register_subsystem()
1876 dput(dentry); in configfs_register_subsystem()
1879 configfs_dir_set_ready(dentry->d_fsdata); in configfs_register_subsystem()
1898 struct dentry *dentry = group->cg_item.ci_dentry; in configfs_unregister_subsystem() local
1899 struct dentry *root = dentry->d_sb->s_root; in configfs_unregister_subsystem()
1900 struct configfs_dirent *sd = dentry->d_fsdata; in configfs_unregister_subsystem()
1903 if (dentry->d_parent != root) { in configfs_unregister_subsystem()
1914 inode_lock_nested(d_inode(dentry), I_MUTEX_CHILD); in configfs_unregister_subsystem()
1917 if (configfs_detach_prep(dentry, NULL)) { in configfs_unregister_subsystem()
1923 d_inode(dentry)->i_flags |= S_DEAD; in configfs_unregister_subsystem()
1924 dont_mount(dentry); in configfs_unregister_subsystem()
1925 fsnotify_rmdir(d_inode(root), dentry); in configfs_unregister_subsystem()
1926 inode_unlock(d_inode(dentry)); in configfs_unregister_subsystem()
1928 d_delete(dentry); in configfs_unregister_subsystem()
1932 dput(dentry); in configfs_unregister_subsystem()