--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
[ Reason ]
While it's a new upstream release, it only contains a bugfix [1] and
correcting spelling mistakes.
The actual change is in lib/fuse.c and very small [2]. Other changes
are for the example and tests to keep those in sync.
[ Impact ]
Would provide a fixed and consistent working of fuse3.
[ Tests ]
Rebuilt all reverse dependencies and those are fine.
[ Risks ]
Contains an udeb and currently I don't know how to test it.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
Thanks for considering,
Laszlo/GCS
[1]
https://github.com/libfuse/libfuse/commit/bdd2d4110fbc6d2059eb699efad2cca4a7eacccb
[2]
https://github.com/libfuse/libfuse/commit/bdd2d4110fbc6d2059eb699efad2cca4a7eacccb#diff-0a915c0d19eddb55a580a696b995dab0574ae0f7f04f9136c60d2f3c8a90ac39
diff -Nru --exclude html fuse3-3.10.2/AUTHORS fuse3-3.10.3/AUTHORS
--- fuse3-3.10.2/AUTHORS 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/AUTHORS 2021-04-12 12:18:08.000000000 +0200
@@ -82,6 +82,7 @@
HazelFZ <xfzf...@gmail.com>
Heiko Becker <heire...@exherbo.org>
Hendrik Brueckner <brueck...@linux.vnet.ibm.com>
+Hookey <hoo...@users.noreply.github.com>
human <hu...@neet.fi>
Ikey Doherty <michael.i.dohe...@intel.com>
itsdeepak <deepak...@samsung.com>
@@ -163,6 +164,7 @@
Tej Chajed <tcha...@mit.edu>
tenzap <46226844+ten...@users.noreply.github.com>
therealnewo...@gmail.com <therealnewo...@gmail.com>
+Tobias Nießen <tnies...@users.noreply.github.com>
Tomasz Kulasek <34129113+tkula...@users.noreply.github.com>
Tom Callaway <s...@fedoraproject.org>
Tom Callaway <spo...@gmail.com>
diff -Nru --exclude html fuse3-3.10.2/ChangeLog.rst fuse3-3.10.3/ChangeLog.rst
--- fuse3-3.10.2/ChangeLog.rst 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/ChangeLog.rst 2021-04-12 12:18:08.000000000 +0200
@@ -1,3 +1,8 @@
+libfuse 3.10.3 (2021-04-12)
+===========================
+
+* Fix returning d_ino and d_type from readdir(3) in non-plus mode
+
libfuse 3.10.2 (2021-02-05)
===========================
diff -Nru --exclude html fuse3-3.10.2/debian/changelog fuse3-3.10.3/debian/changelog
--- fuse3-3.10.2/debian/changelog 2021-02-24 23:28:30.000000000 +0100
+++ fuse3-3.10.3/debian/changelog 2021-04-21 14:34:39.000000000 +0200
@@ -1,3 +1,12 @@
+fuse3 (3.10.3-1) unstable; urgency=medium
+
+ * New upstream release:
+ - fix returning d_ino and d_type by readdir(3) in non-plus mode,
+ - remove unused fuse_worker bufsize,
+ - fix typos.
+
+ -- Laszlo Boszormenyi (GCS) <g...@debian.org> Wed, 21 Apr 2021 14:34:39 +0200
+
fuse3 (3.10.2-2) unstable; urgency=medium
* Mark libfuse3-dev as Multi-Arch same.
diff -Nru --exclude html fuse3-3.10.2/example/passthrough.c fuse3-3.10.3/example/passthrough.c
--- fuse3-3.10.2/example/passthrough.c 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/example/passthrough.c 2021-04-12 12:18:08.000000000 +0200
@@ -55,6 +55,8 @@
#include "passthrough_helpers.h"
+static int fill_dir_plus = 0;
+
static void *xmp_init(struct fuse_conn_info *conn,
struct fuse_config *cfg)
{
@@ -132,7 +134,7 @@
memset(&st, 0, sizeof(st));
st.st_ino = de->d_ino;
st.st_mode = de->d_type << 12;
- if (filler(buf, de->d_name, &st, 0, FUSE_FILL_DIR_PLUS))
+ if (filler(buf, de->d_name, &st, 0, fill_dir_plus))
break;
}
@@ -551,6 +553,18 @@
int main(int argc, char *argv[])
{
+ enum { MAX_ARGS = 10 };
+ int i,new_argc;
+ char *new_argv[MAX_ARGS];
+
umask(0);
- return fuse_main(argc, argv, &xmp_oper, NULL);
+ /* Process the "--plus" option apart */
+ for (i=0, new_argc=0; (i<argc) && (new_argc<MAX_ARGS); i++) {
+ if (!strcmp(argv[i], "--plus")) {
+ fill_dir_plus = FUSE_FILL_DIR_PLUS;
+ } else {
+ new_argv[new_argc++] = argv[i];
+ }
+ }
+ return fuse_main(new_argc, new_argv, &xmp_oper, NULL);
}
diff -Nru --exclude html fuse3-3.10.2/include/fuse.h fuse3-3.10.3/include/fuse.h
--- fuse3-3.10.2/include/fuse.h 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/include/fuse.h 2021-04-12 12:18:08.000000000 +0200
@@ -361,14 +361,14 @@
/** Change the permission bits of a file
*
- * `fi` will always be NULL if the file is not currenlty open, but
+ * `fi` will always be NULL if the file is not currently open, but
* may also be NULL if the file is open.
*/
int (*chmod) (const char *, mode_t, struct fuse_file_info *fi);
/** Change the owner and group of a file
*
- * `fi` will always be NULL if the file is not currenlty open, but
+ * `fi` will always be NULL if the file is not currently open, but
* may also be NULL if the file is open.
*
* Unless FUSE_CAP_HANDLE_KILLPRIV is disabled, this method is
@@ -378,7 +378,7 @@
/** Change the size of a file
*
- * `fi` will always be NULL if the file is not currenlty open, but
+ * `fi` will always be NULL if the file is not currently open, but
* may also be NULL if the file is open.
*
* Unless FUSE_CAP_HANDLE_KILLPRIV is disabled, this method is
@@ -648,7 +648,7 @@
* This supersedes the old utime() interface. New applications
* should use this.
*
- * `fi` will always be NULL if the file is not currenlty open, but
+ * `fi` will always be NULL if the file is not currently open, but
* may also be NULL if the file is open.
*
* See the utimensat(2) man page for details.
@@ -856,7 +856,7 @@
* 4: Mounting failed
* 5: Failed to daemonize (detach from session)
* 6: Failed to set up signal handlers
- * 7: An error occured during the life of the file system
+ * 7: An error occurred during the life of the file system
*
* @param argc the argument counter passed to the main() function
* @param argv the argument vector passed to the main() function
diff -Nru --exclude html fuse3-3.10.2/include/fuse_lowlevel.h fuse3-3.10.3/include/fuse_lowlevel.h
--- fuse3-3.10.2/include/fuse_lowlevel.h 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/include/fuse_lowlevel.h 2021-04-12 12:18:08.000000000 +0200
@@ -1253,7 +1253,7 @@
* Possible requests:
* all except forget
*
- * Whereever possible, error codes should be chosen from the list of
+ * Wherever possible, error codes should be chosen from the list of
* documented error conditions in the corresponding system calls
* manpage.
*
diff -Nru --exclude html fuse3-3.10.2/lib/fuse.c fuse3-3.10.3/lib/fuse.c
--- fuse3-3.10.2/lib/fuse.c 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/lib/fuse.c 2021-04-12 12:18:08.000000000 +0200
@@ -3578,6 +3578,11 @@
}
} else {
e.attr.st_ino = FUSE_UNKNOWN_INO;
+ if (statp) {
+ e.attr.st_mode = statp->st_mode;
+ if (f->conf.use_ino)
+ e.attr.st_ino = statp->st_ino;
+ }
if (!f->conf.use_ino && f->conf.readdir_ino) {
e.attr.st_ino = (ino_t)
lookup_nodeid(f, dh->nodeid, name);
diff -Nru --exclude html fuse3-3.10.2/lib/fuse_loop_mt.c fuse3-3.10.3/lib/fuse_loop_mt.c
--- fuse3-3.10.2/lib/fuse_loop_mt.c 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/lib/fuse_loop_mt.c 2021-04-12 12:18:08.000000000 +0200
@@ -32,7 +32,6 @@
struct fuse_worker *prev;
struct fuse_worker *next;
pthread_t thread_id;
- size_t bufsize;
// We need to include fuse_buf so that we can properly free
// it when a thread is terminated by pthread_cancel().
diff -Nru --exclude html fuse3-3.10.2/meson.build fuse3-3.10.3/meson.build
--- fuse3-3.10.2/meson.build 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/meson.build 2021-04-12 12:18:08.000000000 +0200
@@ -1,4 +1,4 @@
-project('libfuse3', ['c'], version: '3.10.2',
+project('libfuse3', ['c'], version: '3.10.3',
meson_version: '>= 0.42',
default_options: [ 'buildtype=debugoptimized' ])
diff -Nru --exclude html fuse3-3.10.2/test/readdir_inode.c fuse3-3.10.3/test/readdir_inode.c
--- fuse3-3.10.2/test/readdir_inode.c 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/test/readdir_inode.c 2021-04-12 12:18:08.000000000 +0200
@@ -1,7 +1,8 @@
/*
- * Prints each directory entry and its inode as returned by 'readdir'.
+ * Prints each directory entry, its inode and d_type as returned by 'readdir'.
* Skips '.' and '..' because readdir is not required to return them and
- * some of our examples don't.
+ * some of our examples don't. However if they are returned, their d_type
+ * should be valid.
*/
#include <stdio.h>
@@ -30,7 +31,18 @@
dent = readdir(dirp);
while (dent != NULL) {
if (strcmp(dent->d_name, ".") != 0 && strcmp(dent->d_name, "..") != 0) {
- printf("%llu %s\n", (unsigned long long)dent->d_ino, dent->d_name);
+ printf("%llu %d %s\n", (unsigned long long)dent->d_ino,
+ (int)dent->d_type, dent->d_name);
+ if ((long long)dent->d_ino < 0)
+ fprintf(stderr,"%s : bad d_ino %llu\n",
+ dent->d_name, (unsigned long long)dent->d_ino);
+ if ((dent->d_type < 1) || (dent->d_type > 15))
+ fprintf(stderr,"%s : bad d_type %d\n",
+ dent->d_name, (int)dent->d_type);
+ } else {
+ if (dent->d_type != DT_DIR)
+ fprintf(stderr,"%s : bad d_type %d\n",
+ dent->d_name, (int)dent->d_type);
}
dent = readdir(dirp);
}
diff -Nru --exclude html fuse3-3.10.2/test/test_examples.py fuse3-3.10.3/test/test_examples.py
--- fuse3-3.10.2/test/test_examples.py 2021-02-05 10:07:28.000000000 +0100
+++ fuse3-3.10.3/test/test_examples.py 2021-04-12 12:18:08.000000000 +0200
@@ -109,7 +109,8 @@
umount(mount_process, mnt_dir)
@pytest.mark.parametrize("writeback", (False, True))
-@pytest.mark.parametrize("name", ('passthrough', 'passthrough_fh', 'passthrough_ll'))
+@pytest.mark.parametrize("name", ('passthrough', 'passthrough_plus',
+ 'passthrough_fh', 'passthrough_ll'))
@pytest.mark.parametrize("debug", (False, True))
def test_passthrough(short_tmpdir, name, debug, output_checker, writeback):
# Avoid false positives from libfuse debug messages
@@ -124,9 +125,14 @@
mnt_dir = str(short_tmpdir.mkdir('mnt'))
src_dir = str(short_tmpdir.mkdir('src'))
- cmdline = base_cmdline + \
- [ pjoin(basename, 'example', name),
- '-f', mnt_dir ]
+ if name == 'passthrough_plus':
+ cmdline = base_cmdline + \
+ [ pjoin(basename, 'example', 'passthrough'),
+ '--plus', '-f', mnt_dir ]
+ else:
+ cmdline = base_cmdline + \
+ [ pjoin(basename, 'example', name),
+ '-f', mnt_dir ]
if debug:
cmdline.append('-d')
--- End Message ---