import fuse-overlayfs-0.7.8-1.module+el8.4.0+9935+d4945f3f
This commit is contained in:
parent
3193051cf9
commit
834d374453
@ -1 +1 @@
|
|||||||
aae77fbe5e212349100445fd0b63891d7d60f7e6 SOURCES/fuse-overlayfs-8c59873.tar.gz
|
da3ecfe752fdc7f9a1316f5b48f8cdc58e327927 SOURCES/fuse-overlayfs-f55aa8e.tar.gz
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/fuse-overlayfs-8c59873.tar.gz
|
SOURCES/fuse-overlayfs-f55aa8e.tar.gz
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
From bd0246fa31ae596fed3a7f94917523798e2ab3c8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Giuseppe Scrivano <gscrivan@redhat.com>
|
|
||||||
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 <gscrivan@redhat.com>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
|
|
@ -1,189 +0,0 @@
|
|||||||
From 214d606084453f0d2831317a9048a3cbc554fcc4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Giuseppe Scrivano <gscrivan@redhat.com>
|
|
||||||
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 <gscrivan@redhat.com>
|
|
||||||
---
|
|
||||||
main.c | 34 +++++++++++++++++-----------------
|
|
||||||
1 file changed, 17 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
|
|
||||||
From ce93abae5fcb3be98867bbfd8e13abb2c086d1c2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Giuseppe Scrivano <gscrivan@redhat.com>
|
|
||||||
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 <gscrivan@redhat.com>
|
|
||||||
---
|
|
||||||
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;
|
|
@ -1,21 +1,15 @@
|
|||||||
%global git0 https://github.com/containers/%{name}
|
%global git0 https://github.com/containers/%{name}
|
||||||
%global commit0 8c59873b00b3e8ee98be998fec8dbce4cfe984cc
|
%global commit0 f55aa8ef5606c69bedf6512c06eff800ba831eea
|
||||||
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
|
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
|
||||||
|
|
||||||
Name: fuse-overlayfs
|
Name: fuse-overlayfs
|
||||||
Version: 0.7.2
|
Version: 0.7.8
|
||||||
Release: 5%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: FUSE overlay+shiftfs implementation for rootless containers
|
Summary: FUSE overlay+shiftfs implementation for rootless containers
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
URL: %{git0}
|
URL: %{git0}
|
||||||
ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64
|
ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64
|
||||||
Source0: %{git0}/archive/%{commit0}/%{name}-%{shortcommit0}.tar.gz
|
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: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: fuse3-devel
|
BuildRequires: fuse3-devel
|
||||||
@ -62,6 +56,10 @@ make DESTDIR=%{buildroot} install install-man
|
|||||||
%{_mandir}/man1/%{name}.1.gz
|
%{_mandir}/man1/%{name}.1.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 07 2020 Jindrich Novy <jnovy@redhat.com> - 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 <jnovy@redhat.com> - 0.7.2-5
|
* Wed Mar 18 2020 Jindrich Novy <jnovy@redhat.com> - 0.7.2-5
|
||||||
- latest iteration of segfault fix patch, thanks to Giuseppe Scrivano
|
- latest iteration of segfault fix patch, thanks to Giuseppe Scrivano
|
||||||
- Resolves: #1805015
|
- Resolves: #1805015
|
||||||
|
Loading…
Reference in New Issue
Block a user