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')