@@ -1,7 +1,7 @@
#
# This file is used by configure to get version information
#
-PKG_MAJOR=1
-PKG_MINOR=1
-PKG_REVISION=1
-PKG_BUILD=1
+PACKAGE_MAJOR=1
+PACKAGE_MINOR=1
+PACKAGE_REVISION=1
+PACKAGE_BUILD=1
@@ -9,9 +9,9 @@ AC_DEFUN([AC_PACKAGE_GLOBALS],
AC_SUBST(pkg_name)
. ./VERSION
- pkg_version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
+ pkg_version=${PACKAGE_MAJOR}.${PACKAGE_MINOR}.${PACKAGE_REVISION}
AC_SUBST(pkg_version)
- pkg_release=$PKG_BUILD
+ pkg_release=$PACKAGE_BUILD
test -z "$BUILD_VERSION" || pkg_release="$BUILD_VERSION"
AC_SUBST(pkg_release)
@@ -1,4 +1,8 @@
AC_DEFUN([AC_PACKAGE_WANT_URING],
- [ AC_CHECK_HEADERS(liburing.h, [ have_uring=true ], [ have_uring=false ])
+ [ PKG_CHECK_MODULES([LIBURING], [liburing],
+ [ AC_DEFINE([HAVE_LIBURING], [1], [Use liburing])
+ have_uring=true
+ ],
+ [ have_uring=false ])
AC_SUBST(have_uring)
])
@@ -5,7 +5,7 @@
. ./VERSION
-version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
+version=${PACKAGE_MAJOR}.${PACKAGE_MINOR}.${PACKAGE_REVISION}
date=`date +"%-d %B %Y"`
echo "Cleaning up"
@@ -42,7 +42,7 @@
#include <libaio.h>
#endif
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
#include <liburing.h>
#endif
@@ -227,7 +227,7 @@ check_aio_support(void)
static int
check_uring_support(void)
{
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
struct io_uring ring;
int err;
@@ -2206,7 +2206,7 @@ out:
}
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
int tcore_io_uring_idmapped(const struct vfstest_info *info)
{
int fret = -1;
@@ -2743,7 +2743,7 @@ out_unmap:
return fret;
}
-#endif /* HAVE_LIBURING_H */
+#endif /* HAVE_LIBURING */
/* Validate that protected symlinks work correctly on idmapped mounts. */
int tcore_protected_symlinks_idmapped_mounts(const struct vfstest_info *info)
@@ -8859,7 +8859,7 @@ static const struct test_struct t_idmapped_mounts[] = {
{ tcore_hardlink_crossing_idmapped_mounts, true, "cross idmapped mount hardlink", },
{ tcore_hardlink_from_idmapped_mount, true, "hardlinks from idmapped mounts", },
{ tcore_hardlink_from_idmapped_mount_in_userns, true, "hardlinks from idmapped mounts in user namespace", },
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
{ tcore_io_uring_idmapped, true, "io_uring from idmapped mounts", },
{ tcore_io_uring_idmapped_userns, true, "io_uring from idmapped mounts in user namespace", },
{ tcore_io_uring_idmapped_unmapped, true, "io_uring from idmapped mounts with unmapped ids", },
@@ -30,7 +30,7 @@ int tcore_fscaps_idmapped_mounts_in_userns_separate_userns(const struct vfstest_
int tcore_hardlink_crossing_idmapped_mounts(const struct vfstest_info *info);
int tcore_hardlink_from_idmapped_mount(const struct vfstest_info *info);
int tcore_hardlink_from_idmapped_mount_in_userns(const struct vfstest_info *info);
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
int tcore_io_uring_idmapped(const struct vfstest_info *info);
int tcore_io_uring_idmapped_userns(const struct vfstest_info *info);
int tcore_io_uring_idmapped_unmapped(const struct vfstest_info *info);
@@ -167,7 +167,7 @@ static int tmpfs_hardlink_from_idmapped_mount_in_userns(const struct vfstest_inf
return tmpfs_nested_mount_setup(info, tcore_hardlink_from_idmapped_mount_in_userns);
}
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
static int tmpfs_io_uring_idmapped(const struct vfstest_info *info)
{
return tmpfs_nested_mount_setup(info, tcore_io_uring_idmapped);
@@ -184,7 +184,7 @@ static int tmpfs_io_uring_idmapped_unmapped_userns(const struct vfstest_info *in
{
return tmpfs_nested_mount_setup(info, tcore_io_uring_idmapped_unmapped_userns);
}
-#endif /* HAVE_LIBURING_H */
+#endif /* HAVE_LIBURING */
static int tmpfs_protected_symlinks_idmapped_mounts(const struct vfstest_info *info)
{
@@ -272,7 +272,7 @@ static const struct test_struct t_tmpfs[] = {
{ tmpfs_hardlink_crossing_idmapped_mounts, T_REQUIRE_USERNS | T_REQUIRE_IDMAPPED_MOUNTS, "tmpfs cross idmapped mount hardlink", },
{ tmpfs_hardlink_from_idmapped_mount, T_REQUIRE_USERNS | T_REQUIRE_IDMAPPED_MOUNTS, "tmpfs hardlinks from idmapped mounts", },
{ tmpfs_hardlink_from_idmapped_mount_in_userns, T_REQUIRE_USERNS | T_REQUIRE_IDMAPPED_MOUNTS, "tmpfs hardlinks from idmapped mounts in user namespace", },
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
{ tmpfs_io_uring_idmapped, T_REQUIRE_USERNS | T_REQUIRE_IDMAPPED_MOUNTS, "tmpfs io_uring from idmapped mounts", },
{ tmpfs_io_uring_idmapped_userns, T_REQUIRE_USERNS | T_REQUIRE_IDMAPPED_MOUNTS, "tmpfs io_uring from idmapped mounts in user namespace", },
{ tmpfs_io_uring_idmapped_unmapped, T_REQUIRE_USERNS | T_REQUIRE_IDMAPPED_MOUNTS, "tmpfs io_uring from idmapped mounts with unmapped ids", },
@@ -502,7 +502,7 @@ out:
return fret;
}
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
int io_uring_openat_with_creds(struct io_uring *ring, int dfd, const char *path,
int cred_id, bool with_link, int *ret_cqe)
{
@@ -555,7 +555,7 @@ int io_uring_openat_with_creds(struct io_uring *ring, int dfd, const char *path,
out:
return ret;
}
-#endif /* HAVE_LIBURING_H */
+#endif /* HAVE_LIBURING */
/* caps_up - raise all permitted caps */
int caps_up(void)
@@ -25,7 +25,7 @@
#include <sys/capability.h>
#endif
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
#include <liburing.h>
#endif
@@ -349,11 +349,11 @@ static inline bool switch_fsids(uid_t fsuid, gid_t fsgid)
return true;
}
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
extern int io_uring_openat_with_creds(struct io_uring *ring, int dfd,
const char *path, int cred_id,
bool with_link, int *ret_cqe);
-#endif /* HAVE_LIBURING_H */
+#endif /* HAVE_LIBURING */
extern int chown_r(int fd, const char *path, uid_t uid, gid_t gid);
extern int rm_r(int fd, const char *path);
@@ -1222,7 +1222,7 @@ out:
return fret;
}
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
static int io_uring(const struct vfstest_info *info)
{
int fret = -1;
@@ -1495,7 +1495,7 @@ out_unmap:
return fret;
}
-#endif /* HAVE_LIBURING_H */
+#endif /* HAVE_LIBURING */
/* The following tests are concerned with setgid inheritance. These can be
* filesystem type specific. For xfs, if a new file or directory or node is
@@ -2349,7 +2349,7 @@ static const struct option longopts[] = {
static const struct test_struct t_basic[] = {
{ fscaps, T_REQUIRE_USERNS, "fscaps on regular mounts", },
{ hardlink_crossing_mounts, 0, "cross mount hardlink", },
-#ifdef HAVE_LIBURING_H
+#ifdef HAVE_LIBURING
{ io_uring, 0, "io_uring", },
{ io_uring_userns, T_REQUIRE_USERNS, "io_uring in user namespace", },
#endif
Change our autoconf macros so that instead of checking for the presence of liburing.h, we use pkg-config. The benefit of this is that we can then check the version of liburing, and do conditional compilation based on this. There's a macro IO_URING_CHECK_VERSION already, but it's only in relatively recent versions of liburing.h. This replaces HAVE_URING_H, defined by AC_CHECK_HEADERS, with HAVE_URING. I also had to rename PKG_{MAJOR,MINOR,REVISION,BUILD} to start with PACKAGE_, to avoid "possibly undefined macro" errors; it looks like pkg-config assumes that anything called PKG_* is for its own use. Signed-off-by: Mark Harmstone <maharmstone@fb.com> --- VERSION | 8 ++++---- m4/package_globals.m4 | 4 ++-- m4/package_liburing.m4 | 6 +++++- release.sh | 2 +- src/feature.c | 4 ++-- src/vfs/idmapped-mounts.c | 6 +++--- src/vfs/idmapped-mounts.h | 2 +- src/vfs/tmpfs-idmapped-mounts.c | 6 +++--- src/vfs/utils.c | 4 ++-- src/vfs/utils.h | 6 +++--- src/vfs/vfstest.c | 6 +++--- 11 files changed, 29 insertions(+), 25 deletions(-)