From efa630fa491566938c08508f64f41b590cfedc07 Mon Sep 17 00:00:00 2001 From: Bernd Schubert Date: Sat, 28 Dec 2024 11:15:30 +0100 Subject: [PATCH] Restore compat ABI in 'struct fuse_file_info' This fixes commit a5eb7f2 "Enable parallel direct writes on the same file" and restores the ABI by moving the parallel_direct_writes bit. Given that there were already several releases with this commit we will still need an so version bump. Signed-off-by: Bernd Schubert --- include/fuse.h | 31 ++++++++++++++++--------------- include/fuse_common.h | 8 ++++---- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/include/fuse.h b/include/fuse.h index 396358d..49ba7d9 100644 --- a/include/fuse.h +++ b/include/fuse.h @@ -280,21 +280,6 @@ struct fuse_config { */ int nullpath_ok; - /** - * Allow parallel direct-io writes to operate on the same file. - * - * FUSE implementations which do not handle parallel writes on - * same file/region should NOT enable this option at all as it - * might lead to data inconsistencies. - * - * For the FUSE implementations which have their own mechanism - * of cache/data integrity are beneficiaries of this setting as - * it now open doors to parallel writes on the same file (without - * enabling this setting, all direct writes on the same file are - * serialized, resulting in huge data bandwidth loss). - */ - int parallel_direct_writes; - /** * These 3 options are used by libfuse internally and * should not be touched. @@ -310,6 +295,22 @@ struct fuse_config { */ unsigned int fmask; unsigned int dmask; + + /** + * Allow parallel direct-io writes to operate on the same file. + * + * FUSE implementations which do not handle parallel writes on + * same file/region should NOT enable this option at all as it + * might lead to data inconsistencies. + * + * For the FUSE implementations which have their own mechanism + * of cache/data integrity are beneficiaries of this setting as + * it now open doors to parallel writes on the same file (without + * enabling this setting, all direct writes on the same file are + * serialized, resulting in huge data bandwidth loss). + */ + int parallel_direct_writes; + }; diff --git a/include/fuse_common.h b/include/fuse_common.h index e6c3b5d..c46aacb 100644 --- a/include/fuse_common.h +++ b/include/fuse_common.h @@ -67,10 +67,6 @@ struct fuse_file_info { the file/directory is closed. */ unsigned int keep_cache : 1; - /** Can be filled by open/create, to allow parallel direct writes on this - file */ - unsigned int parallel_direct_writes : 1; - /** Indicates a flush operation. Set in flush operation, also maybe set in highlevel lock operation and lowlevel release operation. */ @@ -95,6 +91,10 @@ struct fuse_file_info { on close. */ unsigned int noflush : 1; + /** Can be filled by open/create, to allow parallel direct writes on this + file */ + unsigned int parallel_direct_writes : 1; + /** Padding. Reserved for future use*/ unsigned int padding : 23; unsigned int padding2 : 32; -- 2.30.2