commit be13eaa18e66a7e1f56f69964716424e7dcdff59 Author: CentOS Sources Date: Tue Nov 8 02:04:22 2022 -0500 import fuse-2.9.7-16.el8 diff --git a/.fuse.metadata b/.fuse.metadata new file mode 100644 index 0000000..5f8ad51 --- /dev/null +++ b/.fuse.metadata @@ -0,0 +1,2 @@ +fcb3641d5297938f4e183296eccaf0ccc1a0f892 SOURCES/fuse-2.9.7.tar.gz +413a2dcb4d274483893166c7894e1920ee61ab53 SOURCES/fuse-3.3.0.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7aff6fd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/fuse-2.9.7.tar.gz +SOURCES/fuse-3.3.0.tar.gz diff --git a/SOURCES/0001-Synchronize-fuse_kernel.h.patch b/SOURCES/0001-Synchronize-fuse_kernel.h.patch new file mode 100644 index 0000000..dd6c14c --- /dev/null +++ b/SOURCES/0001-Synchronize-fuse_kernel.h.patch @@ -0,0 +1,59 @@ +From 492d3a24c13babd103fb71d44adfb8e94687db52 Mon Sep 17 00:00:00 2001 +From: Pavel Reichl +Date: Tue, 7 Jun 2022 08:27:36 +0200 +Subject: [PATCH 1/4] Synchronize fuse_kernel.h + +Signed-off-by: Pavel Reichl +--- + include/fuse_kernel.h | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h +index 42fa977..b55fa8b 100644 +--- a/include/fuse_kernel.h ++++ b/include/fuse_kernel.h +@@ -215,10 +215,12 @@ struct fuse_file_lock { + * FOPEN_DIRECT_IO: bypass page cache for this open file + * FOPEN_KEEP_CACHE: don't invalidate the data cache on open + * FOPEN_NONSEEKABLE: the file is not seekable ++ * FOPEN_CACHE_DIR: allow caching this directory + */ + #define FOPEN_DIRECT_IO (1 << 0) + #define FOPEN_KEEP_CACHE (1 << 1) + #define FOPEN_NONSEEKABLE (1 << 2) ++#define FOPEN_CACHE_DIR (1 << 3) + + /** + * INIT request/reply flags +@@ -244,6 +246,8 @@ struct fuse_file_lock { + * FUSE_PARALLEL_DIROPS: allow parallel lookups and readdir + * FUSE_HANDLE_KILLPRIV: fs handles killing suid/sgid/cap on write/chown/trunc + * FUSE_POSIX_ACL: filesystem supports posix acls ++ * FUSE_MAX_PAGES: init_out.max_pages contains the max number of req pages ++ * FUSE_CACHE_SYMLINKS: cache READLINK responses + */ + #define FUSE_ASYNC_READ (1 << 0) + #define FUSE_POSIX_LOCKS (1 << 1) +@@ -266,6 +270,8 @@ struct fuse_file_lock { + #define FUSE_PARALLEL_DIROPS (1 << 18) + #define FUSE_HANDLE_KILLPRIV (1 << 19) + #define FUSE_POSIX_ACL (1 << 20) ++#define FUSE_MAX_PAGES (1 << 22) ++#define FUSE_CACHE_SYMLINKS (1 << 23) + + /** + * CUSE INIT request/reply flags +@@ -604,7 +610,9 @@ struct fuse_init_out { + uint16_t congestion_threshold; + uint32_t max_write; + uint32_t time_gran; +- uint32_t unused[9]; ++ uint16_t max_pages; ++ uint16_t padding; ++ uint32_t unused[8]; + }; + + #define CUSE_INIT_INFO_MAX 4096 +-- +2.36.1 + diff --git a/SOURCES/0002-fuse_lowlevel-Add-max_pages-support-384.patch b/SOURCES/0002-fuse_lowlevel-Add-max_pages-support-384.patch new file mode 100644 index 0000000..4854850 --- /dev/null +++ b/SOURCES/0002-fuse_lowlevel-Add-max_pages-support-384.patch @@ -0,0 +1,130 @@ +From 5100bdc814435a1222fef6438cebcd81a3de6c73 Mon Sep 17 00:00:00 2001 +From: scosu +Date: Thu, 13 Jun 2019 13:59:10 +0200 +Subject: [PATCH 2/4] fuse_lowlevel: Add max_pages support (#384) + +Starting with kernel version 4.20 fuse supports a new property +'max_pages' which is the maximum number of pages that can be used per +request. This can be set via an argument during initialization. +This new property allows writes to be larger than 128k. + +This patch sets the property if the matching capability is set +(FUSE_MAX_PAGES). It will also set max_write to 1MiB. Filesystems have +the possibility to decrease this size by setting max_write to a smaller +size. The max_pages and bufsize fields are adjusted accordingly. + +Cc: Constantine Shulyupin +Signed-off-by: Markus Pargmann +(cherry picked from commit 027d0d17c8a4605109f09d9c988e255b64a2c19a) +Signed-off-by: Pavel Reichl +--- + ChangeLog.rst | 7 +++++++ + lib/fuse_i.h | 6 ++++++ + lib/fuse_lowlevel.c | 30 +++++++++++++++++++++--------- + 3 files changed, 34 insertions(+), 9 deletions(-) + +diff --git a/ChangeLog.rst b/ChangeLog.rst +index 8ea9397..411cd4a 100644 +--- a/ChangeLog.rst ++++ b/ChangeLog.rst +@@ -1,6 +1,13 @@ + libfuse 3.3.0 (2018-11-06) + ========================== + ++* Added support for fuse kernel feature `max_pages` which allows to increase ++ the maximum number of pages that can be used per request. This feature was ++ introduced in kernel 4.20. `max_pages` is set based on the value in ++ `max_write`. By default `max_write` will be 1MiB now for kernels that support ++ `max_pages`. If you want smaller buffers or writes you have to set ++ `max_write` manually. ++ + * The `auto_unmount` mode now works correctly in combination with + autofs. + +diff --git a/lib/fuse_i.h b/lib/fuse_i.h +index cf35551..d38b630 100644 +--- a/lib/fuse_i.h ++++ b/lib/fuse_i.h +@@ -131,3 +131,9 @@ struct fuse *fuse_new_31(struct fuse_args *args, const struct fuse_operations *o + int fuse_loop_mt_32(struct fuse *f, struct fuse_loop_config *config); + int fuse_session_loop_mt_32(struct fuse_session *se, struct fuse_loop_config *config); + ++#define FUSE_MAX_MAX_PAGES 256 ++#define FUSE_DEFAULT_MAX_PAGES_PER_REQ 32 ++ ++/* room needed in buffer to accommodate header */ ++#define FUSE_BUFFER_HEADER_SIZE 0x1000 ++ +diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c +index 844e797..60195e0 100644 +--- a/lib/fuse_lowlevel.c ++++ b/lib/fuse_lowlevel.c +@@ -1882,6 +1882,14 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) + se->conn.capable |= FUSE_CAP_POSIX_ACL; + if (arg->flags & FUSE_HANDLE_KILLPRIV) + se->conn.capable |= FUSE_CAP_HANDLE_KILLPRIV; ++ if (!(arg->flags & FUSE_MAX_PAGES)) { ++ size_t max_bufsize = ++ FUSE_DEFAULT_MAX_PAGES_PER_REQ * getpagesize() ++ + FUSE_BUFFER_HEADER_SIZE; ++ if (bufsize > max_bufsize) { ++ bufsize = max_bufsize; ++ } ++ } + } else { + se->conn.max_readahead = 0; + } +@@ -1928,10 +1936,10 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) + bufsize); + bufsize = FUSE_MIN_READ_BUFFER; + } ++ se->bufsize = bufsize; + +- bufsize -= 4096; +- if (bufsize < se->conn.max_write) +- se->conn.max_write = bufsize; ++ if (se->conn.max_write > bufsize - FUSE_BUFFER_HEADER_SIZE) ++ se->conn.max_write = bufsize - FUSE_BUFFER_HEADER_SIZE; + + se->got_init = 1; + if (se->op.init) +@@ -1958,6 +1966,14 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) + return; + } + ++ if (se->conn.max_write < bufsize - FUSE_BUFFER_HEADER_SIZE) { ++ se->bufsize = se->conn.max_write + FUSE_BUFFER_HEADER_SIZE; ++ } ++ if (arg->flags & FUSE_MAX_PAGES) { ++ outarg.flags |= FUSE_MAX_PAGES; ++ outarg.max_pages = (se->conn.max_write - 1) / getpagesize() + 1; ++ } ++ + /* Always enable big writes, this is superseded + by the max_write option */ + outarg.flags |= FUSE_BIG_WRITES; +@@ -2779,11 +2795,6 @@ restart: + return res; + } + +-#define KERNEL_BUF_PAGES 32 +- +-/* room needed in buffer to accommodate header */ +-#define HEADER_SIZE 0x1000 +- + struct fuse_session *fuse_session_new(struct fuse_args *args, + const struct fuse_lowlevel_ops *op, + size_t op_size, void *userdata) +@@ -2844,7 +2855,8 @@ struct fuse_session *fuse_session_new(struct fuse_args *args, + if (se->debug) + fprintf(stderr, "FUSE library version: %s\n", PACKAGE_VERSION); + +- se->bufsize = KERNEL_BUF_PAGES * getpagesize() + HEADER_SIZE; ++ se->bufsize = FUSE_MAX_MAX_PAGES * getpagesize() + ++ FUSE_BUFFER_HEADER_SIZE; + + list_init_req(&se->list); + list_init_req(&se->interrupts); +-- +2.36.1 + diff --git a/SOURCES/0003-Allow-caching-symlinks-in-kernel-page-cache.-551.patch b/SOURCES/0003-Allow-caching-symlinks-in-kernel-page-cache.-551.patch new file mode 100644 index 0000000..4e0e79c --- /dev/null +++ b/SOURCES/0003-Allow-caching-symlinks-in-kernel-page-cache.-551.patch @@ -0,0 +1,83 @@ +From be7f19b21c84004c5a0705f040b957fd1c609e2e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Etienne=20Dubl=C3=A9?= +Date: Sun, 20 Sep 2020 20:08:15 +0200 +Subject: [PATCH 3/4] Allow caching symlinks in kernel page cache. (#551) + +This commit defines a new capability called `FUSE_CAP_CACHE_SYMLINKS`. +It is off by default but you can now enable it by setting this flag in +in the `want` field of the `fuse_conn_info` structure. + +When enabled, the kernel will save symlinks in its page cache, +by making use of the feature introduced in kernel 4.20: +https://github.com/torvalds/linux/commit/5571f1e65486be025f73fa6aa30fb03725d362a2 + +(cherry picked from commit ba3b225a126ebb3c6d4fe27c9f7c73aa4167001e) +Signed-off-by: Pavel Reichl +--- + example/printcap.c | 2 ++ + include/fuse_common.h | 13 +++++++++++++ + lib/fuse_lowlevel.c | 4 ++++ + 3 files changed, 19 insertions(+) + +diff --git a/example/printcap.c b/example/printcap.c +index 77dea14..a66036f 100644 +--- a/example/printcap.c ++++ b/example/printcap.c +@@ -77,6 +77,8 @@ static void pc_init(void *userdata, + printf("\tFUSE_CAP_PARALLEL_DIROPS\n"); + if(conn->capable & FUSE_CAP_POSIX_ACL) + printf("\tFUSE_CAP_POSIX_ACL\n"); ++ if(conn->capable & FUSE_CAP_CACHE_SYMLINKS) ++ printf("\tFUSE_CAP_CACHE_SYMLINKS\n"); + fuse_session_exit(se); + } + +diff --git a/include/fuse_common.h b/include/fuse_common.h +index 83c9dee..a5a0ea5 100644 +--- a/include/fuse_common.h ++++ b/include/fuse_common.h +@@ -316,6 +316,19 @@ struct fuse_loop_config { + */ + #define FUSE_CAP_HANDLE_KILLPRIV (1 << 20) + ++/** ++ * Indicates that the kernel supports caching symlinks in its page cache. ++ * ++ * When this feature is enabled, symlink targets are saved in the page cache. ++ * You can invalidate a cached link by calling: ++ * `fuse_lowlevel_notify_inval_inode(se, ino, 0, 0);` ++ * ++ * This feature is disabled by default. ++ * If the kernel supports it (>= 4.20), you can enable this feature by ++ * setting this flag in the `want` field of the `fuse_conn_info` structure. ++ */ ++#define FUSE_CAP_CACHE_SYMLINKS (1 << 23) ++ + /** + * Ioctl flags + * +diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c +index 60195e0..43f785f 100644 +--- a/lib/fuse_lowlevel.c ++++ b/lib/fuse_lowlevel.c +@@ -1882,6 +1882,8 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) + se->conn.capable |= FUSE_CAP_POSIX_ACL; + if (arg->flags & FUSE_HANDLE_KILLPRIV) + se->conn.capable |= FUSE_CAP_HANDLE_KILLPRIV; ++ if (arg->flags & FUSE_CACHE_SYMLINKS) ++ se->conn.capable |= FUSE_CAP_CACHE_SYMLINKS; + if (!(arg->flags & FUSE_MAX_PAGES)) { + size_t max_bufsize = + FUSE_DEFAULT_MAX_PAGES_PER_REQ * getpagesize() +@@ -2002,6 +2004,8 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) + outarg.flags |= FUSE_WRITEBACK_CACHE; + if (se->conn.want & FUSE_CAP_POSIX_ACL) + outarg.flags |= FUSE_POSIX_ACL; ++ if (se->conn.want & FUSE_CAP_CACHE_SYMLINKS) ++ outarg.flags |= FUSE_CACHE_SYMLINKS; + outarg.max_readahead = se->conn.max_readahead; + outarg.max_write = se->conn.max_write; + if (se->conn.proto_minor >= 13) { +-- +2.36.1 + diff --git a/SOURCES/0004-Add-support-for-in-kernel-readdir-caching.patch b/SOURCES/0004-Add-support-for-in-kernel-readdir-caching.patch new file mode 100644 index 0000000..29bcb9c --- /dev/null +++ b/SOURCES/0004-Add-support-for-in-kernel-readdir-caching.patch @@ -0,0 +1,65 @@ +From da57354dc8593d37eff59bc7836ee4e460a2659a Mon Sep 17 00:00:00 2001 +From: Nikolaus Rath +Date: Sat, 6 Apr 2019 18:34:57 +0100 +Subject: [PATCH 4/4] Add support for in-kernel readdir caching. + +Fixes: #394. +(cherry picked from commit 1552b467fcd7751360299c5139382d78538e12b3) +Signed-off-by: Pavel Reichl +--- + include/fuse_common.h | 18 +++++++++++++----- + lib/fuse_lowlevel.c | 2 ++ + 2 files changed, 15 insertions(+), 5 deletions(-) + +diff --git a/include/fuse_common.h b/include/fuse_common.h +index a5a0ea5..a28ffa5 100644 +--- a/include/fuse_common.h ++++ b/include/fuse_common.h +@@ -45,9 +45,11 @@ struct fuse_file_info { + /** Can be filled in by open, to use direct I/O on this file. */ + unsigned int direct_io : 1; + +- /** Can be filled in by open, to indicate that currently +- cached file data (that the filesystem provided the last +- time the file was open) need not be invalidated. */ ++ /** Can be filled in by open. It signals the kernel that any ++ currently cached file data (ie., data that the filesystem ++ provided the last time the file was open) need not be ++ invalidated. Has no effect when set in other contexts (in ++ particular it does nothing when set by opendir()). */ + unsigned int keep_cache : 1; + + /** Indicates a flush operation. Set in flush operation, also +@@ -64,8 +66,14 @@ struct fuse_file_info { + May only be set in ->release(). */ + unsigned int flock_release : 1; + +- /** Padding. Do not use*/ +- unsigned int padding : 27; ++ /** Can be filled in by opendir. It signals the kernel to ++ enable caching of entries returned by readdir(). Has no ++ effect when set in other contexts (in particular it does ++ nothing when set by open()). */ ++ unsigned int cache_readdir : 1; ++ ++ /** Padding. Reserved for future use*/ ++ unsigned int padding : 26; + + /** File handle. May be filled in by filesystem in open(). + Available in all other file operations */ +diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c +index 43f785f..6379e09 100644 +--- a/lib/fuse_lowlevel.c ++++ b/lib/fuse_lowlevel.c +@@ -392,6 +392,8 @@ static void fill_open(struct fuse_open_out *arg, + arg->open_flags |= FOPEN_DIRECT_IO; + if (f->keep_cache) + arg->open_flags |= FOPEN_KEEP_CACHE; ++ if (f->cache_readdir) ++ arg->open_flags |= FOPEN_CACHE_DIR; + if (f->nonseekable) + arg->open_flags |= FOPEN_NONSEEKABLE; + } +-- +2.36.1 + diff --git a/SOURCES/buffer_size.patch b/SOURCES/buffer_size.patch new file mode 100644 index 0000000..6677df9 --- /dev/null +++ b/SOURCES/buffer_size.patch @@ -0,0 +1,54 @@ +From a83b3ec1d7ce2d656a4c476d65486371d1a659b2 Mon Sep 17 00:00:00 2001 +From: Carlos Maiolino +Date: Tue, 2 May 2017 12:46:10 +0200 +Subject: [PATCH] From 4f8f034a8969a48f210bf00be78a67cfb6964c72 Mon Sep 17 + 00:00:00 2001 From: Carlos Maiolino + Date: Thu, 20 Apr 2017 + 14:53:01 +0200 Subject: [PATCH] make buffer size match kernel max transfer + size + +Currently libfuse has a hardcoded buffer limit to 128kib, while fuse +kernel module has a limit up to 32 pages. + +This patch changes buffer limit to match the current page size, instead +of assuming 4096 bytes pages, enabling architectures with bigger pages +to use larger buffers, improving performance. + +Also, add a new macro (HEADER_SIZE) to specify the space needed to +accommodate the header, making it easier to understand why those extra +4096 bytes are needed + +Signed-off-by: Carlos Maiolino +Signed-off-by: Carlos Maiolino +--- + lib/fuse_kern_chan.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/lib/fuse_kern_chan.c b/lib/fuse_kern_chan.c +index 5f77bbf..4cc9b73 100644 +--- a/lib/fuse_kern_chan.c ++++ b/lib/fuse_kern_chan.c +@@ -80,7 +80,10 @@ static void fuse_kern_chan_destroy(struct fuse_chan *ch) + close(fd); + } + +-#define MIN_BUFSIZE 0x21000 ++#define KERNEL_BUF_PAGES 32 ++ ++/* room needed in buffer to accommodate header */ ++#define HEADER_SIZE 0x1000 + + struct fuse_chan *fuse_kern_chan_new(int fd) + { +@@ -89,7 +92,6 @@ struct fuse_chan *fuse_kern_chan_new(int fd) + .send = fuse_kern_chan_send, + .destroy = fuse_kern_chan_destroy, + }; +- size_t bufsize = getpagesize() + 0x1000; +- bufsize = bufsize < MIN_BUFSIZE ? MIN_BUFSIZE : bufsize; ++ size_t bufsize = KERNEL_BUF_PAGES * getpagesize() + HEADER_SIZE; + return fuse_chan_new(&op, fd, bufsize, NULL); + } +-- +2.9.3 + diff --git a/SOURCES/fuse-0001-More-parentheses.patch b/SOURCES/fuse-0001-More-parentheses.patch new file mode 100644 index 0000000..4d34710 --- /dev/null +++ b/SOURCES/fuse-0001-More-parentheses.patch @@ -0,0 +1,52 @@ +From 22ba14e45e84e0bd12a9ab1c9d0460b9ae27c10c Mon Sep 17 00:00:00 2001 +From: Peter Lemenkov +Date: Mon, 9 Aug 2010 12:10:40 +0400 +Subject: [PATCH 1/1] More parentheses + +Signed-off-by: Peter Lemenkov +--- + lib/fuse.c | 8 +++----- + lib/fuse_lowlevel.c | 2 +- + 2 files changed, 4 insertions(+), 6 deletions(-) + +diff --git a/lib/fuse.c b/lib/fuse.c +index d511964..328ebba 100644 +--- a/lib/fuse.c ++++ b/lib/fuse.c +@@ -991,17 +991,15 @@ static int fuse_compat_open(struct fuse_fs *fs, const char *path, + { + int err; + if (!fs->compat || fs->compat >= 25) +- err = fs->op.open(path, fi); ++ err = (fs->op.open)(path, fi); + else if (fs->compat == 22) { + struct fuse_file_info_compat tmp; + memcpy(&tmp, fi, sizeof(tmp)); +- err = ((struct fuse_operations_compat22 *) &fs->op)->open(path, +- &tmp); ++ err = (((struct fuse_operations_compat22 *) &fs->op)->open)(path, &tmp); + memcpy(fi, &tmp, sizeof(tmp)); + fi->fh = tmp.fh; + } else +- err = ((struct fuse_operations_compat2 *) &fs->op) +- ->open(path, fi->flags); ++ err = (((struct fuse_operations_compat2 *) &fs->op)->open)(path, fi->flags); + return err; + } + +diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c +index c86a910..4f19d61 100644 +--- a/lib/fuse_lowlevel.c ++++ b/lib/fuse_lowlevel.c +@@ -716,7 +716,7 @@ static void do_open(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) + fi.flags = arg->flags; + + if (req->f->op.open) +- req->f->op.open(req, nodeid, &fi); ++ (req->f->op.open)(req, nodeid, &fi); + else + fuse_reply_open(req, &fi); + } +-- +1.7.9.3 + diff --git a/SOURCES/fuse-2.9.2-namespace-conflict-fix.patch b/SOURCES/fuse-2.9.2-namespace-conflict-fix.patch new file mode 100644 index 0000000..ae67e7d --- /dev/null +++ b/SOURCES/fuse-2.9.2-namespace-conflict-fix.patch @@ -0,0 +1,21 @@ +diff -up fuse-2.9.2/include/fuse_kernel.h.conflictfix fuse-2.9.2/include/fuse_kernel.h +--- fuse-2.9.2/include/fuse_kernel.h.conflictfix 2013-06-26 09:31:57.862198038 -0400 ++++ fuse-2.9.2/include/fuse_kernel.h 2013-06-26 09:32:19.679198365 -0400 +@@ -88,12 +88,16 @@ + #ifndef _LINUX_FUSE_H + #define _LINUX_FUSE_H + +-#include ++#ifdef __linux__ ++#include ++#else ++#include + #define __u64 uint64_t + #define __s64 int64_t + #define __u32 uint32_t + #define __s32 int32_t + #define __u16 uint16_t ++#endif + + /* + * Version negotiation: diff --git a/SOURCES/fuse-3.0.0-More-parentheses.patch b/SOURCES/fuse-3.0.0-More-parentheses.patch new file mode 100644 index 0000000..6d10168 --- /dev/null +++ b/SOURCES/fuse-3.0.0-More-parentheses.patch @@ -0,0 +1,13 @@ +diff -up libfuse-fuse-3.0.0/lib/fuse.c.parens libfuse-fuse-3.0.0/lib/fuse.c +--- libfuse-fuse-3.0.0/lib/fuse.c.parens 2017-03-21 09:31:31.979537796 -0400 ++++ libfuse-fuse-3.0.0/lib/fuse.c 2017-03-21 09:31:42.676250718 -0400 +@@ -1653,7 +1653,7 @@ int fuse_fs_open(struct fuse_fs *fs, con + fprintf(stderr, "open flags: 0x%x %s\n", fi->flags, + path); + +- err = fs->op.open(path, fi); ++ err = (fs->op.open)(path, fi); + + if (fs->debug && !err) + fprintf(stderr, " open[%llu] flags: 0x%x %s\n", +diff -up libfuse-fuse-3.0.0/lib/fuse_lowlevel.c.parens libfuse-fuse-3.0.0/lib/fuse_lowlevel.c diff --git a/SOURCES/fuse-3.10.4-fix-test-failure.patch b/SOURCES/fuse-3.10.4-fix-test-failure.patch new file mode 100644 index 0000000..cc8cbcb --- /dev/null +++ b/SOURCES/fuse-3.10.4-fix-test-failure.patch @@ -0,0 +1,11 @@ +--- libfuse-fuse-3.3.0/test/test_syscalls.c.orig 2018-11-06 19:57:47.000000000 +0100 ++++ libfuse-fuse-3.3.0/test/test_syscalls.c 2022-02-07 17:17:47.512515240 +0100 +@@ -1511,7 +1511,7 @@ + + errno = 0; + res = rename(PATH("a/b"), PATH2("a/d")); +- if (res == 0 || errno != ENOTEMPTY) { ++ if (res == 0 || (errno != ENOTEMPTY && errno != EEXIST)) { + PERROR("rename"); + goto fail; + } diff --git a/SOURCES/fuse-3.2.1-no-dev.patch b/SOURCES/fuse-3.2.1-no-dev.patch new file mode 100644 index 0000000..8871a39 --- /dev/null +++ b/SOURCES/fuse-3.2.1-no-dev.patch @@ -0,0 +1,22 @@ +--- libfuse-fuse-3.3.0/util/install_helper.orig 2022-01-31 20:17:39.461137935 +0100 ++++ libfuse-fuse-3.3.0/util/install_helper.sh 2022-01-31 20:18:46.093188655 +0100 +@@ -22,18 +22,12 @@ + DESTDIR="${DESTDIR%/}" + fi + +-chown root:root "${DESTDIR}${bindir}/fusermount3" ++#chown root:root "${DESTDIR}${bindir}/fusermount3" + chmod u+s "${DESTDIR}${bindir}/fusermount3" + + install -D -m 644 "${MESON_SOURCE_ROOT}/util/fuse.conf" \ + "${DESTDIR}${sysconfdir}/fuse.conf" + +- +-if test ! -e "${DESTDIR}/dev/fuse"; then +- mkdir -p "${DESTDIR}/dev" +- mknod "${DESTDIR}/dev/fuse" -m 0666 c 10 229 +-fi +- + install -D -m 644 "${MESON_SOURCE_ROOT}/util/udev.rules" \ + "${DESTDIR}${udevrulesdir}/99-fuse3.rules" + diff --git a/SOURCES/fuse.conf b/SOURCES/fuse.conf new file mode 100644 index 0000000..cd4c6bd --- /dev/null +++ b/SOURCES/fuse.conf @@ -0,0 +1,2 @@ +# mount_max = 1000 +# user_allow_other diff --git a/SOURCES/fusermount-don-t-feed-escaped-commas-into-mount-opti.patch b/SOURCES/fusermount-don-t-feed-escaped-commas-into-mount-opti.patch new file mode 100644 index 0000000..fb6934f --- /dev/null +++ b/SOURCES/fusermount-don-t-feed-escaped-commas-into-mount-opti.patch @@ -0,0 +1,47 @@ +From 520f09be3c2d351722c33daf7389d6ac4716be98 Mon Sep 17 00:00:00 2001 +From: Jann Horn +Date: Fri, 13 Jul 2018 15:15:36 -0700 +Subject: [PATCH] fusermount: don't feed "escaped commas" into mount options + +The old code permits the following behavior: + +$ _FUSE_COMMFD=10000 priv_strace -etrace=mount -s200 fusermount -o 'foobar=\,allow_other' mount +mount("/dev/fuse", ".", "fuse", MS_NOSUID|MS_NODEV, "foobar=\\,allow_other,fd=3,rootmode=40000,user_id=1000,group_id=1000") = -1 EINVAL (Invalid argument) + +However, backslashes do not have any special meaning for the kernel here. + +As it happens, you can't abuse this because there is no FUSE mount option +that takes a string value that can contain backslashes; but this is very +brittle. Don't interpret "escape characters" in places where they don't +work. +--- + util/fusermount.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/util/fusermount.c b/util/fusermount.c +index 26a0b75bbecb..5175c0115a05 100644 +--- a/util/fusermount.c ++++ b/util/fusermount.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + #define FUSE_COMMFD_ENV "_FUSE_COMMFD" + +@@ -739,8 +740,10 @@ static int do_mount(const char *mnt, char **typep, mode_t rootmode, + unsigned len; + const char *fsname_str = "fsname="; + const char *subtype_str = "subtype="; ++ bool escape_ok = begins_with(s, fsname_str) || ++ begins_with(s, subtype_str); + for (len = 0; s[len]; len++) { +- if (s[len] == '\\' && s[len + 1]) ++ if (escape_ok && s[len] == '\\' && s[len + 1]) + len++; + else if (s[len] == ',') + break; +-- +2.14.3 + diff --git a/SPECS/fuse.spec b/SPECS/fuse.spec new file mode 100644 index 0000000..4d1f0a6 --- /dev/null +++ b/SPECS/fuse.spec @@ -0,0 +1,540 @@ +%global fuse2ver 2.9.7 +%global fuse2sver 2 +%global fuse3ver 3.3.0 + +Name: fuse +Version: %{fuse2ver} +Release: 16%{?dist} +Summary: File System in Userspace (FUSE) v2 utilities +License: GPL+ +URL: http://fuse.sf.net +#fuse2 sources +Source0: https://github.com/libfuse/libfuse/archive/%{name}-%{fuse2ver}.tar.gz +#fuse3 sources +Source1: https://github.com/libfuse/libfuse/archive/%{name}-%{fuse3ver}.tar.gz +Source2: %{name}.conf + +Patch1: fuse-3.0.0-More-parentheses.patch +Patch2: fuse-0001-More-parentheses.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=970768 +Patch3: fuse-2.9.2-namespace-conflict-fix.patch +Patch4: fuse-3.2.1-no-dev.patch +Patch5: fusermount-don-t-feed-escaped-commas-into-mount-opti.patch +Patch6: buffer_size.patch +Patch7: fuse-3.10.4-fix-test-failure.patch +Patch8: 0001-Synchronize-fuse_kernel.h.patch +Patch9: 0002-fuse_lowlevel-Add-max_pages-support-384.patch +Patch10: 0003-Allow-caching-symlinks-in-kernel-page-cache.-551.patch +Patch11: 0004-Add-support-for-in-kernel-readdir-caching.patch + +Requires: which +Conflicts: filesystem < 3 +BuildRequires: libselinux-devel +BuildRequires: autoconf, automake, libtool, gettext-devel +BuildRequires: meson, ninja-build, systemd-udev +Requires: fuse-common = %{fuse3ver} + +%description +With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains the FUSE v2 userspace tools to +mount a FUSE filesystem. + +%package -n fuse3 +Version: %{fuse3ver} +Summary: File System in Userspace (FUSE) v3 utilitie +Requires: fuse-common = %{fuse3ver} +Requires: fuse3-libs = %{fuse3ver}-%{release} + +%description -n fuse3 +With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains the FUSE v3 userspace tools to +mount a FUSE filesystem. + +%package libs +Version: %{fuse2ver} +Summary: File System in Userspace (FUSE) v2 libraries +Group: System Environment/Libraries +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description libs +Devel With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains the FUSE v2 libraries. + +%package -n fuse3-libs +Version: %{fuse3ver} +Summary: File System in Userspace (FUSE) v3 libraries +Group: System Environment/Libraries +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description -n fuse3-libs +Devel With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains the FUSE v3 libraries. + +%package devel +Version: %{fuse2ver} +Summary: File System in Userspace (FUSE) v2 devel files +Group: Development/Libraries +Requires: %{name}-libs = %{fuse2ver}-%{release} +Requires: pkgconfig +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description devel +With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains development files (headers, +pgk-config) to develop FUSE v2 based applications/filesystems. + +%package -n fuse3-devel +Version: %{fuse3ver} +Summary: File System in Userspace (FUSE) v3 devel files +Group: Development/Libraries +Requires: %{name}3-libs = %{fuse3ver}-%{release} +Requires: pkgconfig +License: LGPLv2+ +Conflicts: filesystem < 3 + +%description -n fuse3-devel +With FUSE it is possible to implement a fully functional filesystem in a +userspace program. This package contains development files (headers, +pgk-config) to develop FUSE v3 based applications/filesystems. + +%package common +Version: %{fuse3ver} +Summary: Common files for File System in Userspace (FUSE) v2 and v3 +License: GPL+ + +%description common +Common files for FUSE v2 and FUSE v3. + +%prep +%setup -q -T -c -n fuse2and3 -a0 -a1 + +# fuse 3 +pushd lib%{name}-%{name}-%{fuse3ver} +%patch1 -p1 -b .add_parentheses +%patch4 -p1 -b .nodev +%patch7 -p1 -b .test_fail +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 + +popd + +# fuse 2 +pushd lib%{name}-%{name}-%{fuse2ver} +./makeconf.sh +#disable device creation during build/install +sed -i 's|mknod|echo Disabled: mknod |g' util/Makefile.in +%patch2 -p1 -b .add_parentheses +%patch3 -p1 -b .conflictfix +%patch5 -p1 -b .escaped_commas +%patch6 -p1 -b .buffer_size +popd + +%build +# fuse 3 +pushd lib%{name}-%{name}-%{fuse3ver} +%meson +%meson_build +%if 0 +# Can't pass --disable-static here, or else the utils don't build +export MOUNT_FUSE_PATH="%{_sbindir}" +CFLAGS="%{optflags} -D_GNU_SOURCE" %configure +make %{?_smp_mflags} V=1 +%endif +popd + +# fuse 2 +pushd lib%{name}-%{name}-%{fuse2ver} +# Can't pass --disable-static here, or else the utils don't build +export MOUNT_FUSE_PATH="%{_sbindir}" +CFLAGS="%{optflags} -D_GNU_SOURCE" %configure +make %{?_smp_mflags} +popd + +%install +# fuse 3 +pushd lib%{name}-%{name}-%{fuse3ver} +export MESON_INSTALL_DESTDIR_PREFIX=%{buildroot}/usr %meson_install +popd +find %{buildroot} . +find %{buildroot} -type f -name "*.la" -exec rm -f {} ';' +# change from 4755 to 0755 to allow stripping -- fixed later in files +chmod 0755 %{buildroot}/%{_bindir}/fusermount3 + +# fuse 2 +pushd lib%{name}-%{name}-%{fuse2ver} +install -m 0755 lib/.libs/libfuse.so.%{fuse2ver} %{buildroot}/%{_libdir} +install -m 0755 lib/.libs/libulockmgr.so.1.0.1 %{buildroot}/%{_libdir} +install -p fuse.pc %{buildroot}/%{_libdir}/pkgconfig/ +install -m 0755 util/fusermount %{buildroot}/%{_bindir} +install -m 0755 util/mount.fuse %{buildroot}/%{_sbindir} +install -m 0755 util/ulockmgr_server %{buildroot}/%{_bindir} +mkdir -p %{buildroot}/%{_includedir}/fuse +install -p include/old/fuse.h %{buildroot}/%{_includedir}/ +install -p include/ulockmgr.h %{buildroot}/%{_includedir}/ +for i in cuse_lowlevel.h fuse_common_compat.h fuse_common.h fuse_compat.h fuse.h fuse_lowlevel_compat.h fuse_lowlevel.h fuse_opt.h; do + install -p include/$i %{buildroot}/%{_includedir}/fuse/ +done +popd +pushd %{buildroot}/%{_libdir} +ln -s libfuse.so.%{fuse2ver} libfuse.so.%{fuse2sver} +ln -s libfuse.so.%{fuse2ver} libfuse.so +ln -s libulockmgr.so.1.0.1 libulockmgr.so.1 +ln -s libulockmgr.so.1.0.1 libulockmgr.so +popd +pushd %{buildroot}/%{_mandir}/man8 +ln -s mount.fuse3.8 mount.fuse.8 +popd + +# Get rid of static libs +rm -f %{buildroot}/%{_libdir}/*.a +# No need to create init-script +rm -f %{buildroot}%{_sysconfdir}/init.d/fuse3 + +# Install config-file +install -p -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir} + +# Delete pointless udev rules, which do not belong in /etc (brc#748204) +rm -f %{buildroot}/usr/lib/udev/rules.d/99-fuse3.rules + +%post libs -p /sbin/ldconfig + +%post -n fuse3-libs -p /sbin/ldconfig + +%postun libs -p /sbin/ldconfig + +%postun -n fuse3-libs -p /sbin/ldconfig + +%files +%license libfuse-fuse-%{fuse2ver}/COPYING +%doc libfuse-fuse-%{fuse2ver}/AUTHORS libfuse-fuse-%{fuse2ver}/ChangeLog libfuse-fuse-%{fuse2ver}/NEWS libfuse-fuse-%{fuse2ver}/README.md libfuse-fuse-%{fuse2ver}/README.NFS +%{_sbindir}/mount.fuse +%attr(4755,root,root) %{_bindir}/fusermount +%{_bindir}/ulockmgr_server + +%files -n fuse3 +%license libfuse-fuse-%{fuse3ver}/GPL2.txt libfuse-fuse-%{fuse3ver}/LICENSE + +%doc libfuse-fuse-%{fuse3ver}/AUTHORS libfuse-fuse-%{fuse3ver}/ChangeLog.rst libfuse-fuse-%{fuse3ver}/README.md +%{_sbindir}/mount.fuse3 +%attr(4755,root,root) %{_bindir}/fusermount3 + +%files common +%config(noreplace) %{_sysconfdir}/%{name}.conf +%{_mandir}/man1/* +%{_mandir}/man8/* + +%files libs +%license libfuse-fuse-%{fuse2ver}/COPYING.LIB +%{_libdir}/libfuse.so.* +%{_libdir}/libulockmgr.so.* + +%files -n fuse3-libs +%license libfuse-fuse-%{fuse3ver}/LGPL2.txt +%{_libdir}/libfuse3.so.* + +%files devel +%{_libdir}/libfuse.so +%{_libdir}/libulockmgr.so +%{_libdir}/pkgconfig/fuse.pc +%{_includedir}/fuse.h +%{_includedir}/ulockmgr.h +%{_includedir}/fuse + +%files -n fuse3-devel +%{_libdir}/libfuse3.so +%{_libdir}/pkgconfig/fuse3.pc +%{_includedir}/fuse3/ + +%changelog +* Mon May 30 2022 Pavel Reichl - 2.9.7-16 +- Back-port max_pages support, +- caching symlinks in kernel page cache, +- and in-kernel readdir caching +- Fixed rhbz#2080000 + +* Wed Feb 23 2022 Pavel Reichl - 2.9.7-15 +- Fix missing dependency of fuse3 on fuse3-libs +- Make symlink for mount.fuse to mount.fuse3 + +* Mon Feb 07 2022 Pavel Reichl - 2.9.7-14 +- Fix failing test for fuse-3 + +* Mon Jan 31 2022 Pavel Reichl - 2.9.7-13 +- update to 3.3.0 +- patch #5 is part of fuse-3 upstream now + +* Thu Nov 08 2018 Miklos Szeredi - 2.9.7-12 +- Fixed CVE-2018-10906 (rhbz#1607855) +- Fix regression from RHEL7 (rhbz#1648280) + +* Wed Feb 07 2018 Fedora Release Engineering - 2.9.7-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Nov 16 2017 Tom Callaway 2.9.7-10 +- update fuse3 to 3.2.1 + +* Mon Aug 7 2017 Tom Callaway 2.9.7-9 +- update fuse3 to 3.1.1 + +* Wed Aug 02 2017 Fedora Release Engineering - 2.9.7-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Fri Jul 28 2017 Tom Callaway - 2.9.7-7 +- use -D_FILE_OFFSET_BITS=64 to force off_t to be 64bit on 32bit arches + +* Wed Jul 26 2017 Fedora Release Engineering - 2.9.7-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 17 2017 Tom Callaway - 3.1.0-5 +- update to 3.1.0 + +* Thu Jun 1 2017 Tom Callaway - 3.0.2-4 +- update to 3.0.2 + +* Sun Mar 26 2017 Tom Callaway - 3.0.0-3 +- update release to 3 to make clean upgrade + +* Tue Mar 21 2017 Tom Callaway - 3.0.0-1 +- update to 3.0.0 +- split out fuse3 packages + +* Fri Feb 10 2017 Fedora Release Engineering - 2.9.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Jul 6 2016 Tom Callaway - 2.9.7-1 +- update to 2.9.7 + +* Wed Feb 03 2016 Fedora Release Engineering - 2.9.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Oct 08 2015 Adam Williamson - 2.9.4-3 +- backport patch allowing setting SELinux context on FUSE mounts + +* Wed Jun 17 2015 Fedora Release Engineering - 2.9.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri May 22 2015 Tom Callaway 2.9.4-1 +- update to 2.9.4 +- fixes CVE-2015-3202 + +* Sat Aug 16 2014 Fedora Release Engineering - 2.9.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 2.9.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 2.9.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Jul 6 2013 Tom Callaway - 2.9.3-1 +- update to 2.9.3 + +* Wed Jun 26 2013 Tom Callaway - 2.9.2-4 +- add fix for namespace conflict in fuse_kernel.h + +* Sat May 18 2013 Peter Lemenkov - 2.9.2-3 +- Removed pre-F12 stuff +- Dropped ancient dependency on initscripts and chkconfig + +* Wed Feb 13 2013 Fedora Release Engineering - 2.9.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Dec 06 2012 Adam Jackson +- Remove ancient Requires: kernel >= 2.6.14, FC6 was 2.6.18. + +* Tue Oct 23 2012 Tom Callaway - 2.9.2-1 +- update to 2.9.2 + +* Tue Aug 28 2012 Tom Callaway - 2.9.1-1 +- update to 2.9.1 + +* Thu Jul 19 2012 Fedora Release Engineering - 2.8.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Apr 16 2012 Peter Lemenkov - 2.8.7-1 +- Ver. 2.8.7 + +* Sun Apr 15 2012 Kay Sievers - 2.8.6-4 +- remove needless udev rule + +* Wed Jan 25 2012 Harald Hoyer 2.8.6-3 +- install everything in /usr + https://fedoraproject.org/wiki/Features/UsrMove + +* Fri Jan 13 2012 Fedora Release Engineering - 2.8.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Sep 22 2011 Peter Lemenkov - 2.8.6-1 +- Ver. 2.8.6 +- Dropped patch 3 - fixed upstream + +* Thu Mar 03 2011 Peter Lemenkov - 2.8.5-5 +- Use noreplace for /etc/fuse.conf + +* Tue Feb 15 2011 Peter Lemenkov - 2.8.5-4 +- Provide /etc/fuse.conf (see rhbz #292811) + +* Tue Feb 08 2011 Fedora Release Engineering - 2.8.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Oct 27 2010 Peter Lemenkov 2.8.5-2 +- Fixed rhbz #622255 + +* Tue Oct 26 2010 Peter Lemenkov 2.8.5-1 +- Ver. 2.8.5 + +* Tue Jun 8 2010 Peter Lemenkov 2.8.4-1 +- Ver. 2.8.4 +- CVE-2009-3297 patch dropped (merged upstream) + +* Tue Jan 26 2010 Peter Lemenkov 2.8.1-4 +- Fixed CVE-2009-3297 (rhbz #558833) + +* Thu Nov 19 2009 Peter Lemenkov 2.8.1-3 +- Fixed udev rules (bz# 538606) + +* Thu Nov 19 2009 Peter Lemenkov 2.8.1-2 +- Removed support for MAKEDEV (bz# 511220) + +* Thu Sep 17 2009 Peter Lemenkov 2.8.1-1 +- Ver. 2.8.1 + +* Wed Aug 19 2009 Peter Lemenkov 2.8.0-1 +- Ver. 2.8.0 + +* Fri Jul 24 2009 Fedora Release Engineering - 2.7.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Feb 24 2009 Fedora Release Engineering - 2.7.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Jan 28 2009 Peter Lemenkov 2.7.4-2 +- Fixed BZ#479581 + +* Sat Aug 23 2008 Peter Lemenkov 2.7.4-1 +- Ver. 2.7.4 + +* Sat Jul 12 2008 Peter Lemenkov 2.7.3-3 +- Fixed initscripts (BZ#441284) + +* Thu Feb 28 2008 Peter Lemenkov 2.7.3-2 +- Fixed BZ#434881 + +* Wed Feb 20 2008 Peter Lemenkov 2.7.3-1 +- Ver. 2.7.3 +- Removed usergroup fuse +- Added chkconfig support (BZ#228088) + +* Tue Feb 19 2008 Fedora Release Engineering - 2.7.2-2 +- Autorebuild for GCC 4.3 + +* Mon Jan 21 2008 Tom "spot" Callaway 2.7.2-1 +- bump to 2.7.2 +- fix license tag + +* Sun Nov 4 2007 Tom "spot" Callaway 2.7.0-9 +- fix initscript to work with chkconfig + +* Mon Oct 1 2007 Peter Lemenkov 2.7.0-8 +- Added Require: which (BZ#312511) + +* Fri Sep 21 2007 Tom "spot" Callaway 2.7.0-7 +- revert udev rules change + +* Thu Sep 20 2007 Tom "spot" Callaway 2.7.0-6 +- change udev rules so that /dev/fuse is chmod 666 (bz 298651) + +* Wed Aug 29 2007 Tom "spot" Callaway 2.7.0-5 +- fix open issue (bz 265321) + +* Wed Aug 29 2007 Fedora Release Engineering - 2.7.0-4 +- Rebuild for selinux ppc32 issue. + +* Sun Jul 22 2007 Tom "spot" Callaway 2.7.0-3 +- put pkgconfig file in correct place +- enable compat symlinks for files in /bin + +* Sat Jul 21 2007 Tom "spot" Callaway 2.7.0-2 +- redefine exec_prefix to / +- redefine bindir to /bin +- redefine libdir to %%{_lib} +- don't pass --disable-static to configure +- manually rm generated static libs + +* Wed Jul 18 2007 Peter Lemenkov 2.7.0-1 +- Version 2.7.0 +- Redefined exec_prefix due to demands from NTFS-3G + +* Wed Jun 6 2007 Peter Lemenkov 2.6.5-2 +- Add BR libselinux-devel (bug #235145) +- Config files properly marked as config (bug #211122) + +* Sat May 12 2007 Peter Lemenkov 2.6.5-1 +- Version 2.6.5 + +* Thu Feb 22 2007 Peter Lemenkov 2.6.3-2 +- Fixed bug #229642 + +* Wed Feb 7 2007 Peter Lemenkov 2.6.3-1 +* Ver. 2.6.3 + +* Tue Dec 26 2006 Peter Lemenkov 2.6.1-1 +- Ver. 2.6.1 + +* Sat Nov 25 2006 Peter Lemenkov 2.6.0-2 +- fixed nasty typo (see bug #217075) + +* Fri Nov 3 2006 Peter Lemenkov 2.6.0-1 +- Ver. 2.6.0 + +* Sun Oct 29 2006 Peter Lemenkov 2.5.3-5 +- Fixed udev-rule again + +* Sat Oct 7 2006 Peter Lemenkov 2.5.3-4 +- Fixed udev-rule + +* Tue Sep 12 2006 Peter Lemenkov 2.5.3-3%{?dist} +- Rebuild for FC6 + +* Wed May 03 2006 Peter Lemenkov 2.5.3-1%{?dist} +- Update to 2.5.3 + +* Thu Mar 30 2006 Peter Lemenkov 2.5.2-4%{?dist} +- rebuild + +* Mon Feb 13 2006 Peter Lemenkov - 2.5.2-3 +- Proper udev rule + +* Mon Feb 13 2006 Peter Lemenkov - 2.5.2-2 +- Added missing requires + +* Tue Feb 07 2006 Peter Lemenkov - 2.5.2-1 +- Update to 2.5.2 +- Dropped fuse-mount.fuse.patch + +* Wed Nov 23 2005 Thorsten Leemhuis - 2.4.2-1 +- Use dist + +* Wed Nov 23 2005 Thorsten Leemhuis - 2.4.2-1 +- Update to 2.4.2 (solves CVE-2005-3531) +- Update README.fedora + +* Sat Nov 12 2005 Thorsten Leemhuis - 2.4.1-3 +- Add README.fedora +- Add hint to README.fedora and that you have to be member of the group "fuse" + in the description +- Use groupadd instead of fedora-groupadd + +* Fri Nov 04 2005 Thorsten Leemhuis - 2.4.1-2 +- Rename packages a bit +- use makedev.d/40-fuse.nodes +- fix /sbin/mount.fuse +- Use a fuse group to restict access to fuse-filesystems + +* Fri Oct 28 2005 Thorsten Leemhuis - 2.4.1-1 +- Initial RPM release.