Merge pull request #85 from giuseppe/fix-rm

rm: fix rm'ing a file
This commit is contained in:
Daniel J Walsh 2019-06-13 08:45:44 -04:00 committed by GitHub
commit 1ff7c64d2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 7 deletions

View File

@ -1,5 +1,5 @@
AC_PREREQ([2.69])
AC_INIT([fuse-overlayfs], [0.4], [giuseppe@scrivano.org])
AC_INIT([fuse-overlayfs], [0.4.1], [giuseppe@scrivano.org])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])

17
main.c
View File

@ -637,13 +637,28 @@ hide_node (struct ovl_data *lo, struct ovl_node *node, bool unlink_src)
{
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;
}
if (renameat (upper_layer_fd (lo), node->path, lo->workdir_fd, newpath) < 0)
{
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
{
if (node_dirp (node))

View File

@ -1,10 +1,12 @@
#!/bin/sh
#!/bin/bash
set -xeuo pipefail
mkdir lower upper workdir 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
@ -16,8 +18,11 @@ mkdir upper workdir
fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir,suid,dev merged
# 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
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/'