Lines Matching refs:oe
66 static struct dentry *__ovl_dentry_lower(struct ovl_entry *oe) in __ovl_dentry_lower() argument
68 return oe->numlower ? oe->lowerstack[0].dentry : NULL; in __ovl_dentry_lower()
73 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_type() local
76 if (oe->__upperdentry) { in ovl_path_type()
83 if (oe->numlower && S_ISDIR(dentry->d_inode->i_mode)) in ovl_path_type()
85 else if (!oe->opaque) in ovl_path_type()
88 if (oe->numlower > 1) in ovl_path_type()
94 static struct dentry *ovl_upperdentry_dereference(struct ovl_entry *oe) in ovl_upperdentry_dereference() argument
96 return lockless_dereference(oe->__upperdentry); in ovl_upperdentry_dereference()
102 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_upper() local
105 path->dentry = ovl_upperdentry_dereference(oe); in ovl_path_upper()
122 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_upper() local
124 return ovl_upperdentry_dereference(oe); in ovl_dentry_upper()
129 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_lower() local
131 return __ovl_dentry_lower(oe); in ovl_dentry_lower()
136 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_real() local
139 realdentry = ovl_upperdentry_dereference(oe); in ovl_dentry_real()
141 realdentry = __ovl_dentry_lower(oe); in ovl_dentry_real()
146 struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper) in ovl_entry_real() argument
150 realdentry = ovl_upperdentry_dereference(oe); in ovl_entry_real()
154 realdentry = __ovl_dentry_lower(oe); in ovl_entry_real()
162 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dir_cache() local
164 return oe->cache; in ovl_dir_cache()
169 struct ovl_entry *oe = dentry->d_fsdata; in ovl_set_dir_cache() local
171 oe->cache = cache; in ovl_set_dir_cache()
176 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_lower() local
178 *path = oe->numlower ? oe->lowerstack[0] : (struct path) { NULL, NULL }; in ovl_path_lower()
201 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_is_opaque() local
202 return oe->opaque; in ovl_dentry_is_opaque()
207 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_set_opaque() local
208 oe->opaque = opaque; in ovl_dentry_set_opaque()
213 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_update() local
216 WARN_ON(oe->__upperdentry); in ovl_dentry_update()
223 oe->__upperdentry = upperdentry; in ovl_dentry_update()
228 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_version_inc() local
231 oe->version++; in ovl_dentry_version_inc()
236 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_version_get() local
239 return oe->version; in ovl_dentry_version_get()
267 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_release() local
269 if (oe) { in ovl_dentry_release()
272 dput(oe->__upperdentry); in ovl_dentry_release()
273 for (i = 0; i < oe->numlower; i++) in ovl_dentry_release()
274 dput(oe->lowerstack[i].dentry); in ovl_dentry_release()
275 kfree_rcu(oe, rcu); in ovl_dentry_release()
312 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_revalidate() local
316 for (i = 0; i < oe->numlower; i++) { in ovl_dentry_revalidate()
317 struct dentry *d = oe->lowerstack[i].dentry; in ovl_dentry_revalidate()
335 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_weak_revalidate() local
339 for (i = 0; i < oe->numlower; i++) { in ovl_dentry_weak_revalidate()
340 struct dentry *d = oe->lowerstack[i].dentry; in ovl_dentry_weak_revalidate()
368 struct ovl_entry *oe = kzalloc(size, GFP_KERNEL); in ovl_alloc_entry() local
370 if (oe) in ovl_alloc_entry()
371 oe->numlower = numlower; in ovl_alloc_entry()
373 return oe; in ovl_alloc_entry()
419 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_next() local
425 return oe->numlower ? 1 : -1; in ovl_path_next()
428 BUG_ON(idx > oe->numlower); in ovl_path_next()
429 *path = oe->lowerstack[idx - 1]; in ovl_path_next()
431 return (idx < oe->numlower) ? idx + 1 : -1; in ovl_path_next()
437 struct ovl_entry *oe; in ovl_lookup() local
531 oe = ovl_alloc_entry(ctr); in ovl_lookup()
533 if (!oe) in ovl_lookup()
543 oe); in ovl_lookup()
549 oe->opaque = upperopaque; in ovl_lookup()
550 oe->__upperdentry = upperdentry; in ovl_lookup()
551 memcpy(oe->lowerstack, stack, sizeof(struct path) * ctr); in ovl_lookup()
553 dentry->d_fsdata = oe; in ovl_lookup()
559 kfree(oe); in ovl_lookup()
923 struct ovl_entry *oe; in ovl_fill_super() local
1071 oe = ovl_alloc_entry(numlower); in ovl_fill_super()
1072 if (!oe) in ovl_fill_super()
1075 root_dentry = d_make_root(ovl_new_inode(sb, S_IFDIR, oe)); in ovl_fill_super()
1085 oe->__upperdentry = upperpath.dentry; in ovl_fill_super()
1087 oe->lowerstack[i].dentry = stack[i].dentry; in ovl_fill_super()
1088 oe->lowerstack[i].mnt = ufs->lower_mnt[i]; in ovl_fill_super()
1092 root_dentry->d_fsdata = oe; in ovl_fill_super()
1105 kfree(oe); in ovl_fill_super()