• Home
  • Raw
  • Download

Lines Matching refs:dentry

47 #define DNAME_INLINE_LEN (sizeof(struct dentry)-offsetof(struct dentry,d_iname))
69 static void __d_free(struct dentry *dentry) in __d_free() argument
71 WARN_ON(!list_empty(&dentry->d_alias)); in __d_free()
72 if (dname_external(dentry)) in __d_free()
73 kfree(dentry->d_name.name); in __d_free()
74 kmem_cache_free(dentry_cache, dentry); in __d_free()
79 struct dentry * dentry = container_of(head, struct dentry, d_u.d_rcu); in d_callback() local
80 __d_free(dentry); in d_callback()
87 static void d_free(struct dentry *dentry) in d_free() argument
89 if (dentry->d_op && dentry->d_op->d_release) in d_free()
90 dentry->d_op->d_release(dentry); in d_free()
92 if (hlist_unhashed(&dentry->d_hash)) in d_free()
93 __d_free(dentry); in d_free()
95 call_rcu(&dentry->d_u.d_rcu, d_callback); in d_free()
102 static void dentry_iput(struct dentry * dentry) in dentry_iput() argument
103 __releases(dentry->d_lock) in dentry_iput()
106 struct inode *inode = dentry->d_inode; in dentry_iput()
108 dentry->d_inode = NULL; in dentry_iput()
109 list_del_init(&dentry->d_alias); in dentry_iput()
110 spin_unlock(&dentry->d_lock); in dentry_iput()
114 if (dentry->d_op && dentry->d_op->d_iput) in dentry_iput()
115 dentry->d_op->d_iput(dentry, inode); in dentry_iput()
119 spin_unlock(&dentry->d_lock); in dentry_iput()
127 static void dentry_lru_add(struct dentry *dentry) in dentry_lru_add() argument
129 list_add(&dentry->d_lru, &dentry->d_sb->s_dentry_lru); in dentry_lru_add()
130 dentry->d_sb->s_nr_dentry_unused++; in dentry_lru_add()
134 static void dentry_lru_add_tail(struct dentry *dentry) in dentry_lru_add_tail() argument
136 list_add_tail(&dentry->d_lru, &dentry->d_sb->s_dentry_lru); in dentry_lru_add_tail()
137 dentry->d_sb->s_nr_dentry_unused++; in dentry_lru_add_tail()
141 static void dentry_lru_del(struct dentry *dentry) in dentry_lru_del() argument
143 if (!list_empty(&dentry->d_lru)) { in dentry_lru_del()
144 list_del(&dentry->d_lru); in dentry_lru_del()
145 dentry->d_sb->s_nr_dentry_unused--; in dentry_lru_del()
150 static void dentry_lru_del_init(struct dentry *dentry) in dentry_lru_del_init() argument
152 if (likely(!list_empty(&dentry->d_lru))) { in dentry_lru_del_init()
153 list_del_init(&dentry->d_lru); in dentry_lru_del_init()
154 dentry->d_sb->s_nr_dentry_unused--; in dentry_lru_del_init()
167 static struct dentry *d_kill(struct dentry *dentry) in d_kill() argument
168 __releases(dentry->d_lock) in d_kill()
171 struct dentry *parent; in d_kill()
173 list_del(&dentry->d_u.d_child); in d_kill()
176 dentry_iput(dentry); in d_kill()
177 if (IS_ROOT(dentry)) in d_kill()
180 parent = dentry->d_parent; in d_kill()
181 d_free(dentry); in d_kill()
214 void dput(struct dentry *dentry) in dput() argument
216 if (!dentry) in dput()
220 if (atomic_read(&dentry->d_count) == 1) in dput()
222 if (!atomic_dec_and_lock(&dentry->d_count, &dcache_lock)) in dput()
225 spin_lock(&dentry->d_lock); in dput()
226 if (atomic_read(&dentry->d_count)) { in dput()
227 spin_unlock(&dentry->d_lock); in dput()
235 if (dentry->d_op && dentry->d_op->d_delete) { in dput()
236 if (dentry->d_op->d_delete(dentry)) in dput()
240 if (d_unhashed(dentry)) in dput()
242 if (list_empty(&dentry->d_lru)) { in dput()
243 dentry->d_flags |= DCACHE_REFERENCED; in dput()
244 dentry_lru_add(dentry); in dput()
246 spin_unlock(&dentry->d_lock); in dput()
251 __d_drop(dentry); in dput()
254 dentry_lru_del(dentry); in dput()
255 dentry = d_kill(dentry); in dput()
256 if (dentry) in dput()
272 int d_invalidate(struct dentry * dentry) in d_invalidate() argument
278 if (d_unhashed(dentry)) { in d_invalidate()
286 if (!list_empty(&dentry->d_subdirs)) { in d_invalidate()
288 shrink_dcache_parent(dentry); in d_invalidate()
302 spin_lock(&dentry->d_lock); in d_invalidate()
303 if (atomic_read(&dentry->d_count) > 1) { in d_invalidate()
304 if (dentry->d_inode && S_ISDIR(dentry->d_inode->i_mode)) { in d_invalidate()
305 spin_unlock(&dentry->d_lock); in d_invalidate()
311 __d_drop(dentry); in d_invalidate()
312 spin_unlock(&dentry->d_lock); in d_invalidate()
319 static inline struct dentry * __dget_locked(struct dentry *dentry) in __dget_locked() argument
321 atomic_inc(&dentry->d_count); in __dget_locked()
322 dentry_lru_del_init(dentry); in __dget_locked()
323 return dentry; in __dget_locked()
326 struct dentry * dget_locked(struct dentry *dentry) in dget_locked() argument
328 return __dget_locked(dentry); in dget_locked()
348 static struct dentry * __d_find_alias(struct inode *inode, int want_discon) in __d_find_alias()
351 struct dentry *alias, *discon_alias=NULL; in __d_find_alias()
359 alias = list_entry(tmp, struct dentry, d_alias); in __d_find_alias()
375 struct dentry * d_find_alias(struct inode *inode) in d_find_alias()
377 struct dentry *de = NULL; in d_find_alias()
393 struct dentry *dentry; in d_prune_aliases() local
396 list_for_each_entry(dentry, &inode->i_dentry, d_alias) { in d_prune_aliases()
397 spin_lock(&dentry->d_lock); in d_prune_aliases()
398 if (!atomic_read(&dentry->d_count)) { in d_prune_aliases()
399 __dget_locked(dentry); in d_prune_aliases()
400 __d_drop(dentry); in d_prune_aliases()
401 spin_unlock(&dentry->d_lock); in d_prune_aliases()
403 dput(dentry); in d_prune_aliases()
406 spin_unlock(&dentry->d_lock); in d_prune_aliases()
419 static void prune_one_dentry(struct dentry * dentry) in prune_one_dentry() argument
420 __releases(dentry->d_lock) in prune_one_dentry()
424 __d_drop(dentry); in prune_one_dentry()
425 dentry = d_kill(dentry); in prune_one_dentry()
432 while (dentry) { in prune_one_dentry()
433 if (!atomic_dec_and_lock(&dentry->d_count, &dentry->d_lock)) in prune_one_dentry()
436 if (dentry->d_op && dentry->d_op->d_delete) in prune_one_dentry()
437 dentry->d_op->d_delete(dentry); in prune_one_dentry()
438 dentry_lru_del_init(dentry); in prune_one_dentry()
439 __d_drop(dentry); in prune_one_dentry()
440 dentry = d_kill(dentry); in prune_one_dentry()
457 struct dentry *dentry; in __shrink_dcache_sb() local
471 dentry = list_entry(sb->s_dentry_lru.prev, in __shrink_dcache_sb()
472 struct dentry, d_lru); in __shrink_dcache_sb()
473 BUG_ON(dentry->d_sb != sb); in __shrink_dcache_sb()
475 spin_lock(&dentry->d_lock); in __shrink_dcache_sb()
482 && (dentry->d_flags & DCACHE_REFERENCED)) { in __shrink_dcache_sb()
483 dentry->d_flags &= ~DCACHE_REFERENCED; in __shrink_dcache_sb()
484 list_move_tail(&dentry->d_lru, &referenced); in __shrink_dcache_sb()
485 spin_unlock(&dentry->d_lock); in __shrink_dcache_sb()
487 list_move_tail(&dentry->d_lru, &tmp); in __shrink_dcache_sb()
488 spin_unlock(&dentry->d_lock); in __shrink_dcache_sb()
497 dentry = list_entry(tmp.prev, struct dentry, d_lru); in __shrink_dcache_sb()
498 dentry_lru_del_init(dentry); in __shrink_dcache_sb()
499 spin_lock(&dentry->d_lock); in __shrink_dcache_sb()
505 if (atomic_read(&dentry->d_count)) { in __shrink_dcache_sb()
506 spin_unlock(&dentry->d_lock); in __shrink_dcache_sb()
509 prune_one_dentry(dentry); in __shrink_dcache_sb()
618 static void shrink_dcache_for_umount_subtree(struct dentry *dentry) in shrink_dcache_for_umount_subtree() argument
620 struct dentry *parent; in shrink_dcache_for_umount_subtree()
623 BUG_ON(!IS_ROOT(dentry)); in shrink_dcache_for_umount_subtree()
627 dentry_lru_del_init(dentry); in shrink_dcache_for_umount_subtree()
628 __d_drop(dentry); in shrink_dcache_for_umount_subtree()
633 while (!list_empty(&dentry->d_subdirs)) { in shrink_dcache_for_umount_subtree()
634 struct dentry *loop; in shrink_dcache_for_umount_subtree()
639 list_for_each_entry(loop, &dentry->d_subdirs, in shrink_dcache_for_umount_subtree()
648 dentry = list_entry(dentry->d_subdirs.next, in shrink_dcache_for_umount_subtree()
649 struct dentry, d_u.d_child); in shrink_dcache_for_umount_subtree()
657 if (atomic_read(&dentry->d_count) != 0) { in shrink_dcache_for_umount_subtree()
662 dentry, in shrink_dcache_for_umount_subtree()
663 dentry->d_inode ? in shrink_dcache_for_umount_subtree()
664 dentry->d_inode->i_ino : 0UL, in shrink_dcache_for_umount_subtree()
665 dentry->d_name.name, in shrink_dcache_for_umount_subtree()
666 atomic_read(&dentry->d_count), in shrink_dcache_for_umount_subtree()
667 dentry->d_sb->s_type->name, in shrink_dcache_for_umount_subtree()
668 dentry->d_sb->s_id); in shrink_dcache_for_umount_subtree()
672 if (IS_ROOT(dentry)) in shrink_dcache_for_umount_subtree()
675 parent = dentry->d_parent; in shrink_dcache_for_umount_subtree()
679 list_del(&dentry->d_u.d_child); in shrink_dcache_for_umount_subtree()
682 inode = dentry->d_inode; in shrink_dcache_for_umount_subtree()
684 dentry->d_inode = NULL; in shrink_dcache_for_umount_subtree()
685 list_del_init(&dentry->d_alias); in shrink_dcache_for_umount_subtree()
686 if (dentry->d_op && dentry->d_op->d_iput) in shrink_dcache_for_umount_subtree()
687 dentry->d_op->d_iput(dentry, inode); in shrink_dcache_for_umount_subtree()
692 d_free(dentry); in shrink_dcache_for_umount_subtree()
700 dentry = parent; in shrink_dcache_for_umount_subtree()
702 } while (list_empty(&dentry->d_subdirs)); in shrink_dcache_for_umount_subtree()
704 dentry = list_entry(dentry->d_subdirs.next, in shrink_dcache_for_umount_subtree()
705 struct dentry, d_u.d_child); in shrink_dcache_for_umount_subtree()
727 struct dentry *dentry; in shrink_dcache_for_umount() local
732 dentry = sb->s_root; in shrink_dcache_for_umount()
734 atomic_dec(&dentry->d_count); in shrink_dcache_for_umount()
735 shrink_dcache_for_umount_subtree(dentry); in shrink_dcache_for_umount()
738 dentry = hlist_entry(sb->s_anon.first, struct dentry, d_hash); in shrink_dcache_for_umount()
739 shrink_dcache_for_umount_subtree(dentry); in shrink_dcache_for_umount()
757 int have_submounts(struct dentry *parent) in have_submounts()
759 struct dentry *this_parent = parent; in have_submounts()
770 struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child); in have_submounts() local
773 if (d_mountpoint(dentry)) in have_submounts()
775 if (!list_empty(&dentry->d_subdirs)) { in have_submounts()
776 this_parent = dentry; in have_submounts()
809 static int select_parent(struct dentry * parent) in select_parent()
811 struct dentry *this_parent = parent; in select_parent()
821 struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child); in select_parent() local
824 dentry_lru_del_init(dentry); in select_parent()
829 if (!atomic_read(&dentry->d_count)) { in select_parent()
830 dentry_lru_add_tail(dentry); in select_parent()
845 if (!list_empty(&dentry->d_subdirs)) { in select_parent()
846 this_parent = dentry; in select_parent()
870 void shrink_dcache_parent(struct dentry * parent) in shrink_dcache_parent()
916 struct dentry *d_alloc(struct dentry * parent, const struct qstr *name) in d_alloc()
918 struct dentry *dentry; in d_alloc() local
921 dentry = kmem_cache_alloc(dentry_cache, GFP_KERNEL); in d_alloc()
922 if (!dentry) in d_alloc()
928 kmem_cache_free(dentry_cache, dentry); in d_alloc()
932 dname = dentry->d_iname; in d_alloc()
934 dentry->d_name.name = dname; in d_alloc()
936 dentry->d_name.len = name->len; in d_alloc()
937 dentry->d_name.hash = name->hash; in d_alloc()
941 atomic_set(&dentry->d_count, 1); in d_alloc()
942 dentry->d_flags = DCACHE_UNHASHED; in d_alloc()
943 spin_lock_init(&dentry->d_lock); in d_alloc()
944 dentry->d_inode = NULL; in d_alloc()
945 dentry->d_parent = NULL; in d_alloc()
946 dentry->d_sb = NULL; in d_alloc()
947 dentry->d_op = NULL; in d_alloc()
948 dentry->d_fsdata = NULL; in d_alloc()
949 dentry->d_mounted = 0; in d_alloc()
950 INIT_HLIST_NODE(&dentry->d_hash); in d_alloc()
951 INIT_LIST_HEAD(&dentry->d_lru); in d_alloc()
952 INIT_LIST_HEAD(&dentry->d_subdirs); in d_alloc()
953 INIT_LIST_HEAD(&dentry->d_alias); in d_alloc()
956 dentry->d_parent = dget(parent); in d_alloc()
957 dentry->d_sb = parent->d_sb; in d_alloc()
959 INIT_LIST_HEAD(&dentry->d_u.d_child); in d_alloc()
964 list_add(&dentry->d_u.d_child, &parent->d_subdirs); in d_alloc()
968 return dentry; in d_alloc()
971 struct dentry *d_alloc_name(struct dentry *parent, const char *name) in d_alloc_name()
982 static void __d_instantiate(struct dentry *dentry, struct inode *inode) in __d_instantiate() argument
985 list_add(&dentry->d_alias, &inode->i_dentry); in __d_instantiate()
986 dentry->d_inode = inode; in __d_instantiate()
987 fsnotify_d_instantiate(dentry, inode); in __d_instantiate()
1005 void d_instantiate(struct dentry *entry, struct inode * inode) in d_instantiate()
1030 static struct dentry *__d_instantiate_unique(struct dentry *entry, in __d_instantiate_unique()
1033 struct dentry *alias; in __d_instantiate_unique()
1062 struct dentry *d_instantiate_unique(struct dentry *entry, struct inode *inode) in d_instantiate_unique()
1064 struct dentry *result; in d_instantiate_unique()
1093 struct dentry * d_alloc_root(struct inode * root_inode) in d_alloc_root()
1095 struct dentry *res = NULL; in d_alloc_root()
1110 static inline struct hlist_head *d_hash(struct dentry *parent, in d_hash()
1136 struct dentry *d_obtain_alias(struct inode *inode) in d_obtain_alias()
1139 struct dentry *tmp; in d_obtain_alias()
1140 struct dentry *res; in d_obtain_alias()
1201 struct dentry *d_splice_alias(struct inode *inode, struct dentry *dentry) in d_splice_alias() argument
1203 struct dentry *new = NULL; in d_splice_alias()
1212 d_rehash(dentry); in d_splice_alias()
1213 d_move(new, dentry); in d_splice_alias()
1217 __d_instantiate(dentry, inode); in d_splice_alias()
1219 security_d_instantiate(dentry, inode); in d_splice_alias()
1220 d_rehash(dentry); in d_splice_alias()
1223 d_add(dentry, inode); in d_splice_alias()
1243 struct dentry *d_add_ci(struct dentry *dentry, struct inode *inode, in d_add_ci() argument
1247 struct dentry *found; in d_add_ci()
1248 struct dentry *new; in d_add_ci()
1251 found = d_hash_and_lookup(dentry->d_parent, name); in d_add_ci()
1254 new = d_alloc(dentry->d_parent, name); in d_add_ci()
1309 new = list_entry(inode->i_dentry.next, struct dentry, d_alias); in d_add_ci()
1357 struct dentry * d_lookup(struct dentry * parent, struct qstr * name) in d_lookup()
1359 struct dentry * dentry = NULL; in d_lookup() local
1364 dentry = __d_lookup(parent, name); in d_lookup()
1365 if (dentry) in d_lookup()
1368 return dentry; in d_lookup()
1371 struct dentry * __d_lookup(struct dentry * parent, struct qstr * name) in __d_lookup()
1377 struct dentry *found = NULL; in __d_lookup()
1379 struct dentry *dentry; in __d_lookup() local
1383 hlist_for_each_entry_rcu(dentry, node, head, d_hash) { in __d_lookup()
1386 if (dentry->d_name.hash != hash) in __d_lookup()
1388 if (dentry->d_parent != parent) in __d_lookup()
1391 spin_lock(&dentry->d_lock); in __d_lookup()
1398 if (dentry->d_parent != parent) in __d_lookup()
1402 if (d_unhashed(dentry)) in __d_lookup()
1409 qstr = &dentry->d_name; in __d_lookup()
1420 atomic_inc(&dentry->d_count); in __d_lookup()
1421 found = dentry; in __d_lookup()
1422 spin_unlock(&dentry->d_lock); in __d_lookup()
1425 spin_unlock(&dentry->d_lock); in __d_lookup()
1439 struct dentry *d_hash_and_lookup(struct dentry *dir, struct qstr *name) in d_hash_and_lookup()
1441 struct dentry *dentry = NULL; in d_hash_and_lookup() local
1453 dentry = d_lookup(dir, name); in d_hash_and_lookup()
1455 return dentry; in d_hash_and_lookup()
1468 int d_validate(struct dentry *dentry, struct dentry *dparent) in d_validate() argument
1474 if (!kmem_ptr_validate(dentry_cache, dentry)) in d_validate()
1477 if (dentry->d_parent != dparent) in d_validate()
1481 base = d_hash(dparent, dentry->d_name.hash); in d_validate()
1486 if (dentry == hlist_entry(lhp, struct dentry, d_hash)) { in d_validate()
1487 __dget_locked(dentry); in d_validate()
1518 void d_delete(struct dentry * dentry) in d_delete() argument
1525 spin_lock(&dentry->d_lock); in d_delete()
1526 isdir = S_ISDIR(dentry->d_inode->i_mode); in d_delete()
1527 if (atomic_read(&dentry->d_count) == 1) { in d_delete()
1528 dentry_iput(dentry); in d_delete()
1529 fsnotify_nameremove(dentry, isdir); in d_delete()
1533 if (!d_unhashed(dentry)) in d_delete()
1534 __d_drop(dentry); in d_delete()
1536 spin_unlock(&dentry->d_lock); in d_delete()
1539 fsnotify_nameremove(dentry, isdir); in d_delete()
1542 static void __d_rehash(struct dentry * entry, struct hlist_head *list) in __d_rehash()
1549 static void _d_rehash(struct dentry * entry) in _d_rehash()
1561 void d_rehash(struct dentry * entry) in d_rehash()
1581 static void switch_names(struct dentry *dentry, struct dentry *target) in switch_names() argument
1584 if (dname_external(dentry)) { in switch_names()
1588 swap(target->d_name.name, dentry->d_name.name); in switch_names()
1594 memcpy(target->d_iname, dentry->d_name.name, in switch_names()
1595 dentry->d_name.len + 1); in switch_names()
1596 dentry->d_name.name = target->d_name.name; in switch_names()
1600 if (dname_external(dentry)) { in switch_names()
1605 memcpy(dentry->d_iname, target->d_name.name, in switch_names()
1607 target->d_name.name = dentry->d_name.name; in switch_names()
1608 dentry->d_name.name = dentry->d_iname; in switch_names()
1613 memcpy(dentry->d_iname, target->d_name.name, in switch_names()
1615 dentry->d_name.len = target->d_name.len; in switch_names()
1619 swap(dentry->d_name.len, target->d_name.len); in switch_names()
1642 static void d_move_locked(struct dentry * dentry, struct dentry * target) in d_move_locked() argument
1646 if (!dentry->d_inode) in d_move_locked()
1653 if (target < dentry) { in d_move_locked()
1655 spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); in d_move_locked()
1657 spin_lock(&dentry->d_lock); in d_move_locked()
1662 if (d_unhashed(dentry)) in d_move_locked()
1665 hlist_del_rcu(&dentry->d_hash); in d_move_locked()
1669 __d_rehash(dentry, list); in d_move_locked()
1674 list_del(&dentry->d_u.d_child); in d_move_locked()
1678 switch_names(dentry, target); in d_move_locked()
1679 swap(dentry->d_name.hash, target->d_name.hash); in d_move_locked()
1682 if (IS_ROOT(dentry)) { in d_move_locked()
1683 dentry->d_parent = target->d_parent; in d_move_locked()
1687 swap(dentry->d_parent, target->d_parent); in d_move_locked()
1693 list_add(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs); in d_move_locked()
1695 fsnotify_d_move(dentry); in d_move_locked()
1696 spin_unlock(&dentry->d_lock); in d_move_locked()
1709 void d_move(struct dentry * dentry, struct dentry * target) in d_move() argument
1712 d_move_locked(dentry, target); in d_move()
1724 struct dentry *d_ancestor(struct dentry *p1, struct dentry *p2) in d_ancestor()
1726 struct dentry *p; in d_ancestor()
1744 static struct dentry *__d_unalias(struct dentry *dentry, struct dentry *alias) in __d_unalias() argument
1748 struct dentry *ret; in __d_unalias()
1751 if (alias->d_parent == dentry->d_parent) in __d_unalias()
1756 if (d_ancestor(alias, dentry)) in __d_unalias()
1761 if (!mutex_trylock(&dentry->d_sb->s_vfs_rename_mutex)) in __d_unalias()
1763 m1 = &dentry->d_sb->s_vfs_rename_mutex; in __d_unalias()
1768 d_move_locked(alias, dentry); in __d_unalias()
1783 static void __d_materialise_dentry(struct dentry *dentry, struct dentry *anon) in __d_materialise_dentry() argument
1785 struct dentry *dparent, *aparent; in __d_materialise_dentry()
1787 switch_names(dentry, anon); in __d_materialise_dentry()
1788 swap(dentry->d_name.hash, anon->d_name.hash); in __d_materialise_dentry()
1790 dparent = dentry->d_parent; in __d_materialise_dentry()
1793 dentry->d_parent = (aparent == anon) ? dentry : aparent; in __d_materialise_dentry()
1794 list_del(&dentry->d_u.d_child); in __d_materialise_dentry()
1795 if (!IS_ROOT(dentry)) in __d_materialise_dentry()
1796 list_add(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs); in __d_materialise_dentry()
1798 INIT_LIST_HEAD(&dentry->d_u.d_child); in __d_materialise_dentry()
1800 anon->d_parent = (dparent == dentry) ? anon : dparent; in __d_materialise_dentry()
1818 struct dentry *d_materialise_unique(struct dentry *dentry, struct inode *inode) in d_materialise_unique() argument
1820 struct dentry *actual; in d_materialise_unique()
1822 BUG_ON(!d_unhashed(dentry)); in d_materialise_unique()
1827 actual = dentry; in d_materialise_unique()
1828 __d_instantiate(dentry, NULL); in d_materialise_unique()
1833 struct dentry *alias; in d_materialise_unique()
1843 __d_materialise_dentry(dentry, alias); in d_materialise_unique()
1848 actual = __d_unalias(dentry, alias); in d_materialise_unique()
1856 actual = __d_instantiate_unique(dentry, inode); in d_materialise_unique()
1858 actual = dentry; in d_materialise_unique()
1869 if (actual == dentry) { in d_materialise_unique()
1870 security_d_instantiate(dentry, inode); in d_materialise_unique()
1918 struct dentry *dentry = path->dentry; in __d_path() local
1925 if (!IS_ROOT(dentry) && d_unhashed(dentry) && in __d_path()
1936 struct dentry * parent; in __d_path()
1938 if (dentry == root->dentry && vfsmnt == root->mnt) in __d_path()
1940 if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) { in __d_path()
1945 dentry = vfsmnt->mnt_mountpoint; in __d_path()
1949 parent = dentry->d_parent; in __d_path()
1951 if ((prepend_name(&end, &buflen, &dentry->d_name) != 0) || in __d_path()
1955 dentry = parent; in __d_path()
1964 if (prepend_name(&retval, &buflen, &dentry->d_name) != 0) in __d_path()
1967 root->dentry = dentry; in __d_path()
2004 if (path->dentry->d_op && path->dentry->d_op->d_dname) in d_path()
2005 return path->dentry->d_op->d_dname(path->dentry, buf, buflen); in d_path()
2022 char *dynamic_dname(struct dentry *dentry, char *buffer, int buflen, in dynamic_dname() argument
2043 char *dentry_path(struct dentry *dentry, char *buf, int buflen) in dentry_path() argument
2050 if (!IS_ROOT(dentry) && d_unhashed(dentry) && in dentry_path()
2059 while (!IS_ROOT(dentry)) { in dentry_path()
2060 struct dentry *parent = dentry->d_parent; in dentry_path()
2063 if ((prepend_name(&end, &buflen, &dentry->d_name) != 0) || in dentry_path()
2068 dentry = parent; in dentry_path()
2114 if (IS_ROOT(pwd.dentry) || !d_unhashed(pwd.dentry)) { in SYSCALL_DEFINE2()
2159 int is_subdir(struct dentry *new_dentry, struct dentry *old_dentry) in is_subdir()
2186 void d_genocide(struct dentry *root) in d_genocide()
2188 struct dentry *this_parent = root; in d_genocide()
2197 struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child); in d_genocide() local
2199 if (d_unhashed(dentry)||!dentry->d_inode) in d_genocide()
2201 if (!list_empty(&dentry->d_subdirs)) { in d_genocide()
2202 this_parent = dentry; in d_genocide()
2205 atomic_dec(&dentry->d_count); in d_genocide()
2230 ino_t find_inode_number(struct dentry *dir, struct qstr *name) in find_inode_number()
2232 struct dentry * dentry; in find_inode_number() local
2235 dentry = d_hash_and_lookup(dir, name); in find_inode_number()
2236 if (dentry) { in find_inode_number()
2237 if (dentry->d_inode) in find_inode_number()
2238 ino = dentry->d_inode->i_ino; in find_inode_number()
2239 dput(dentry); in find_inode_number()
2287 dentry_cache = KMEM_CACHE(dentry, in dcache_init()