Control: tags -1 patch

Please find a debdiff attached that I am uploading as NMU to DELAYED/10.
diff -Nru fuse-posixovl-1.3/debian/changelog fuse-posixovl-1.3/debian/changelog
--- fuse-posixovl-1.3/debian/changelog  2024-10-20 16:58:05.000000000 +0200
+++ fuse-posixovl-1.3/debian/changelog  2026-10-09 23:59:51.000000000 +0200
@@ -1,3 +1,10 @@
+fuse-posixovl (1.3-1.2) unstable; urgency=medium
+
+  * Non-maintainer upload
+  * Port to fuse3 (Closes: #1084466)
+
+ -- Bastian Germann <[email protected]>  Fri, 09 Oct 2026 23:59:51 +0200
+
 fuse-posixovl (1.3-1.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru fuse-posixovl-1.3/debian/control fuse-posixovl-1.3/debian/control
--- fuse-posixovl-1.3/debian/control    2024-10-20 16:58:05.000000000 +0200
+++ fuse-posixovl-1.3/debian/control    2026-10-09 23:59:51.000000000 +0200
@@ -2,7 +2,7 @@
 Section: misc
 Priority: optional
 Maintainer: Seunghun Han <[email protected]>
-Build-Depends: debhelper-compat (= 13), pkgconf, automake, autoconf, 
libfuse-dev
+Build-Depends: debhelper-compat (= 13), pkgconf, automake, autoconf, 
libfuse3-dev
 Standards-Version: 4.5.1
 Vcs-Browser: https://salsa.debian.org/kkamagui/fuse-posixovl
 Vcs-Git: https://salsa.debian.org/kkamagui/fuse-posixovl.git
diff -Nru fuse-posixovl-1.3/debian/patches/0003-fuse3.patch 
fuse-posixovl-1.3/debian/patches/0003-fuse3.patch
--- fuse-posixovl-1.3/debian/patches/0003-fuse3.patch   1970-01-01 
01:00:00.000000000 +0100
+++ fuse-posixovl-1.3/debian/patches/0003-fuse3.patch   2026-10-09 
23:58:14.000000000 +0200
@@ -0,0 +1,285 @@
+From: Bastian Germann <[email protected]>
+Subject: Port to fuse3
+---
+diff --git a/configure.ac b/configure.ac
+index 1a89d69..7ca9c8c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -17,14 +17,8 @@ AC_SUBST([regular_CFLAGS])
+ 
+ AC_CHECK_HEADERS([attr/xattr.h sys/xattr.h])
+ 
+-# FUSE >= 2.7.0 got subtype name support.
+-# 2.6.5 does not, but has a similar thing.
+-PKG_CHECK_MODULES([libfuse], [fuse >= 2.7.0], [], [
+-      PKG_CHECK_MODULES([libfuse], [fuse >= 2.6.5], [
+-              AC_DEFINE([HAVE_JUST_FUSE_2_6_5], [1],
+-                      [Define if you have a FUSE version >= 2.6.5 but < 
2.7.0])
+-      ])
+-])
++# FUSE >= 3.0
++PKG_CHECK_MODULES([libfuse], [fuse3 >= 3.0])
+ 
+ # Minium requirements for utimensat(): Linux 2.6.22-rc1 and Glibc 2.6
+ AC_MSG_CHECKING([for utimensat()])
+diff --git a/posixovl.c b/posixovl.c
+index a119ce4..90d9527 100644
+--- a/posixovl.c
++++ b/posixovl.c
+@@ -11,7 +11,7 @@
+  */
+ #define _ATFILE_SOURCE 1
+ #define _GNU_SOURCE 1
+-#define FUSE_USE_VERSION 26
++#define FUSE_USE_VERSION 31
+ #include "config.h"
+ #include <sys/fsuid.h>
+ #include <sys/stat.h>
+@@ -876,7 +876,8 @@ static char *xfrm_from_disk(const char *read_ptr)
+       return out;
+ }
+ 
+-static int posixovl_chmod(const char *path, mode_t mode)
++static int posixovl_chmod(const char *path, mode_t mode,
++    struct fuse_file_info *filp)
+ {
+       struct hcb info;
+       int ret;
+@@ -899,15 +900,17 @@ static int posixovl_chmod(const char *path, mode_t mode)
+       return hcb_update(&info);
+ }
+ 
+-static int posixovl1_chmod(const char *path, mode_t mode)
++static int posixovl1_chmod(const char *path, mode_t mode,
++    struct fuse_file_info *filp)
+ {
+       char *xpath = xfrm_to_disk(path);
+-      int ret     = posixovl_chmod(xpath, mode);
++      int ret     = posixovl_chmod(xpath, mode, filp);
+       free(xpath);
+       return ret;
+ }
+ 
+-static int posixovl_chown(const char *path, uid_t uid, gid_t gid)
++static int posixovl_chown(const char *path, uid_t uid, gid_t gid,
++    struct fuse_file_info *filp)
+ {
+       struct hcb info;
+       int ret;
+@@ -933,10 +936,11 @@ static int posixovl_chown(const char *path, uid_t uid, 
gid_t gid)
+       return hcb_update(&info);
+ }
+ 
+-static int posixovl1_chown(const char *path, uid_t uid, gid_t gid)
++static int posixovl1_chown(const char *path, uid_t uid, gid_t gid,
++    struct fuse_file_info *filp)
+ {
+       char *xpath = xfrm_to_disk(path);
+-      int ret     = posixovl_chown(xpath, uid, gid);
++      int ret     = posixovl_chown(xpath, uid, gid, filp);
+       free(xpath);
+       return ret;
+ }
+@@ -1026,12 +1030,6 @@ static int posixovl1_create(const char *path, mode_t 
mode,
+       return ret;
+ }
+ 
+-static int posixovl_ftruncate(const char *path, off_t length,
+-    struct fuse_file_info *filp)
+-{
+-      return retcode_int(ftruncate(filp->fh, length));
+-}
+-
+ /**
+  * hl_demote - collapse S_IFHARDLNK into normal file
+  * @l0_file:
+@@ -1101,7 +1099,8 @@ static int hl_try_demote(const char *path)
+       return hl_demote(path, info_l0.path, info_l0.ll.target, info_l1.path);
+ }
+ 
+-static int posixovl_getattr(const char *path, struct stat *sb)
++static int posixovl_getattr(const char *path, struct stat *sb,
++    struct fuse_file_info *filp)
+ {
+       struct hcb info;
+       int ret;
+@@ -1115,10 +1114,11 @@ static int posixovl_getattr(const char *path, struct 
stat *sb)
+       return 0;
+ }
+ 
+-static int posixovl1_getattr(const char *path, struct stat *sb)
++static int posixovl1_getattr(const char *path, struct stat *sb,
++    struct fuse_file_info *filp)
+ {
+       char *xpath = xfrm_to_disk(path);
+-      int ret     = posixovl_getattr(xpath, sb);
++      int ret     = posixovl_getattr(xpath, sb, filp);
+       free(xpath);
+       return ret;
+ }
+@@ -1129,18 +1129,14 @@ static int posixovl_getxattr(const char *path, const 
char *name,
+       return retcode_int(lgetxattr(at(path), name, value, size));
+ }
+ 
+-static int posixovl1_fgetattr(const char *path, struct stat *sb,
+-    struct fuse_file_info *filp)
++static void *posixovl_init(struct fuse_conn_info *conn,
++    struct fuse_config *cfg)
+ {
+       /*
+-       * Need to use the normal getattr because we need to check for the
+-       * HCB too, not just @filp->fh.
++       * Honor the inode numbers provided by getattr()/fill_dir(),
++       * like the old "-o use_ino" mount option did with FUSE 2.
+        */
+-      return posixovl1_getattr(path, sb);
+-}
+-
+-static void *posixovl_init(struct fuse_conn_info *conn)
+-{
++      cfg->use_ino = 1;
+       /*
+        * There is no fopendirat(), we need to use fchdir() and
+        * opendir(relative_path) instead.
+@@ -1574,7 +1570,8 @@ static int posixovl_read(const char *path, char *buffer, 
size_t size,
+ }
+ 
+ static int posixovl_readdir(const char *path, void *buffer,
+-    fuse_fill_dir_t filldir, off_t offset, struct fuse_file_info *filp)
++    fuse_fill_dir_t filldir, off_t offset, struct fuse_file_info *filp,
++    enum fuse_readdir_flags flags)
+ {
+       const struct dirent *dentry;
+       struct hcb info;
+@@ -1599,7 +1596,7 @@ static int posixovl_readdir(const char *path, void 
*buffer,
+                       break;
+               ret = 0;
+               x = xfrm_from_disk((char *)dentry->d_name);
+-              if ((*filldir)(buffer, x, &info.sb, 0) > 0)
++              if ((*filldir)(buffer, x, &info.sb, 0, 0) > 0)
+                       break;
+               free(x);
+       }
+@@ -1609,10 +1606,12 @@ static int posixovl_readdir(const char *path, void 
*buffer,
+ }
+ 
+ static int posixovl1_readdir(const char *path, void *buffer,
+-    fuse_fill_dir_t filldir, off_t offset, struct fuse_file_info *filp)
++    fuse_fill_dir_t filldir, off_t offset, struct fuse_file_info *filp,
++    enum fuse_readdir_flags flags)
+ {
+       char *xpath = xfrm_to_disk(path);
+-      int ret     = posixovl_readdir(xpath, buffer, filldir, offset, filp);
++      int ret     = posixovl_readdir(xpath, buffer, filldir, offset, filp,
++                    flags);
+       free(xpath);
+       return ret;
+ }
+@@ -1659,7 +1658,8 @@ static int posixovl_removexattr(const char *path, const 
char *name)
+       return retcode_int(lremovexattr(path, name));
+ }
+ 
+-static int posixovl_rename(const char *oldpath, const char *newpath)
++static int posixovl_rename(const char *oldpath, const char *newpath,
++    unsigned int flags)
+ {
+       char new_hcbpath[PATH_MAX];
+       struct hcb old_info;
+@@ -1671,6 +1671,8 @@ static int posixovl_rename(const char *oldpath, const 
char *newpath)
+               return -EPERM;
+       if (could_be_too_long(newpath))
+               return -ENAMETOOLONG;
++      if (flags != 0)
++              return -ENOSYS;
+ 
+       ret = hcb_lookup(oldpath, &old_info);
+       if (ret == -ENOENT_HCB || S_ISDIR(old_info.sb.st_mode))
+@@ -1707,11 +1709,12 @@ static int posixovl_rename(const char *oldpath, const 
char *newpath)
+       return 0;
+ }
+ 
+-static int posixovl1_rename(const char *oldpath, const char *newpath)
++static int posixovl1_rename(const char *oldpath, const char *newpath,
++    unsigned int flags)
+ {
+       char *xoldpath = xfrm_to_disk(oldpath);
+       char *xnewpath = xfrm_to_disk(newpath);
+-      int ret        = posixovl_rename(xoldpath, xnewpath);
++      int ret        = posixovl_rename(xoldpath, xnewpath, flags);
+       free(xoldpath);
+       free(xnewpath);
+       return ret;
+@@ -1803,7 +1806,8 @@ static int posixovl1_symlink(const char *oldpath, const 
char *newpath)
+       return ret;
+ }
+ 
+-static int posixovl_truncate(const char *path, off_t length)
++static int posixovl_truncate(const char *path, off_t length,
++    struct fuse_file_info *filp)
+ {
+       struct hcb info;
+       int fd, ret;
+@@ -1845,10 +1849,11 @@ static int posixovl_truncate(const char *path, off_t 
length)
+       return ret;
+ }
+ 
+-static int posixovl1_truncate(const char *path, off_t len)
++static int posixovl1_truncate(const char *path, off_t len,
++    struct fuse_file_info *filp)
+ {
+       char *xpath = xfrm_to_disk(path);
+-      int ret     = posixovl_truncate(xpath, len);
++      int ret     = posixovl_truncate(xpath, len, filp);
+       free(xpath);
+       return ret;
+ }
+@@ -1891,7 +1896,8 @@ static int posixovl1_unlink(const char *path)
+       return ret;
+ }
+ 
+-static int posixovl_utimens(const char *path, const struct timespec *ts)
++static int posixovl_utimens(const char *path, const struct timespec *ts,
++    struct fuse_file_info *filp)
+ {
+       struct hcb info;
+       int ret;
+@@ -1935,10 +1941,11 @@ static int posixovl_utimens(const char *path, const 
struct timespec *ts)
+       return retcode_int(ret);
+ }
+ 
+-static int posixovl1_utimens(const char *path, const struct timespec *ts)
++static int posixovl1_utimens(const char *path, const struct timespec *ts,
++    struct fuse_file_info *filp)
+ {
+       char *xpath = xfrm_to_disk(path);
+-      int ret     = posixovl_utimens(xpath, ts);
++      int ret     = posixovl_utimens(xpath, ts, filp);
+       free(xpath);
+       return ret;
+ }
+@@ -1973,8 +1980,6 @@ static const struct fuse_operations posixovl_ops = {
+       .chmod       = posixovl1_chmod,
+       .chown       = posixovl1_chown,
+       .create      = posixovl1_create,
+-      .fgetattr    = posixovl1_fgetattr,
+-      .ftruncate   = posixovl_ftruncate,
+       .getattr     = posixovl1_getattr,
+       .getxattr    = posixovl_getxattr,
+       .init        = posixovl_init,
+@@ -2057,15 +2062,9 @@ int main(int argc, char **argv)
+ 
+       new_argv = malloc(sizeof(char *) * (argc + 7 - optind));
+       new_argv[new_argc++] = argv[0];
+-#ifdef HAVE_JUST_FUSE_2_6_5
+       snprintf(xargs, sizeof(xargs),
+-               "-oattr_timeout=0,default_permissions,use_ino,nonempty,dev,"
+-               "fsname=posix-overlay(%s)", root_dir);
+-#else
+-      snprintf(xargs, sizeof(xargs),
+-               "-oattr_timeout=0,default_permissions,use_ino,nonempty,dev,"
++               "-oattr_timeout=0,default_permissions,dev,"
+                "fsname=posix-overlay(%s),subtype=posixovl", root_dir);
+-#endif
+       new_argv[new_argc++] = xargs;
+ 
+       if (user_allow_other())
diff -Nru fuse-posixovl-1.3/debian/patches/series 
fuse-posixovl-1.3/debian/patches/series
--- fuse-posixovl-1.3/debian/patches/series     2024-10-20 16:58:05.000000000 
+0200
+++ fuse-posixovl-1.3/debian/patches/series     2026-10-09 23:59:34.000000000 
+0200
@@ -1,2 +1,3 @@
 0001-fix-mount-option-bug-and-compile-warnings.patch
 0002-build-resolve-build-failure-with-glibc-2.38.patch
+0003-fuse3.patch

Reply via email to