[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/15] block/file-posix: Simplify the XFS_IOC_DIOINFO handling
From: |
Paolo Bonzini |
Subject: |
[PULL 05/15] block/file-posix: Simplify the XFS_IOC_DIOINFO handling |
Date: |
Thu, 23 Dec 2021 12:51:24 +0100 |
From: Thomas Huth <thuth@redhat.com>
The handling for the XFS_IOC_DIOINFO ioctl is currently quite excessive:
This is not a "real" feature like the other features that we provide with
the "--enable-xxx" and "--disable-xxx" switches for the configure script,
since this does not influence lots of code (it's only about one call to
xfsctl() in file-posix.c), so people don't gain much with the ability to
disable this with "--disable-xfsctl".
It's also unfortunate that the ioctl will be disabled on Linux in case
the user did not install the right xfsprogs-devel package before running
configure. Thus let's simplify this by providing the ioctl definition
on our own, so we can completely get rid of the header dependency and
thus the related code in the configure script.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20211215125824.250091-1-thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
block/file-posix.c | 37 ++++++++++++++++---------------------
configure | 31 -------------------------------
meson.build | 1 -
3 files changed, 16 insertions(+), 53 deletions(-)
diff --git a/block/file-posix.c b/block/file-posix.c
index b283093e5b..1f1756e192 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -106,10 +106,6 @@
#include <sys/diskslice.h>
#endif
-#ifdef CONFIG_XFS
-#include <xfs/xfs.h>
-#endif
-
/* OS X does not have O_DSYNC */
#ifndef O_DSYNC
#ifdef O_SYNC
@@ -156,9 +152,6 @@ typedef struct BDRVRawState {
int perm_change_flags;
BDRVReopenState *reopen_state;
-#ifdef CONFIG_XFS
- bool is_xfs:1;
-#endif
bool has_discard:1;
bool has_write_zeroes:1;
bool discard_zeroes:1;
@@ -409,14 +402,22 @@ static void raw_probe_alignment(BlockDriverState *bs, int
fd, Error **errp)
if (probe_logical_blocksize(fd, &bs->bl.request_alignment) < 0) {
bs->bl.request_alignment = 0;
}
-#ifdef CONFIG_XFS
- if (s->is_xfs) {
- struct dioattr da;
- if (xfsctl(NULL, fd, XFS_IOC_DIOINFO, &da) >= 0) {
- bs->bl.request_alignment = da.d_miniosz;
- /* The kernel returns wrong information for d_mem */
- /* s->buf_align = da.d_mem; */
- }
+
+#ifdef __linux__
+ /*
+ * The XFS ioctl definitions are shipped in extra packages that might
+ * not always be available. Since we just need the XFS_IOC_DIOINFO ioctl
+ * here, we simply use our own definition instead:
+ */
+ struct xfs_dioattr {
+ uint32_t d_mem;
+ uint32_t d_miniosz;
+ uint32_t d_maxiosz;
+ } da;
+ if (ioctl(fd, _IOR('X', 30, struct xfs_dioattr), &da) >= 0) {
+ bs->bl.request_alignment = da.d_miniosz;
+ /* The kernel returns wrong information for d_mem */
+ /* s->buf_align = da.d_mem; */
}
#endif
@@ -798,12 +799,6 @@ static int raw_open_common(BlockDriverState *bs, QDict
*options,
#endif
s->needs_alignment = raw_needs_alignment(bs);
-#ifdef CONFIG_XFS
- if (platform_test_xfs_fd(s->fd)) {
- s->is_xfs = true;
- }
-#endif
-
bs->supported_zero_flags = BDRV_REQ_MAY_UNMAP | BDRV_REQ_NO_FALLBACK;
if (S_ISREG(st.st_mode)) {
/* When extending regular files, we get zeros from the OS */
diff --git a/configure b/configure
index 8ccfe51673..b66ab31834 100755
--- a/configure
+++ b/configure
@@ -291,7 +291,6 @@ EXTRA_CXXFLAGS=""
EXTRA_LDFLAGS=""
xen_ctrl_version="$default_feature"
-xfs="$default_feature"
membarrier="$default_feature"
vhost_kernel="$default_feature"
vhost_net="$default_feature"
@@ -1019,10 +1018,6 @@ for opt do
;;
--enable-opengl) opengl="yes"
;;
- --disable-xfsctl) xfs="no"
- ;;
- --enable-xfsctl) xfs="yes"
- ;;
--disable-zlib-test)
;;
--enable-guest-agent) guest_agent="yes"
@@ -1429,7 +1424,6 @@ cat << EOF
avx512f AVX512F optimization support
replication replication support
opengl opengl support
- xfsctl xfsctl support
qom-cast-debug cast debugging support
tools build qemu-io, qemu-nbd and qemu-img tools
bochs bochs image format support
@@ -2321,28 +2315,6 @@ EOF
fi
fi
-##########################################
-# xfsctl() probe, used for file-posix.c
-if test "$xfs" != "no" ; then
- cat > $TMPC << EOF
-#include <stddef.h> /* NULL */
-#include <xfs/xfs.h>
-int main(void)
-{
- xfsctl(NULL, 0, 0, NULL);
- return 0;
-}
-EOF
- if compile_prog "" "" ; then
- xfs="yes"
- else
- if test "$xfs" = "yes" ; then
- feature_not_found "xfs" "Install xfsprogs/xfslibs devel"
- fi
- xfs=no
- fi
-fi
-
##########################################
# plugin linker support probe
@@ -3454,9 +3426,6 @@ echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist"
>> $config_host_mak
if test "$block_drv_whitelist_tools" = "yes" ; then
echo "CONFIG_BDRV_WHITELIST_TOOLS=y" >> $config_host_mak
fi
-if test "$xfs" = "yes" ; then
- echo "CONFIG_XFS=y" >> $config_host_mak
-fi
qemu_version=$(head $source_path/VERSION)
echo "PKGVERSION=$pkgversion" >>$config_host_mak
echo "SRC_PATH=$source_path" >> $config_host_mak
diff --git a/meson.build b/meson.build
index 879628ab68..993a591983 100644
--- a/meson.build
+++ b/meson.build
@@ -3422,7 +3422,6 @@ if spice_protocol.found()
summary_info += {' spice server support': spice}
endif
summary_info += {'rbd support': rbd}
-summary_info += {'xfsctl support': config_host.has_key('CONFIG_XFS')}
summary_info += {'smartcard support': cacard}
summary_info += {'U2F support': u2f}
summary_info += {'libusb': libusb}
--
2.33.1
- [PULL 00/15] Build system and KVM changes for 2021-12-23, Paolo Bonzini, 2021/12/23
- [PULL 01/15] docker: include bison in debian-tricore-cross, Paolo Bonzini, 2021/12/23
- [PULL 02/15] meson: reuse common_user_inc when building files specific to user-mode emulators, Paolo Bonzini, 2021/12/23
- [PULL 03/15] user: move common-user includes to a subdirectory of {bsd, linux}-user/, Paolo Bonzini, 2021/12/23
- [PULL 07/15] configure: do not set bsd_user/linux_user early, Paolo Bonzini, 2021/12/23
- [PULL 06/15] configure: simplify creation of plugin symbol list, Paolo Bonzini, 2021/12/23
- [PULL 10/15] configure: move non-command-line variables away from command-line parsing section, Paolo Bonzini, 2021/12/23
- [PULL 11/15] meson: build contrib/ executables after generated headers, Paolo Bonzini, 2021/12/23
- [PULL 04/15] meson: cleanup common-user/ build, Paolo Bonzini, 2021/12/23
- [PULL 05/15] block/file-posix: Simplify the XFS_IOC_DIOINFO handling,
Paolo Bonzini <=
- [PULL 14/15] KVM: use KVM_{GET|SET}_SREGS2 when supported., Paolo Bonzini, 2021/12/23
- [PULL 09/15] configure: parse --enable/--disable-strip automatically, flip default, Paolo Bonzini, 2021/12/23
- [PULL 08/15] configure, makefile: remove traces of really old files, Paolo Bonzini, 2021/12/23
- [PULL 15/15] KVM: x86: ignore interrupt_bitmap field of KVM_GET/SET_SREGS, Paolo Bonzini, 2021/12/23
- [PULL 13/15] meson: add comments in the target-specific flags section, Paolo Bonzini, 2021/12/23
- [PULL 12/15] configure, meson: move config-poison.h to meson, Paolo Bonzini, 2021/12/23