mirror of
https://github.com/containers/fuse-overlayfs.git
synced 2025-09-15 18:30:10 -04:00
main: honor opaque whiteout
Closes: https://github.com/containers/fuse-overlayfs/issues/138 Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
parent
35ef75d9b0
commit
2403cd9537
17
main.c
17
main.c
@ -1526,6 +1526,18 @@ load_dir (struct ovl_data *lo, struct ovl_node *n, struct ovl_layer *layer, char
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
ret = is_directory_opaque (it, path);
|
||||
if (ret < 0)
|
||||
{
|
||||
it->ds->closedir (dp);
|
||||
return NULL;
|
||||
}
|
||||
if (ret > 0)
|
||||
{
|
||||
n->last_layer = it;
|
||||
stop_lookup = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (get_timeout (lo) > 0)
|
||||
@ -1803,7 +1815,10 @@ do_lookup_file (struct ovl_data *lo, fuse_ino_t parent, const char *name)
|
||||
return NULL;
|
||||
}
|
||||
if (ret > 0)
|
||||
node->last_layer = it;
|
||||
{
|
||||
node->last_layer = it;
|
||||
stop_lookup = true;
|
||||
}
|
||||
}
|
||||
insert_node:
|
||||
if (insert_node (pnode, node, false) == NULL)
|
||||
|
@ -98,3 +98,18 @@ mkdir -p lower3/dir1/dir2
|
||||
fuse-overlayfs -o lowerdir=lower3:lower2:lower1,upperdir=upper,workdir=workdir merged
|
||||
|
||||
test \! -e merged/dir1/dir2/foo
|
||||
|
||||
umount merged
|
||||
|
||||
# https://github.com/containers/fuse-overlayfs/issues/138
|
||||
rm -rf lower1 lower2 lower3 lower upper workdir merged
|
||||
mkdir lower1 lower2 lower3 upper workdir merged
|
||||
|
||||
mkdir -p lower1/dir1/dir2
|
||||
touch lower1/dir1/dir2/foo
|
||||
mkdir -p lower3/dir1/dir2
|
||||
touch lower3/dir1/dir2/.wh..wh..opq
|
||||
|
||||
fuse-overlayfs -o lowerdir=lower3:lower2:lower1,upperdir=upper,workdir=workdir merged
|
||||
|
||||
test \! -e merged/dir1/dir2/foo
|
||||
|
Loading…
x
Reference in New Issue
Block a user