From ad05595804a163e384496a534320f4ba60f2f5b4 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 03 2020 12:10:15 +0000 Subject: import fuse-overlayfs-0.7.8-1.module+el8.3.0+8233+627fbb78 --- diff --git a/.fuse-overlayfs.metadata b/.fuse-overlayfs.metadata index 27f2753..2fdd507 100644 --- a/.fuse-overlayfs.metadata +++ b/.fuse-overlayfs.metadata @@ -1 +1 @@ -aae77fbe5e212349100445fd0b63891d7d60f7e6 SOURCES/fuse-overlayfs-8c59873.tar.gz +da3ecfe752fdc7f9a1316f5b48f8cdc58e327927 SOURCES/fuse-overlayfs-f55aa8e.tar.gz diff --git a/.gitignore b/.gitignore index d28e987..1f21975 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/fuse-overlayfs-8c59873.tar.gz +SOURCES/fuse-overlayfs-f55aa8e.tar.gz diff --git a/SOURCES/fuse-overlayfs-1803494.patch b/SOURCES/fuse-overlayfs-1803494.patch deleted file mode 100644 index c462f07..0000000 --- a/SOURCES/fuse-overlayfs-1803494.patch +++ /dev/null @@ -1,48 +0,0 @@ -From bd0246fa31ae596fed3a7f94917523798e2ab3c8 Mon Sep 17 00:00:00 2001 -From: Giuseppe Scrivano -Date: Sat, 15 Feb 2020 12:33:52 +0100 -Subject: [PATCH] main: force timeout 0 for ovl_link - -There is an issue on RHEL 8.1 where the nlink counter is always -incremented by one, no matter what is specified in e.attr.st_nlink. - -Always set timeout to 0 to force a new stat on the inode. - -Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1802907 -Closes: https://github.com/containers/fuse-overlayfs/issues/183 - -Signed-off-by: Giuseppe Scrivano ---- - main.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/main.c b/main.c -index 80c0f89..0e6dab3 100644 ---- a/main.c -+++ b/main.c -@@ -3714,6 +3714,12 @@ direct_linkat (struct ovl_layer *l, const char *oldpath, const char *newpath, in - static void - ovl_link (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const char *newname) - { -+ /* -+ There is an issue on RHEL 8.1 where the nlink counter is always -+ incremented by one, no matter what is specified in e.attr.st_nlink. -+ In this function we always set timeout to 0 to force a new stat on the inode. -+ */ -+ - cleanup_lock int l = enter_big_lock (); - struct ovl_data *lo = ovl_data (req); - struct ovl_node *node, *newparentnode, *destnode; -@@ -3809,7 +3815,8 @@ ovl_link (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const char *newn - - e.ino = node_to_inode (node); - node->ino->lookups++; -- e.attr_timeout = get_timeout (lo); -+ -+ e.attr_timeout = 0; - e.entry_timeout = get_timeout (lo); - fuse_reply_entry (req, &e); - } --- -2.24.1 - diff --git a/SOURCES/fuse-overlayfs-1804849.patch b/SOURCES/fuse-overlayfs-1804849.patch deleted file mode 100644 index bf75003..0000000 --- a/SOURCES/fuse-overlayfs-1804849.patch +++ /dev/null @@ -1,189 +0,0 @@ -From 214d606084453f0d2831317a9048a3cbc554fcc4 Mon Sep 17 00:00:00 2001 -From: Giuseppe Scrivano -Date: Wed, 15 Jan 2020 00:02:43 +0100 -Subject: [PATCH 1/2] main: check if file is whiteout - -when doing a lookup, make sure the returned file is not a whiteout for -functions that expect the file to exist. - -Close: https://github.com/containers/fuse-overlayfs/issues/169 - -Signed-off-by: Giuseppe Scrivano ---- - main.c | 34 +++++++++++++++++----------------- - 1 file changed, 17 insertions(+), 17 deletions(-) - - -From ce93abae5fcb3be98867bbfd8e13abb2c086d1c2 Mon Sep 17 00:00:00 2001 -From: Giuseppe Scrivano -Date: Wed, 15 Jan 2020 17:52:13 +0100 -Subject: [PATCH 2/2] main: do not copyup opaque xattr - -when performing the copyup, do not copy the private xattrs. - -Signed-off-by: Giuseppe Scrivano ---- - main.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff -up ./fuse-overlayfs-8c59873b00b3e8ee98be998fec8dbce4cfe984cc/main.c.1804849 ./fuse-overlayfs-8c59873b00b3e8ee98be998fec8dbce4cfe984cc/main.c ---- fuse-overlayfs-8c59873b00b3e8ee98be998fec8dbce4cfe984cc/main.c.1804849 2020-02-20 14:38:04.204508810 +0100 -+++ fuse-overlayfs-8c59873b00b3e8ee98be998fec8dbce4cfe984cc/main.c 2020-02-20 14:38:04.208508867 +0100 -@@ -2265,7 +2265,7 @@ ovl_getxattr (fuse_req_t req, fuse_ino_t - } - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -2334,7 +2334,13 @@ copy_xattr (int sfd, int dfd, char *buf, - for (it = buf; it - buf < xattr_len; it += strlen (it) + 1) - { - cleanup_free char *v = NULL; -- ssize_t s = safe_read_xattr (&v, sfd, it, 256); -+ ssize_t s; -+ -+ if (has_prefix (it, XATTR_PREFIX) -+ || has_prefix (it, PRIVILEGED_XATTR_PREFIX)) -+ continue; -+ -+ s = safe_read_xattr (&v, sfd, it, 256); - if (s < 0) - return -1; - -@@ -2858,7 +2864,7 @@ do_rm (fuse_req_t req, fuse_ino_t parent - struct ovl_node key, *rm; - - node = do_lookup_file (lo, parent, name); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -2904,7 +2910,7 @@ do_rm (fuse_req_t req, fuse_ino_t parent - } - - pnode = do_lookup_file (lo, parent, NULL); -- if (pnode == NULL) -+ if (pnode == NULL || pnode->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3009,7 +3015,7 @@ ovl_setxattr (fuse_req_t req, fuse_ino_t - } - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3069,7 +3075,7 @@ ovl_removexattr (fuse_req_t req, fuse_in - fprintf (stderr, "ovl_removexattr(ino=%" PRIu64 "s, name=%s)\n", ino, name); - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3447,7 +3453,7 @@ ovl_getattr (fuse_req_t req, fuse_ino_t - fprintf (stderr, "ovl_getattr(ino=%" PRIu64 ")\n", ino); - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3481,7 +3487,7 @@ ovl_setattr (fuse_req_t req, fuse_ino_t - fprintf (stderr, "ovl_setattr(ino=%" PRIu64 "s, to_set=%d)\n", ino, to_set); - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3663,7 +3669,7 @@ ovl_link (fuse_req_t req, fuse_ino_t ino - fprintf (stderr, "ovl_link(ino=%" PRIu64 "s, newparent=%" PRIu64 "s, newname=%s)\n", ino, newparent, newname); - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3677,7 +3683,7 @@ ovl_link (fuse_req_t req, fuse_ino_t ino - } - - newparentnode = do_lookup_file (lo, newparent, NULL); -- if (newparentnode == NULL) -+ if (newparentnode == NULL || newparentnode->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3802,7 +3808,7 @@ ovl_symlink (fuse_req_t req, const char - fprintf (stderr, "ovl_symlink(link=%s, ino=%" PRIu64 "s, name=%s)\n", link, parent, name); - - pnode = do_lookup_file (lo, parent, NULL); -- if (pnode == NULL) -+ if (pnode == NULL || pnode->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -3896,7 +3902,7 @@ ovl_rename_exchange (fuse_req_t req, fus - char *tmp; - - node = do_lookup_file (lo, parent, name); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -4255,7 +4261,7 @@ ovl_readlink (fuse_req_t req, fuse_ino_t - fprintf (stderr, "ovl_readlink(ino=%" PRIu64 "s)\n", ino); - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -4661,7 +4667,7 @@ ovl_ioctl (fuse_req_t req, fuse_ino_t in - ino, cmd, arg, fi, flags, in_buf, in_bufsz, out_bufsz); - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -4730,7 +4736,7 @@ ovl_fallocate (fuse_req_t req, fuse_ino_ - ino, mode, offset, length, fi); - - node = do_lookup_file (lo, ino, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; -@@ -4781,14 +4787,14 @@ ovl_copy_file_range (fuse_req_t req, fus - ino_in, off_in, fi_in, ino_out, off_out, fi_out, len, flags); - - node = do_lookup_file (lo, ino_in, NULL); -- if (node == NULL) -+ if (node == NULL || node->whiteout) - { - fuse_reply_err (req, ENOENT); - return; - } - - dnode = do_lookup_file (lo, ino_out, NULL); -- if (dnode == NULL) -+ if (dnode == NULL || dnode->whiteout) - { - fuse_reply_err (req, ENOENT); - return; diff --git a/SPECS/fuse-overlayfs.spec b/SPECS/fuse-overlayfs.spec index b1f09cc..17c5db9 100644 --- a/SPECS/fuse-overlayfs.spec +++ b/SPECS/fuse-overlayfs.spec @@ -1,21 +1,15 @@ %global git0 https://github.com/containers/%{name} -%global commit0 8c59873b00b3e8ee98be998fec8dbce4cfe984cc +%global commit0 f55aa8ef5606c69bedf6512c06eff800ba831eea %global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) Name: fuse-overlayfs -Version: 0.7.2 -Release: 5%{?dist} +Version: 0.7.8 +Release: 1%{?dist} Summary: FUSE overlay+shiftfs implementation for rootless containers License: GPLv3+ URL: %{git0} ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64 Source0: %{git0}/archive/%{commit0}/%{name}-%{shortcommit0}.tar.gz -# related bug: https://bugzilla.redhat.com/show_bug.cgi?id=1802907 -# backported: https://patch-diff.githubusercontent.com/raw/containers/fuse-overlayfs/pull/184.patch -Patch0: fuse-overlayfs-1803494.patch -# related bug: https://bugzilla.redhat.com/show_bug.cgi?id=1804849 -# patch: https://bugzilla.redhat.com/attachment.cgi?id=1666385 -Patch1: fuse-overlayfs-1804849.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: fuse3-devel @@ -62,6 +56,10 @@ make DESTDIR=%{buildroot} install install-man %{_mandir}/man1/%{name}.1.gz %changelog +* Tue Apr 07 2020 Jindrich Novy - 0.7.8-1 +- update to https://github.com/containers/fuse-overlayfs/releases/tag/v0.7.8 +- Related: #1821193 + * Wed Mar 18 2020 Jindrich Novy - 0.7.2-5 - latest iteration of segfault fix patch, thanks to Giuseppe Scrivano - Resolves: #1805015