mirror of
https://github.com/containers/fuse-overlayfs.git
synced 2025-09-17 11:15:12 -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;
|
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)
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
node->last_layer = it;
|
{
|
||||||
|
node->last_layer = it;
|
||||||
|
stop_lookup = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
insert_node:
|
insert_node:
|
||||||
if (insert_node (pnode, node, false) == NULL)
|
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
|
fuse-overlayfs -o lowerdir=lower3:lower2:lower1,upperdir=upper,workdir=workdir merged
|
||||||
|
|
||||||
test \! -e merged/dir1/dir2/foo
|
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