Skip to content

Commit

Permalink
Merge branch 'libfuse:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
Smit-tay authored Feb 12, 2025
2 parents dc2f8be + 34c5053 commit a4a4f8a
Show file tree
Hide file tree
Showing 14 changed files with 131 additions and 133 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@17a820bf2e43b47be2c72b39cc905417bc1ab6d0 # v3.28.6
uses: github/codeql-action/init@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
Expand All @@ -78,7 +78,7 @@ jobs:
meson compile -C build
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@17a820bf2e43b47be2c72b39cc905417bc1ab6d0 # v3.28.6
uses: github/codeql-action/analyze@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8

with:
category: "/language:${{matrix.language}}"
4 changes: 4 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -259,3 +259,7 @@ George Hilliard <[email protected]>
Tyler Hall <[email protected]>
yangyun <[email protected]>
Abhishek <[email protected]>

# New authors since 666b2c3fa5159e3c72a0d08117507475117c9319
Luis Henriques <[email protected]>
Zegang <[email protected]>
20 changes: 18 additions & 2 deletions ChangeLog.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
libfuse 3.17 (2024-01-01)
=========================
libfuse 3.17.1-rc0 (2024-02.10)
===============================

* Fix libfuse build with FUSE_USE_VERSION 30
* Fix build of memfs_ll without manual meson reconfigure
* Fix junk readdirplus results when filesystem not filling stat info
* Fix conn.want_ext truncation to 32bit
* Fix some build warnings with -Og
* Fix fuse_main_real symbols
* Several changes related to functions/symbols that added in
the libfuse version in 3.17
* Add thread names to libfuse threads
* With auto-umounts the FUSE_COMMFD2 (parent process fd is
exported to be able to silence leak checkers


libfuse 3.17 (2024-01-01, not officially releaesed)
==================================================

* 3.11 and 3.14.2 introduced ABI incompatibilities, the ABI is restored
to 3.10, .so version was increased since there were releases with
Expand Down
2 changes: 1 addition & 1 deletion example/passthrough_ll.c
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,7 @@ static void lo_opendir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi
int error = ENOMEM;
struct lo_data *lo = lo_data(req);
struct lo_dirp *d;
int fd;
int fd = -1;

d = calloc(1, sizeof(struct lo_dirp));
if (d == NULL)
Expand Down
78 changes: 30 additions & 48 deletions include/fuse.h
Original file line number Diff line number Diff line change
Expand Up @@ -896,12 +896,14 @@ static inline int fuse_main_real(int argc, char *argv[],
__func__);

/* not declared globally, to restrict usage of this function */
int fuse_main_real_317(int argc, char *argv[],
const struct fuse_operations *op, size_t op_size,
struct libfuse_version *version,
void *user_data);

return fuse_main_real_317(argc, argv, op, op_size, &version, user_data);
int fuse_main_real_versioned(int argc, char *argv[],
const struct fuse_operations *op,
size_t op_size,
struct libfuse_version *version,
void *user_data);

return fuse_main_real_versioned(argc, argv, op, op_size, &version,
user_data);
}

