overlayfs: embed middle into overlay_readdir_data
same story... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
49be4fb9cc
commit
db6ec212b5
@ -38,7 +38,7 @@ struct ovl_readdir_data {
|
|||||||
bool is_merge;
|
bool is_merge;
|
||||||
struct rb_root root;
|
struct rb_root root;
|
||||||
struct list_head *list;
|
struct list_head *list;
|
||||||
struct list_head *middle;
|
struct list_head middle;
|
||||||
int count;
|
int count;
|
||||||
int err;
|
int err;
|
||||||
};
|
};
|
||||||
@ -139,13 +139,13 @@ static int ovl_fill_lower(struct ovl_readdir_data *rdd,
|
|||||||
|
|
||||||
p = ovl_cache_entry_find(&rdd->root, name, namelen);
|
p = ovl_cache_entry_find(&rdd->root, name, namelen);
|
||||||
if (p) {
|
if (p) {
|
||||||
list_move_tail(&p->l_node, rdd->middle);
|
list_move_tail(&p->l_node, &rdd->middle);
|
||||||
} else {
|
} else {
|
||||||
p = ovl_cache_entry_new(name, namelen, ino, d_type);
|
p = ovl_cache_entry_new(name, namelen, ino, d_type);
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
rdd->err = -ENOMEM;
|
rdd->err = -ENOMEM;
|
||||||
else
|
else
|
||||||
list_add_tail(&p->l_node, rdd->middle);
|
list_add_tail(&p->l_node, &rdd->middle);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rdd->err;
|
return rdd->err;
|
||||||
@ -277,7 +277,6 @@ static inline int ovl_dir_read_merged(struct path *upperpath,
|
|||||||
struct list_head *list)
|
struct list_head *list)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
struct list_head middle;
|
|
||||||
struct ovl_readdir_data rdd = {
|
struct ovl_readdir_data rdd = {
|
||||||
.ctx.actor = ovl_fill_merge,
|
.ctx.actor = ovl_fill_merge,
|
||||||
.list = list,
|
.list = list,
|
||||||
@ -301,11 +300,10 @@ static inline int ovl_dir_read_merged(struct path *upperpath,
|
|||||||
* Insert lowerpath entries before upperpath ones, this allows
|
* Insert lowerpath entries before upperpath ones, this allows
|
||||||
* offsets to be reasonably constant
|
* offsets to be reasonably constant
|
||||||
*/
|
*/
|
||||||
list_add(&middle, rdd.list);
|
list_add(&rdd.middle, rdd.list);
|
||||||
rdd.middle = &middle;
|
|
||||||
rdd.is_merge = true;
|
rdd.is_merge = true;
|
||||||
err = ovl_dir_read(lowerpath, &rdd);
|
err = ovl_dir_read(lowerpath, &rdd);
|
||||||
list_del(&middle);
|
list_del(&rdd.middle);
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
return err;
|
return err;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user