mirror of
https://github.com/containers/fuse-overlayfs.git
synced 2025-09-09 15:24:54 -04:00
rm: fix regression when deleting a file
fix a regression caused by 7dcef0769b1521b8f14bdee58339c26140466c85 Closes: https://bodhi.fedoraproject.org/updates/FEDORA-2019-fff1ded16e#comment-958825 Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
parent
8d92da63a9
commit
e9f5f04883
@ -40,6 +40,7 @@ script:
|
|||||||
- (cd /unionmount-testsuite; sudo unshare -m ./run --ov --fuse=fuse-overlayfs --xdev) || travis_terminate 1;
|
- (cd /unionmount-testsuite; sudo unshare -m ./run --ov --fuse=fuse-overlayfs --xdev) || travis_terminate 1;
|
||||||
- (cd /unionmount-testsuite; sudo FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 unshare -m ./run --ov --fuse=fuse-overlayfs --xdev) || travis_terminate 1;
|
- (cd /unionmount-testsuite; sudo FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 unshare -m ./run --ov --fuse=fuse-overlayfs --xdev) || travis_terminate 1;
|
||||||
- sudo tests/fedora-installs.sh || travis_terminate 1;
|
- sudo tests/fedora-installs.sh || travis_terminate 1;
|
||||||
|
- sudo tests/fedora-rm.sh || travis_terminate 1;
|
||||||
- sudo tests/unlink.sh || travis_terminate 1;
|
- sudo tests/unlink.sh || travis_terminate 1;
|
||||||
- (cd $GOPATH/src/github.com/containers/storage/tests; sudo STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1;
|
- (cd $GOPATH/src/github.com/containers/storage/tests; sudo STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1;
|
||||||
- (cd $GOPATH/src/github.com/containers/storage/tests; sudo FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1;
|
- (cd $GOPATH/src/github.com/containers/storage/tests; sudo FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1;
|
||||||
|
19
main.c
19
main.c
@ -637,11 +637,26 @@ hide_node (struct ovl_data *lo, struct ovl_node *node, bool unlink_src)
|
|||||||
{
|
{
|
||||||
if (node->parent)
|
if (node->parent)
|
||||||
{
|
{
|
||||||
if (create_whiteout (lo, node->parent, node->name, false, false) < 0)
|
/* If we are here, it means we have no permissions to use mknod. Also
|
||||||
|
since the file is not yet moved, creating a whiteout would fail on
|
||||||
|
the mknodat call. */
|
||||||
|
if (create_whiteout (lo, node->parent, node->name, true, false) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (renameat (upper_layer_fd (lo), node->path, lo->workdir_fd, newpath) < 0)
|
if (renameat (upper_layer_fd (lo), node->path, lo->workdir_fd, newpath) < 0)
|
||||||
return -1;
|
{
|
||||||
|
if (node->parent)
|
||||||
|
{
|
||||||
|
cleanup_free char *whpath = NULL;
|
||||||
|
|
||||||
|
ret = asprintf (&whpath, "%s/.wh.%s", node->parent->path, node->name);
|
||||||
|
/* If the rename failed, then try to delete the whiteout file we
|
||||||
|
created earlier. */
|
||||||
|
if (ret == 0)
|
||||||
|
unlinkat (upper_layer_fd (lo), whpath, 0);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -xeuo pipefail
|
||||||
|
|
||||||
mkdir lower upper workdir merged
|
mkdir lower upper workdir merged
|
||||||
|
|
||||||
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir,suid,dev merged
|
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir,suid,dev merged
|
||||||
|
|
||||||
docker run --rm -ti -v merged:/merged fedora dnf --installroot /merged --releasever 29 install -y glibc-common gedit
|
docker run --rm -ti -v merged:/merged fedora dnf --installroot /merged --releasever 30 install -y glibc-common gedit
|
||||||
|
|
||||||
umount merged
|
umount merged
|
||||||
|
|
||||||
@ -16,8 +18,11 @@ mkdir upper workdir
|
|||||||
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir,suid,dev merged
|
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir,suid,dev merged
|
||||||
|
|
||||||
# Install some big packages
|
# Install some big packages
|
||||||
docker run --rm -ti -v merged:/merged fedora dnf --installroot /merged --releasever 29 install -y emacs texlive
|
docker run --rm -ti -v merged:/merged fedora dnf --installroot /merged --releasever 30 install -y emacs texlive
|
||||||
|
|
||||||
docker run --rm -ti -v merged:/merged fedora sh -c 'rm /usr/share/glib-2.0/schemas/gschemas.compiled; glib-compile-schemas /usr/share/glib-2.0/schemas/'
|
docker run --rm -ti -v merged:/merged fedora sh -c 'rm /merged/usr/share/glib-2.0/schemas/gschemas.compiled; glib-compile-schemas /merged/usr/share/glib-2.0/schemas/'
|
||||||
|
|
||||||
umount merged
|
umount merged
|
||||||
|
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir,suid,dev merged
|
||||||
|
|
||||||
|
docker run --rm -ti -v merged:/merged fedora sh -c 'rm -rf /merged/usr/share/glib-2.0/'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user