Hello community, here is the log from the commit of package fuse-overlayfs for openSUSE:Factory checked in at 2020-03-19 19:45:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fuse-overlayfs (Old) and /work/SRC/openSUSE:Factory/.fuse-overlayfs.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fuse-overlayfs" Thu Mar 19 19:45:45 2020 rev:10 rq:785987 version:0.7.8 Changes: -------- --- /work/SRC/openSUSE:Factory/fuse-overlayfs/fuse-overlayfs.changes 2020-03-06 21:26:06.437509434 +0100 +++ /work/SRC/openSUSE:Factory/.fuse-overlayfs.new.3160/fuse-overlayfs.changes 2020-03-19 19:49:25.792153998 +0100 @@ -1,0 +2,9 @@ +Tue Mar 17 16:04:37 UTC 2020 - Sascha Grunert <[email protected]> + +- Update to v0.7.8 + - report correctly the number of links for a directory also for + subsequent stat calls + - stop looking up the ino in the lower layers if the file could + not be opened + +------------------------------------------------------------------- Old: ---- fuse-overlayfs-0.7.7.tar.xz New: ---- fuse-overlayfs-0.7.8.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fuse-overlayfs.spec ++++++ --- /var/tmp/diff_new_pack.9xBiDI/_old 2020-03-19 19:49:27.656155074 +0100 +++ /var/tmp/diff_new_pack.9xBiDI/_new 2020-03-19 19:49:27.696155097 +0100 @@ -17,7 +17,7 @@ Name: fuse-overlayfs -Version: 0.7.7 +Version: 0.7.8 Release: 0 Summary: FUSE implementation for overlayfs License: GPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.9xBiDI/_old 2020-03-19 19:49:28.076155316 +0100 +++ /var/tmp/diff_new_pack.9xBiDI/_new 2020-03-19 19:49:28.112155337 +0100 @@ -3,8 +3,8 @@ <param name="url">https://github.com/containers/fuse-overlayfs.git</param> <param name="scm">git</param> <param name="filename">fuse-overlayfs</param> - <param name="versionformat">0.7.7</param> - <param name="revision">v0.7.7</param> + <param name="versionformat">0.7.8</param> + <param name="revision">v0.7.8</param> </service> <service name="set_version" mode="disabled"> <param name="basename">fuse-overlayfs</param> ++++++ fuse-overlayfs-0.7.7.tar.xz -> fuse-overlayfs-0.7.8.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-0.7.7/NEWS new/fuse-overlayfs-0.7.8/NEWS --- old/fuse-overlayfs-0.7.7/NEWS 2020-03-03 16:50:17.000000000 +0100 +++ new/fuse-overlayfs-0.7.8/NEWS 2020-03-17 12:27:58.000000000 +0100 @@ -1,3 +1,8 @@ +* fuse-overlayfs-0.7.8 + +- report correctly the number of links for a directory also for subsequent stat calls. +- stop looking up the ino in the lower layers if the file could not be opened. + * fuse-overlayfs-0.7.7 - make sure the destination is deleted before doing a rename(2). It prevents a left diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-0.7.7/configure.ac new/fuse-overlayfs-0.7.8/configure.ac --- old/fuse-overlayfs-0.7.7/configure.ac 2020-03-03 16:50:17.000000000 +0100 +++ new/fuse-overlayfs-0.7.8/configure.ac 2020-03-17 12:27:58.000000000 +0100 @@ -1,5 +1,5 @@ AC_PREREQ([2.69]) -AC_INIT([fuse-overlayfs], [0.7.7], [[email protected]]) +AC_INIT([fuse-overlayfs], [0.7.8], [[email protected]]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-0.7.7/fuse-overlayfs.h new/fuse-overlayfs-0.7.8/fuse-overlayfs.h --- old/fuse-overlayfs-0.7.7/fuse-overlayfs.h 2020-03-03 16:50:17.000000000 +0100 +++ new/fuse-overlayfs-0.7.8/fuse-overlayfs.h 2020-03-17 12:27:58.000000000 +0100 @@ -33,7 +33,6 @@ dev_t dev; int lookups; mode_t mode; - int nlinks; }; struct ovl_node diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-0.7.7/main.c new/fuse-overlayfs-0.7.8/main.c --- old/fuse-overlayfs-0.7.7/main.c 2020-03-03 16:50:17.000000000 +0100 +++ new/fuse-overlayfs-0.7.8/main.c 2020-03-17 12:27:58.000000000 +0100 @@ -690,8 +690,8 @@ ret = stat (path, st); else if (node->hidden) ret = fstatat (node_dirfd (node), node->path, st, AT_SYMLINK_NOFOLLOW); - else - ret = l->ds->statat (l, node->path, st, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS); + else + ret = l->ds->statat (l, node->path, st, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS); if (ret < 0) return ret; @@ -701,7 +701,7 @@ st->st_ino = node->tmp_ino; st->st_dev = node->tmp_dev; - if (ret == 0 && node_dirp (node) && node->ino->nlinks <= 0) + if (ret == 0 && node_dirp (node)) { struct ovl_node *it; @@ -712,7 +712,6 @@ if (node_dirp (it)) st->st_nlink++; } - node->ino->nlinks = st->st_nlink; } return ret; @@ -1259,7 +1258,8 @@ } ret->last_layer = it; } - goto no_fd; + has_origin = false; + goto no_fd; } /* It is an open FD, stat the file and read the origin xattrs. */ @@ -1276,7 +1276,10 @@ } if (stat_only) - goto no_fd; + { + has_origin = false; + goto no_fd; + } s = safe_read_xattr (&val, fd, PRIVILEGED_ORIGIN_XATTR, PATH_MAX); if (s > 0) @@ -1347,19 +1350,13 @@ { if (hash_lookup (prev_parent->children, item) == item) hash_delete (prev_parent->children, item); - if (is_dir) - prev_parent->ino->nlinks--; } if (replace) { old = hash_delete (parent->children, item); if (old) - { - if (node_dirp (old)) - parent->ino->nlinks--; - node_free (old); - } + node_free (old); } ret = hash_insert_if_absent (parent->children, item, (const void **) &old); @@ -1376,8 +1373,6 @@ } item->parent = parent; - if (is_dir) - parent->ino->nlinks++; return item; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuse-overlayfs-0.7.7/tests/fedora-installs.sh new/fuse-overlayfs-0.7.8/tests/fedora-installs.sh --- old/fuse-overlayfs-0.7.7/tests/fedora-installs.sh 2020-03-03 16:50:17.000000000 +0100 +++ new/fuse-overlayfs-0.7.8/tests/fedora-installs.sh 2020-03-17 12:27:58.000000000 +0100 @@ -145,3 +145,27 @@ ls -l merged/b test -e merged/b/test + +#### Correct number of directory nlink + +umount merged + +rm -rf lower upper workdir merged +mkdir lower upper workdir merged +mkdir lower/a lower/a/1 lower/a/2 lower/a/3 + +fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir merged + +test $(stat -c %h merged/a) = 5 + +mkdir merged/a/4 + +test $(stat -c %h merged/a) = 6 + +rm -rf merged/a/4 + +test $(stat -c %h merged/a) = 5 + +rm -rf merged/a/3 + +test $(stat -c %h merged/a) = 4
