Lines Matching refs:parent
107 static inline struct hlist_bl_head *d_hash(const struct dentry *parent, in d_hash() argument
110 hash += (unsigned long) parent / L1_CACHE_BYTES; in d_hash()
501 struct dentry *parent = NULL; in __dentry_kill() local
504 parent = dentry->d_parent; in __dentry_kill()
530 if (parent) in __dentry_kill()
531 spin_unlock(&parent->d_lock); in __dentry_kill()
562 struct dentry *parent = NULL; in dentry_kill() local
568 parent = dentry->d_parent; in dentry_kill()
569 if (unlikely(!spin_trylock(&parent->d_lock))) { in dentry_kill()
577 return parent; in dentry_kill()
587 struct dentry *parent = dentry->d_parent; in lock_parent() local
592 if (likely(spin_trylock(&parent->d_lock))) in lock_parent()
593 return parent; in lock_parent()
597 parent = ACCESS_ONCE(dentry->d_parent); in lock_parent()
598 spin_lock(&parent->d_lock); in lock_parent()
607 if (unlikely(parent != dentry->d_parent)) { in lock_parent()
608 spin_unlock(&parent->d_lock); in lock_parent()
612 if (parent != dentry) in lock_parent()
615 parent = NULL; in lock_parent()
616 return parent; in lock_parent()
916 struct dentry *parent = lock_parent(dentry); in d_prune_aliases() local
919 dput(parent); in d_prune_aliases()
922 if (parent) in d_prune_aliases()
923 spin_unlock(&parent->d_lock); in d_prune_aliases()
933 struct dentry *dentry, *parent; in shrink_dentry_list() local
939 parent = lock_parent(dentry); in shrink_dentry_list()
954 if (parent) in shrink_dentry_list()
955 spin_unlock(&parent->d_lock); in shrink_dentry_list()
963 if (parent) in shrink_dentry_list()
964 spin_unlock(&parent->d_lock); in shrink_dentry_list()
974 if (parent) in shrink_dentry_list()
975 spin_unlock(&parent->d_lock); in shrink_dentry_list()
987 dentry = parent; in shrink_dentry_list()
989 parent = lock_parent(dentry); in shrink_dentry_list()
993 if (parent) in shrink_dentry_list()
994 spin_unlock(&parent->d_lock); in shrink_dentry_list()
1000 if (parent) in shrink_dentry_list()
1001 spin_unlock(&parent->d_lock); in shrink_dentry_list()
1006 dentry = parent; in shrink_dentry_list()
1159 static void d_walk(struct dentry *parent, void *data, in d_walk() argument
1171 this_parent = parent; in d_walk()
1224 if (this_parent != parent) { in d_walk()
1288 int have_submounts(struct dentry *parent) in have_submounts() argument
1292 d_walk(parent, &ret, check_mount, NULL); in have_submounts()
1387 void shrink_dcache_parent(struct dentry *parent) in shrink_dcache_parent() argument
1393 data.start = parent; in shrink_dcache_parent()
1396 d_walk(parent, &data, select_collect, NULL); in shrink_dcache_parent()
1616 struct dentry *d_alloc(struct dentry * parent, const struct qstr *name) in d_alloc() argument
1618 struct dentry *dentry = __d_alloc(parent->d_sb, name); in d_alloc()
1622 spin_lock(&parent->d_lock); in d_alloc()
1627 __dget_dlock(parent); in d_alloc()
1628 dentry->d_parent = parent; in d_alloc()
1629 list_add(&dentry->d_child, &parent->d_subdirs); in d_alloc()
1630 spin_unlock(&parent->d_lock); in d_alloc()
1650 struct dentry *d_alloc_name(struct dentry *parent, const char *name) in d_alloc_name() argument
1657 return d_alloc(parent, &q); in d_alloc_name()
2097 const struct dentry *parent, in slow_dentry_cmp() argument
2109 if (parent->d_op->d_compare(parent, dentry, tlen, tname, name)) in slow_dentry_cmp()
2143 struct dentry *__d_lookup_rcu(const struct dentry *parent, in __d_lookup_rcu() argument
2149 struct hlist_bl_head *b = d_hash(parent, hashlen_hash(hashlen)); in __d_lookup_rcu()
2192 if (dentry->d_parent != parent) in __d_lookup_rcu()
2197 if (unlikely(parent->d_flags & DCACHE_OP_COMPARE)) { in __d_lookup_rcu()
2201 switch (slow_dentry_cmp(parent, dentry, seq, name)) { in __d_lookup_rcu()
2231 struct dentry *d_lookup(const struct dentry *parent, const struct qstr *name) in d_lookup() argument
2238 dentry = __d_lookup(parent, name); in d_lookup()
2261 struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name) in __d_lookup() argument
2266 struct hlist_bl_head *b = d_hash(parent, hash); in __d_lookup()
2299 if (dentry->d_parent != parent) in __d_lookup()
2308 if (parent->d_flags & DCACHE_OP_COMPARE) { in __d_lookup()
2311 if (parent->d_op->d_compare(parent, dentry, tlen, tname, name)) in __d_lookup()
2915 struct dentry * parent; in prepend_path() local
2918 struct mount *parent = ACCESS_ONCE(mnt->mnt_parent); in prepend_path() local
2927 if (mnt != parent) { in prepend_path()
2929 mnt = parent; in prepend_path()
2937 parent = dentry->d_parent; in prepend_path()
2938 prefetch(parent); in prepend_path()
2943 dentry = parent; in prepend_path()
3159 struct dentry *parent = dentry->d_parent; in __dentry_path() local
3161 prefetch(parent); in __dentry_path()
3167 dentry = parent; in __dentry_path()
3343 void d_genocide(struct dentry *parent) in d_genocide() argument
3345 d_walk(parent, parent, d_genocide_kill, NULL); in d_genocide()