1
0
mirror of https://github.com/systemd/systemd synced 2025-11-16 07:14:45 +01:00

Compare commits

..

6 Commits

Author SHA1 Message Date
Yu Watanabe
b3c117172f bpf-compat: coding style cleanups 2025-11-09 18:13:44 +09:00
Yu Watanabe
7304557ea9 reread-partition-table: fix error code check
flock() sets EAGAIN rather than EBUSY when a node is already locked.

Follow-up for d8e38d4aaac23cb27cc7e0f410449c3a6034db4f.
Fixes #39544.
2025-11-09 18:12:38 +09:00
Yu Watanabe
0213b68969 libarchive-util: several cleanups
- use loop for checking existence of functions,
- rename HAVE_LIBARCHIVE_XYZ -> HAVE_ARCHIVE_XYZ to make them match with
  the function name,
- do not conditionally include user-util.h in libarchive-util.h,
- sort library function symbols.
2025-11-09 18:09:31 +09:00
Yu Watanabe
3519b73b70
meson: several cleanups (#39644) 2025-11-09 18:05:22 +09:00
Yu Watanabe
5123d9d38c meson: refuse to build when gcrypt support is enabled bu libgpg-error not found
Follow-up for 066e603ac641e22b1827ce36c9d55311fa44be6e.
2025-11-09 09:21:19 +09:00
Yu Watanabe
242088e98b meson: drop redundant HAVE_ZLIB check
ENABLE_IMPORTD requires HAVE_ZLIB, and it is already checked at the very
beginning of the file.
2025-11-09 05:42:21 +09:00
6 changed files with 48 additions and 36 deletions

View File

@ -1301,7 +1301,7 @@ feature = get_option('gcrypt')
libgcrypt = dependency('libgcrypt',
required : feature)
libgpg_error = dependency('gpg-error',
required : feature.disabled() ? feature : false)
required : feature)
have = libgcrypt.found() and libgpg_error.found()
if not have
@ -1427,10 +1427,16 @@ libarchive = dependency('libarchive',
required : get_option('libarchive'))
libarchive_cflags = libarchive.partial_dependency(includes: true, compile_args: true)
conf.set10('HAVE_LIBARCHIVE', libarchive.found())
conf.set10('HAVE_LIBARCHIVE_UID_IS_SET',
libarchive.found() and cc.has_function('archive_entry_uid_is_set', dependencies : libarchive))
conf.set10('HAVE_LIBARCHIVE_HARDLINK_IS_SET',
libarchive.found() and cc.has_function('archive_entry_hardlink_is_set', dependencies : libarchive))
foreach ident : [
'archive_entry_gid_is_set', # since 3.7.3
'archive_entry_uid_is_set', # since 3.7.3
'archive_entry_hardlink_is_set', # since 3.7.5
]
have = libarchive.found() and cc.has_function(ident, dependencies : libarchive)
conf.set10('HAVE_' + ident.to_upper(), have)
endforeach
libxkbcommon = dependency('xkbcommon',
version : '>= 0.3.0',

View File

@ -101,7 +101,6 @@ executables += [
'sources' : files('test-qcow2.c'),
'objects' : ['systemd-importd'],
'dependencies' : common_deps,
'conditions' : ['HAVE_ZLIB'],
'type' : 'manual',
},

View File

@ -32,12 +32,14 @@ extern struct bpf_map* (*sym_bpf_object__next_map)(const struct bpf_object *obj,
extern int (*sym_bpf_create_map)(enum bpf_map_type, int key_size, int value_size, int max_entries, __u32 map_flags);
/* helpers to use the available variant behind new API */
static inline int compat_bpf_map_create(enum bpf_map_type map_type,
static inline int compat_bpf_map_create(
enum bpf_map_type map_type,
const char *map_name,
__u32 key_size,
__u32 value_size,
__u32 max_entries,
const struct bpf_map_create_opts *opts) {
if (sym_bpf_map_create)
return sym_bpf_map_create(map_type, map_name, key_size,
value_size, max_entries, opts);

View File

@ -3,6 +3,7 @@
#include <syslog.h>
#include "libarchive-util.h"
#include "user-util.h"
#if HAVE_LIBARCHIVE
static void *libarchive_dl = NULL;
@ -14,11 +15,15 @@ DLSYM_PROTOTYPE(archive_entry_fflags) = NULL;
DLSYM_PROTOTYPE(archive_entry_filetype) = NULL;
DLSYM_PROTOTYPE(archive_entry_free) = NULL;
DLSYM_PROTOTYPE(archive_entry_gid) = NULL;
#if HAVE_LIBARCHIVE_UID_IS_SET
#if HAVE_ARCHIVE_ENTRY_GID_IS_SET
DLSYM_PROTOTYPE(archive_entry_gid_is_set) = NULL;
#else
int sym_archive_entry_gid_is_set(struct archive_entry *e) {
return gid_is_valid(sym_archive_entry_gid(e));
}
#endif
DLSYM_PROTOTYPE(archive_entry_hardlink) = NULL;
#if HAVE_LIBARCHIVE_HARDLINK_IS_SET
#if HAVE_ARCHIVE_ENTRY_HARDLINK_IS_SET
DLSYM_PROTOTYPE(archive_entry_hardlink_is_set) = NULL;
#endif
DLSYM_PROTOTYPE(archive_entry_mode) = NULL;
@ -45,8 +50,12 @@ DLSYM_PROTOTYPE(archive_entry_set_uid) = NULL;
DLSYM_PROTOTYPE(archive_entry_sparse_add_entry) = NULL;
DLSYM_PROTOTYPE(archive_entry_symlink) = NULL;
DLSYM_PROTOTYPE(archive_entry_uid) = NULL;
#if HAVE_LIBARCHIVE_UID_IS_SET
#if HAVE_ARCHIVE_ENTRY_UID_IS_SET
DLSYM_PROTOTYPE(archive_entry_uid_is_set) = NULL;
#else
int sym_archive_entry_uid_is_set(struct archive_entry *e) {
return uid_is_valid(sym_archive_entry_uid(e));
}
#endif
DLSYM_PROTOTYPE(archive_entry_xattr_add_entry) = NULL;
DLSYM_PROTOTYPE(archive_entry_xattr_next) = NULL;
@ -86,11 +95,11 @@ int dlopen_libarchive(void) {
DLSYM_ARG(archive_entry_filetype),
DLSYM_ARG(archive_entry_free),
DLSYM_ARG(archive_entry_gid),
#if HAVE_LIBARCHIVE_UID_IS_SET
#if HAVE_ARCHIVE_ENTRY_GID_IS_SET
DLSYM_ARG(archive_entry_gid_is_set),
#endif
DLSYM_ARG(archive_entry_hardlink),
#if HAVE_LIBARCHIVE_HARDLINK_IS_SET
#if HAVE_ARCHIVE_ENTRY_HARDLINK_IS_SET
DLSYM_ARG(archive_entry_hardlink_is_set),
#endif
DLSYM_ARG(archive_entry_mode),
@ -117,7 +126,7 @@ int dlopen_libarchive(void) {
DLSYM_ARG(archive_entry_sparse_add_entry),
DLSYM_ARG(archive_entry_symlink),
DLSYM_ARG(archive_entry_uid),
#if HAVE_LIBARCHIVE_UID_IS_SET
#if HAVE_ARCHIVE_ENTRY_UID_IS_SET
DLSYM_ARG(archive_entry_uid_is_set),
#endif
DLSYM_ARG(archive_entry_xattr_add_entry),

View File

@ -16,7 +16,19 @@ extern DLSYM_PROTOTYPE(archive_entry_fflags);
extern DLSYM_PROTOTYPE(archive_entry_filetype);
extern DLSYM_PROTOTYPE(archive_entry_free);
extern DLSYM_PROTOTYPE(archive_entry_gid);
#if HAVE_ARCHIVE_ENTRY_GID_IS_SET
extern DLSYM_PROTOTYPE(archive_entry_gid_is_set);
#else
int sym_archive_entry_gid_is_set(struct archive_entry *e);
#endif
extern DLSYM_PROTOTYPE(archive_entry_hardlink);
#if HAVE_ARCHIVE_ENTRY_HARDLINK_IS_SET
extern DLSYM_PROTOTYPE(archive_entry_hardlink_is_set);
#else
static inline int sym_archive_entry_hardlink_is_set(struct archive_entry *e) {
return !!sym_archive_entry_hardlink(e);
}
#endif
extern DLSYM_PROTOTYPE(archive_entry_mode);
extern DLSYM_PROTOTYPE(archive_entry_mtime);
extern DLSYM_PROTOTYPE(archive_entry_mtime_is_set);
@ -41,6 +53,11 @@ extern DLSYM_PROTOTYPE(archive_entry_set_uid);
extern DLSYM_PROTOTYPE(archive_entry_sparse_add_entry);
extern DLSYM_PROTOTYPE(archive_entry_symlink);
extern DLSYM_PROTOTYPE(archive_entry_uid);
#if HAVE_ARCHIVE_ENTRY_UID_IS_SET
extern DLSYM_PROTOTYPE(archive_entry_uid_is_set);
#else
int sym_archive_entry_uid_is_set(struct archive_entry *e);
#endif
extern DLSYM_PROTOTYPE(archive_entry_xattr_add_entry);
extern DLSYM_PROTOTYPE(archive_entry_xattr_next);
extern DLSYM_PROTOTYPE(archive_entry_xattr_reset);
@ -62,27 +79,6 @@ extern DLSYM_PROTOTYPE(archive_write_open_fd);
extern DLSYM_PROTOTYPE(archive_write_set_format_filter_by_ext);
extern DLSYM_PROTOTYPE(archive_write_set_format_pax);
#if HAVE_LIBARCHIVE_UID_IS_SET
extern DLSYM_PROTOTYPE(archive_entry_gid_is_set);
extern DLSYM_PROTOTYPE(archive_entry_uid_is_set);
#else
#include "user-util.h"
static inline int sym_archive_entry_gid_is_set(struct archive_entry *e) {
return gid_is_valid(sym_archive_entry_gid(e));
}
static inline int sym_archive_entry_uid_is_set(struct archive_entry *e) {
return uid_is_valid(sym_archive_entry_uid(e));
}
#endif
#if HAVE_LIBARCHIVE_HARDLINK_IS_SET
extern DLSYM_PROTOTYPE(archive_entry_hardlink_is_set);
#else
static inline int sym_archive_entry_hardlink_is_set(struct archive_entry *e) {
return !!sym_archive_entry_hardlink(e);
}
#endif
int dlopen_libarchive(void);
DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(struct archive_entry*, sym_archive_entry_free, archive_entry_freep, NULL);

View File

@ -262,7 +262,7 @@ static int reread_partition_table_full(sd_device *dev, int fd, RereadPartitionTa
if (flock(lock_fd, LOCK_EX|LOCK_NB) < 0) {
r = log_device_debug_errno(dev, errno, "Failed to take BSD lock on block device '%s': %m", p);
if (r == -EBUSY && FLAGS_SET(flags, REREADPT_FORCE_UEVENT)) {
if (r == -EAGAIN && FLAGS_SET(flags, REREADPT_FORCE_UEVENT)) {
log_device_debug(dev, "Giving up rereading partition table of '%s'. Triggering change events for the device and its partitions.", p);
(void) trigger_partitions(dev, /* blkrrpart_success= */ false);
}