/**
Expand Down Expand Up @@ -958,9 +960,9 @@ static inline int fuse_main_real(int argc, char *argv[],
*
* Example usage, see hello.c
*/
static inline int
fuse_main(int argc, char *argv[], const struct fuse_operations *op,
void *user_data)
static inline int fuse_main_fn(int argc, char *argv[],
const struct fuse_operations *op,
void *user_data)
{
struct libfuse_version version = {
.major = FUSE_MAJOR_VERSION,
Expand All @@ -970,13 +972,16 @@ fuse_main(int argc, char *argv[], const struct fuse_operations *op,
};

/* not declared globally, to restrict usage of this function */
int fuse_main_real_317(int argc, char *argv[],
const struct fuse_operations *op, size_t op_size,
struct libfuse_version *version,
void *user_data);
return fuse_main_real_317(argc, argv, op, sizeof(*(op)), &version,
user_data);
int fuse_main_real_versioned(int argc, char *argv[],
const struct fuse_operations *op,
size_t op_size,
struct libfuse_version *version,
void *user_data);
return fuse_main_real_versioned(argc, argv, op, sizeof(*(op)), &version,
user_data);
}
#define fuse_main(argc, argv, op, user_data) \
fuse_main_fn(argc, argv, op, user_data)

/* ----------------------------------------------------------- *
* More detailed API *
Expand Down Expand Up @@ -1029,12 +1034,12 @@ struct fuse *_fuse_new_30(struct fuse_args *args,
struct libfuse_version *version,
void *user_data);
static inline struct fuse *
fuse_new(struct fuse_args *args,
fuse_new_fn(struct fuse_args *args,
const struct fuse_operations *op, size_t op_size,
void *user_data)
{
/* not declared globally, to restrict usage of this function */
struct fuse *_fuse_new(struct fuse_args *args,
struct fuse *_fuse_new_30(struct fuse_args *args,
const struct fuse_operations *op, size_t op_size,
struct libfuse_version *version,
void *user_data);
Expand All @@ -1048,10 +1053,9 @@ fuse_new(struct fuse_args *args,

return _fuse_new_30(args, op, op_size, &version, user_data);
}
#else
#if (defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
#else /* FUSE_USE_VERSION */
static inline struct fuse *
fuse_new(struct fuse_args *args,
fuse_new_fn(struct fuse_args *args,
const struct fuse_operations *op, size_t op_size,
void *user_data)
{
Expand All @@ -1063,36 +1067,14 @@ fuse_new(struct fuse_args *args,
};

/* not declared globally, to restrict usage of this function */
struct fuse *_fuse_new(struct fuse_args *args,
const struct fuse_operations *op, size_t op_size,
struct libfuse_version *version,
void *user_data);

return _fuse_new(args, op, op_size, &version, user_data);
struct fuse *_fuse_new_31(struct fuse_args *args,
const struct fuse_operations *op,
size_t op_size, struct libfuse_version *version,
void *user_data);
return _fuse_new_31(args, op, op_size, &version, user_data);
}
#else /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */
struct fuse *_fuse_new_317(struct fuse_args *args,
const struct fuse_operations *op, size_t op_size,
struct libfuse_version *version,
void *private_data);
#define _fuse_new(args, op, size, version, data) \
_fuse_new_317(args, op, size, version, data)
static inline struct fuse *
fuse_new(struct fuse_args *args,
const struct fuse_operations *op, size_t op_size,
void *user_data)
{
struct libfuse_version version = {
.major = FUSE_MAJOR_VERSION,
.minor = FUSE_MINOR_VERSION,
.hotfix = FUSE_HOTFIX_VERSION,
.padding = 0
};

return _fuse_new(args, op, op_size, &version, user_data);
}
#endif /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */
#endif
#define fuse_new(args, op, size, data) fuse_new_fn(args, op, size, data)

/**
* Mount a FUSE file system.
Expand Down
25 changes: 7 additions & 18 deletions include/fuse_lowlevel.h
Original file line number Diff line number Diff line change
Expand Up @@ -2047,18 +2047,6 @@ int fuse_parse_cmdline_312(struct fuse_args *args,
#endif
#endif

/* Do not call this directly, but only through fuse_session_new() */
#if (!defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS))
struct fuse_session *
_fuse_session_new_317(struct fuse_args *args,
const struct fuse_lowlevel_ops *op,
size_t op_size,
struct libfuse_version *version,
void *userdata);
#define _fuse_session_new(args, op, op_size, version, userdata) \
_fuse_session_new_317(args, op, op_size, version, userdata)
#endif

/**
* Create a low level session.
*
Expand Down Expand Up @@ -2088,10 +2076,8 @@ _fuse_session_new_317(struct fuse_args *args,
* @return the fuse session on success, NULL on failure
**/
static inline struct fuse_session *
fuse_session_new(struct fuse_args *args,
const struct fuse_lowlevel_ops *op,
size_t op_size,
void *userdata)
fuse_session_new_fn(struct fuse_args *args, const struct fuse_lowlevel_ops *op,
size_t op_size, void *userdata)
{
struct libfuse_version version = {
.major = FUSE_MAJOR_VERSION,
Expand All @@ -2101,13 +2087,16 @@ fuse_session_new(struct fuse_args *args,
};

/* not declared globally, to restrict usage of this function */
struct fuse_session *_fuse_session_new(
struct fuse_session *fuse_session_new_versioned(
struct fuse_args *args, const struct fuse_lowlevel_ops *op,
size_t op_size, struct libfuse_version *version,
void *userdata);

return _fuse_session_new(args, op, op_size, &version, userdata);
return fuse_session_new_versioned(args, op, op_size, &version,
userdata);
}
#define fuse_session_new(args, op, op_size, userdata) \
fuse_session_new_fn(args, op, op_size, userdata)

/*
* This should mostly not be called directly, but instead the
Expand Down
24 changes: 12 additions & 12 deletions lib/compat.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,18 @@ int fuse_session_custom_io(struct fuse_session *se,
return fuse_session_custom_io_30(se, io, fd);
}

#endif /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */

int fuse_main_real_30(int argc, char *argv[], const struct fuse_operations *op,
size_t op_size, void *user_data);
int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
size_t op_size, void *user_data);
int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
size_t op_size, void *user_data)
{
return fuse_main_real_30(argc, argv, op, op_size, user_data);
}

struct fuse_session *fuse_session_new_30(struct fuse_args *args,
const struct fuse_lowlevel_ops *op,
size_t op_size, void *userdata);
Expand All @@ -72,15 +84,3 @@ struct fuse_session *fuse_session_new(struct fuse_args *args,
{
return fuse_session_new_30(args, op, op_size, userdata);
}

#endif /* LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS */

int fuse_main_real_30(int argc, char *argv[], const struct fuse_operations *op,
size_t op_size, void *user_data);
int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
size_t op_size, void *user_data);
int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
size_t op_size, void *user_data)
{
return fuse_main_real_30(argc, argv, op, op_size, user_data);
}
15 changes: 7 additions & 8 deletions lib/fuse.c
Original file line number Diff line number Diff line change
Expand Up @@ -4927,12 +4927,11 @@ void fuse_stop_cleanup_thread(struct fuse *f)
* Not supposed to be called directly, but supposed to be called
* through the fuse_new macro
*/
struct fuse *_fuse_new_317(struct fuse_args *args,
struct fuse *_fuse_new_31(struct fuse_args *args,
const struct fuse_operations *op,
size_t op_size, struct libfuse_version *version,
void *user_data);
FUSE_SYMVER("_fuse_new_317", "_fuse_new@@FUSE_3.17")
struct fuse *_fuse_new_317(struct fuse_args *args,
struct fuse *_fuse_new_31(struct fuse_args *args,
const struct fuse_operations *op,
size_t op_size, struct libfuse_version *version,
void *user_data)
Expand Down Expand Up @@ -5018,12 +5017,12 @@ struct fuse *_fuse_new_317(struct fuse_args *args,
#endif

/* not declared globally, to restrict usage of this function */
struct fuse_session *_fuse_session_new(
struct fuse_session *fuse_session_new_versioned(
struct fuse_args *args, const struct fuse_lowlevel_ops *op,
size_t op_size, struct libfuse_version *version,
void *userdata);

f->se = _fuse_session_new(args, &llop, sizeof(llop), version, f);
f->se = fuse_session_new_versioned(args, &llop, sizeof(llop), version,
f);
if (f->se == NULL)
goto out_free_fs;

Expand Down Expand Up @@ -5107,7 +5106,7 @@ struct fuse *_fuse_new_30(struct fuse_args *args,
fuse_lib_help(args);
return NULL;
} else
return _fuse_new_317(args, op, op_size, version, user_data);
return _fuse_new_31(args, op, op_size, version, user_data);
}

/* ABI compat version */
Expand All @@ -5121,7 +5120,7 @@ struct fuse *fuse_new_31(struct fuse_args *args,
/* unknown version */
struct libfuse_version version = { 0 };

return _fuse_new_317(args, op, op_size, &version, user_data);
return _fuse_new_31(args, op, op_size, &version, user_data);
}

/*
Expand Down
28 changes: 12 additions & 16 deletions lib/fuse_lowlevel.c
Original file line number Diff line number Diff line change
Expand Up @@ -3245,17 +3245,14 @@ int fuse_session_receive_buf_internal(struct fuse_session *se,
return _fuse_session_receive_buf(se, buf, ch, true);
}

FUSE_SYMVER("_fuse_session_new_317", "_fuse_session_new@@FUSE_3.17")
struct fuse_session *_fuse_session_new_317(struct fuse_args *args,
const struct fuse_lowlevel_ops *op,
size_t op_size,
struct libfuse_version *version,
void *userdata);
struct fuse_session *_fuse_session_new_317(struct fuse_args *args,
const struct fuse_lowlevel_ops *op,
size_t op_size,
struct libfuse_version *version,
void *userdata)
struct fuse_session *
fuse_session_new_versioned(struct fuse_args *args,
const struct fuse_lowlevel_ops *op, size_t op_size,
struct libfuse_version *version, void *userdata);
struct fuse_session *
fuse_session_new_versioned(struct fuse_args *args,
const struct fuse_lowlevel_ops *op, size_t op_size,
struct libfuse_version *version, void *userdata)
{
int err;
struct fuse_session *se;
Expand Down Expand Up @@ -3356,10 +3353,8 @@ struct fuse_session *_fuse_session_new_317(struct fuse_args *args,
}

struct fuse_session *fuse_session_new_30(struct fuse_args *args,
const struct fuse_lowlevel_ops *op,
size_t op_size,
void *userdata);
FUSE_SYMVER("fuse_session_new_30", "fuse_session_new@FUSE_3.0")
const struct fuse_lowlevel_ops *op,
size_t op_size, void *userdata);
struct fuse_session *fuse_session_new_30(struct fuse_args *args,
const struct fuse_lowlevel_ops *op,
size_t op_size,
Expand All @@ -3368,7 +3363,8 @@ struct fuse_session *fuse_session_new_30(struct fuse_args *args,
/* unknown version */
struct libfuse_version version = { 0 };

return _fuse_session_new_317(args, op, op_size, &version, userdata);
return fuse_session_new_versioned(args, op, op_size, &version,
userdata);
}

FUSE_SYMVER("fuse_session_custom_io_317", "fuse_session_custom_io@@FUSE_3.17")
Expand Down
9 changes: 4 additions & 5 deletions lib/fuse_versionscript
Original file line number Diff line number Diff line change
Expand Up @@ -189,11 +189,10 @@ FUSE_3.12 {

FUSE_3.17 {
global:
fuse_main_real_317;
#if !defined(LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS)
_fuse_session_new_317;
_fuse_new_317;
#endif
fuse_main_real_versioned;
fuse_session_new_versioned;
_fuse_new_30;
_fuse_new_31;
fuse_passthrough_open;
fuse_passthrough_close;
fuse_session_custom_io_30;
Expand Down
Loading

0 comments on commit a4a4f8a

Please sign in to comment.