Lines Matching refs:oe
68 static struct dentry *__ovl_dentry_lower(struct ovl_entry *oe) in __ovl_dentry_lower() argument
70 return oe->numlower ? oe->lowerstack[0].dentry : NULL; in __ovl_dentry_lower()
75 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_type() local
78 if (oe->__upperdentry) { in ovl_path_type()
85 if (oe->numlower && S_ISDIR(dentry->d_inode->i_mode)) in ovl_path_type()
87 else if (!oe->opaque) in ovl_path_type()
90 if (oe->numlower > 1) in ovl_path_type()
96 static struct dentry *ovl_upperdentry_dereference(struct ovl_entry *oe) in ovl_upperdentry_dereference() argument
98 return lockless_dereference(oe->__upperdentry); in ovl_upperdentry_dereference()
104 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_upper() local
107 path->dentry = ovl_upperdentry_dereference(oe); in ovl_path_upper()
124 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_upper() local
126 return ovl_upperdentry_dereference(oe); in ovl_dentry_upper()
131 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_lower() local
133 return __ovl_dentry_lower(oe); in ovl_dentry_lower()
138 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_real() local
141 realdentry = ovl_upperdentry_dereference(oe); in ovl_dentry_real()
143 realdentry = __ovl_dentry_lower(oe); in ovl_dentry_real()
148 struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper) in ovl_entry_real() argument
152 realdentry = ovl_upperdentry_dereference(oe); in ovl_entry_real()
156 realdentry = __ovl_dentry_lower(oe); in ovl_entry_real()
164 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dir_cache() local
166 return oe->cache; in ovl_dir_cache()
171 struct ovl_entry *oe = dentry->d_fsdata; in ovl_set_dir_cache() local
173 oe->cache = cache; in ovl_set_dir_cache()
178 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_lower() local
180 *path = oe->numlower ? oe->lowerstack[0] : (struct path) { NULL, NULL }; in ovl_path_lower()
203 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_is_opaque() local
204 return oe->opaque; in ovl_dentry_is_opaque()
209 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_set_opaque() local
210 oe->opaque = opaque; in ovl_dentry_set_opaque()
215 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_update() local
218 WARN_ON(oe->__upperdentry); in ovl_dentry_update()
225 oe->__upperdentry = upperdentry; in ovl_dentry_update()
230 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_version_inc() local
233 oe->version++; in ovl_dentry_version_inc()
238 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_version_get() local
241 return oe->version; in ovl_dentry_version_get()
276 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_release() local
278 if (oe) { in ovl_dentry_release()
281 dput(oe->__upperdentry); in ovl_dentry_release()
282 for (i = 0; i < oe->numlower; i++) in ovl_dentry_release()
283 dput(oe->lowerstack[i].dentry); in ovl_dentry_release()
284 kfree_rcu(oe, rcu); in ovl_dentry_release()
321 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_revalidate() local
325 for (i = 0; i < oe->numlower; i++) { in ovl_dentry_revalidate()
326 struct dentry *d = oe->lowerstack[i].dentry; in ovl_dentry_revalidate()
344 struct ovl_entry *oe = dentry->d_fsdata; in ovl_dentry_weak_revalidate() local
348 for (i = 0; i < oe->numlower; i++) { in ovl_dentry_weak_revalidate()
349 struct dentry *d = oe->lowerstack[i].dentry; in ovl_dentry_weak_revalidate()
377 struct ovl_entry *oe = kzalloc(size, GFP_KERNEL); in ovl_alloc_entry() local
379 if (oe) in ovl_alloc_entry()
380 oe->numlower = numlower; in ovl_alloc_entry()
382 return oe; in ovl_alloc_entry()
429 struct ovl_entry *oe = dentry->d_fsdata; in ovl_path_next() local
435 return oe->numlower ? 1 : -1; in ovl_path_next()
438 BUG_ON(idx > oe->numlower); in ovl_path_next()
439 *path = oe->lowerstack[idx - 1]; in ovl_path_next()
441 return (idx < oe->numlower) ? idx + 1 : -1; in ovl_path_next()
447 struct ovl_entry *oe; in ovl_lookup() local
541 oe = ovl_alloc_entry(ctr); in ovl_lookup()
543 if (!oe) in ovl_lookup()
553 oe); in ovl_lookup()
559 oe->opaque = upperopaque; in ovl_lookup()
560 oe->__upperdentry = upperdentry; in ovl_lookup()
561 memcpy(oe->lowerstack, stack, sizeof(struct path) * ctr); in ovl_lookup()
563 dentry->d_fsdata = oe; in ovl_lookup()
569 kfree(oe); in ovl_lookup()
953 struct ovl_entry *oe; in ovl_fill_super() local
1125 oe = ovl_alloc_entry(numlower); in ovl_fill_super()
1126 if (!oe) in ovl_fill_super()
1129 root_dentry = d_make_root(ovl_new_inode(sb, S_IFDIR, oe)); in ovl_fill_super()
1139 oe->__upperdentry = upperpath.dentry; in ovl_fill_super()
1141 oe->lowerstack[i].dentry = stack[i].dentry; in ovl_fill_super()
1142 oe->lowerstack[i].mnt = ufs->lower_mnt[i]; in ovl_fill_super()
1146 root_dentry->d_fsdata = oe; in ovl_fill_super()
1159 kfree(oe); in ovl_fill_super()