Lines Matching refs:parent
125 static inline struct hlist_bl_head *in_lookup_hash(const struct dentry *parent, in in_lookup_hash() argument
128 hash += (unsigned long) parent / L1_CACHE_BYTES; in in_lookup_hash()
647 struct dentry *parent = NULL; in __dentry_kill() local
679 parent = dentry->d_parent; in __dentry_kill()
680 spin_lock(&parent->d_lock); in __dentry_kill()
689 if (parent && --parent->d_lockref.count) { in __dentry_kill()
690 spin_unlock(&parent->d_lock); in __dentry_kill()
693 return parent; in __dentry_kill()
1288 static void d_walk(struct dentry *parent, void *data, in d_walk() argument
1298 this_parent = parent; in d_walk()
1350 if (this_parent != parent) { in d_walk()
1415 int path_has_submounts(const struct path *parent) in path_has_submounts() argument
1417 struct check_mount data = { .mnt = parent->mnt, .mounted = 0 }; in path_has_submounts()
1420 d_walk(parent->dentry, &data, path_check_mount); in path_has_submounts()
1547 void shrink_dcache_parent(struct dentry *parent) in shrink_dcache_parent() argument
1550 struct select_data data = {.start = parent}; in shrink_dcache_parent()
1553 d_walk(parent, &data, select_collect); in shrink_dcache_parent()
1564 d_walk(parent, &data, select_collect2); in shrink_dcache_parent()
1767 struct dentry *d_alloc(struct dentry * parent, const struct qstr *name) in d_alloc() argument
1769 struct dentry *dentry = __d_alloc(parent->d_sb, name); in d_alloc()
1772 spin_lock(&parent->d_lock); in d_alloc()
1777 dentry->d_parent = dget_dlock(parent); in d_alloc()
1778 hlist_add_head(&dentry->d_sib, &parent->d_children); in d_alloc()
1779 spin_unlock(&parent->d_lock); in d_alloc()
1791 struct dentry *d_alloc_cursor(struct dentry * parent) in d_alloc_cursor() argument
1793 struct dentry *dentry = d_alloc_anon(parent->d_sb); in d_alloc_cursor()
1796 dentry->d_parent = dget(parent); in d_alloc_cursor()
1831 struct dentry *d_alloc_name(struct dentry *parent, const char *name) in d_alloc_name() argument
1836 q.hash_len = hashlen_string(parent, name); in d_alloc_name()
1837 return d_alloc(parent, &q); in d_alloc_name()
2171 bool d_same_name(const struct dentry *dentry, const struct dentry *parent, in d_same_name() argument
2174 if (likely(!(parent->d_flags & DCACHE_OP_COMPARE))) { in d_same_name()
2179 return parent->d_op->d_compare(dentry, in d_same_name()
2190 const struct dentry *parent, in __d_lookup_rcu_op_compare() argument
2206 if (dentry->d_parent != parent) in __d_lookup_rcu_op_compare()
2219 if (parent->d_op->d_compare(dentry, tlen, tname, name) != 0) in __d_lookup_rcu_op_compare()
2253 struct dentry *__d_lookup_rcu(const struct dentry *parent, in __d_lookup_rcu() argument
2270 if (unlikely(parent->d_flags & DCACHE_OP_COMPARE)) in __d_lookup_rcu()
2271 return __d_lookup_rcu_op_compare(parent, name, seqp); in __d_lookup_rcu()
2307 if (dentry->d_parent != parent) in __d_lookup_rcu()
2332 struct dentry *d_lookup(const struct dentry *parent, const struct qstr *name) in d_lookup() argument
2339 dentry = __d_lookup(parent, name); in d_lookup()
2362 struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name) in __d_lookup() argument
2398 if (dentry->d_parent != parent) in __d_lookup()
2403 if (!d_same_name(dentry, parent, name)) in __d_lookup()
2542 struct dentry *d_alloc_parallel(struct dentry *parent, in d_alloc_parallel() argument
2547 struct hlist_bl_head *b = in_lookup_hash(parent, hash); in d_alloc_parallel()
2549 struct dentry *new = __d_alloc(parent->d_sb, name); in d_alloc_parallel()
2557 spin_lock(&parent->d_lock); in d_alloc_parallel()
2558 new->d_parent = dget_dlock(parent); in d_alloc_parallel()
2559 hlist_add_head(&new->d_sib, &parent->d_children); in d_alloc_parallel()
2560 spin_unlock(&parent->d_lock); in d_alloc_parallel()
2564 seq = smp_load_acquire(&parent->d_inode->i_dir_seq); in d_alloc_parallel()
2566 dentry = __d_lookup_rcu(parent, name, &d_seq); in d_alloc_parallel()
2592 if (unlikely(READ_ONCE(parent->d_inode->i_dir_seq) != seq)) { in d_alloc_parallel()
2607 if (dentry->d_parent != parent) in d_alloc_parallel()
2609 if (!d_same_name(dentry, parent, name)) in d_alloc_parallel()
2633 if (unlikely(dentry->d_parent != parent)) in d_alloc_parallel()
2637 if (unlikely(!d_same_name(dentry, parent, name))) in d_alloc_parallel()
3122 void d_genocide(struct dentry *parent) in d_genocide() argument
3124 d_walk(parent, parent, d_genocide_kill); in d_genocide()
3158 struct dentry *parent; in d_parent_ino() local
3165 parent = READ_ONCE(dentry->d_parent); in d_parent_ino()
3166 iparent = d_inode_rcu(parent); in d_parent_ino()