Pablo Greco e6a3ae
From a30344defca0e948400587280f67d4e6bcc5834f Mon Sep 17 00:00:00 2001
Pablo Greco e6a3ae
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@redhat.com>
Pablo Greco e6a3ae
Date: Wed, 19 Jun 2019 17:15:07 +0200
Pablo Greco e6a3ae
Subject: [PATCH 1/2] gluster: Handle changed glfs_ftruncate signature
Pablo Greco e6a3ae
MIME-Version: 1.0
Pablo Greco e6a3ae
Content-Type: text/plain; charset=UTF-8
Pablo Greco e6a3ae
Content-Transfer-Encoding: 8bit
Pablo Greco e6a3ae
Pablo Greco e6a3ae
RH-Author: Philippe Mathieu-Daudé <philmd@redhat.com>
Pablo Greco e6a3ae
Message-id: <20190619171508.31981-2-philmd@redhat.com>
Pablo Greco e6a3ae
Patchwork-id: 88737
Pablo Greco e6a3ae
O-Subject: [RHEL-8.1.0 qemu-kvm PATCH 1/2] gluster: Handle changed glfs_ftruncate signature
Pablo Greco e6a3ae
Bugzilla: 1721983
Pablo Greco e6a3ae
RH-Acked-by: Max Reitz <mreitz@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Niels de Vos <ndevos@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
From: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
New versions of Glusters libgfapi.so have an updated glfs_ftruncate()
Pablo Greco e6a3ae
function that returns additional 'struct stat' structures to enable
Pablo Greco e6a3ae
advanced caching of attributes. This is useful for file servers, not so
Pablo Greco e6a3ae
much for QEMU. Nevertheless, the API has changed and needs to be
Pablo Greco e6a3ae
adopted.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Pablo Greco e6a3ae
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Pablo Greco e6a3ae
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Pablo Greco e6a3ae
(cherry picked from commit e014dbe74e0484188164c61ff6843f8a04a8cb9d)
Pablo Greco e6a3ae
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Pablo Greco e6a3ae
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
Pablo Greco e6a3ae
---
Pablo Greco e6a3ae
 block/gluster.c |  4 ++++
Pablo Greco e6a3ae
 configure       | 18 ++++++++++++++++++
Pablo Greco e6a3ae
 2 files changed, 22 insertions(+)
Pablo Greco e6a3ae
Pablo Greco e6a3ae
diff --git a/block/gluster.c b/block/gluster.c
Pablo Greco e6a3ae
index 8c13002..e3ffa61 100644
Pablo Greco e6a3ae
--- a/block/gluster.c
Pablo Greco e6a3ae
+++ b/block/gluster.c
Pablo Greco e6a3ae
@@ -20,6 +20,10 @@
Pablo Greco e6a3ae
 #include "qemu/option.h"
Pablo Greco e6a3ae
 #include "qemu/cutils.h"
Pablo Greco e6a3ae
 
Pablo Greco e6a3ae
+#ifdef CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT
Pablo Greco e6a3ae
+# define glfs_ftruncate(fd, offset) glfs_ftruncate(fd, offset, NULL, NULL)
Pablo Greco e6a3ae
+#endif
Pablo Greco e6a3ae
+
Pablo Greco e6a3ae
 #define GLUSTER_OPT_FILENAME        "filename"
Pablo Greco e6a3ae
 #define GLUSTER_OPT_VOLUME          "volume"
Pablo Greco e6a3ae
 #define GLUSTER_OPT_PATH            "path"
Pablo Greco e6a3ae
diff --git a/configure b/configure
Pablo Greco e6a3ae
index 6d61b14..b3d337b 100755
Pablo Greco e6a3ae
--- a/configure
Pablo Greco e6a3ae
+++ b/configure
Pablo Greco e6a3ae
@@ -429,6 +429,7 @@ glusterfs_xlator_opt="no"
Pablo Greco e6a3ae
 glusterfs_discard="no"
Pablo Greco e6a3ae
 glusterfs_fallocate="no"
Pablo Greco e6a3ae
 glusterfs_zerofill="no"
Pablo Greco e6a3ae
+glusterfs_ftruncate_has_stat="no"
Pablo Greco e6a3ae
 gtk=""
Pablo Greco e6a3ae
 gtkabi=""
Pablo Greco e6a3ae
 gtk_gl="no"
Pablo Greco e6a3ae
@@ -3919,6 +3920,19 @@ if test "$glusterfs" != "no" ; then
Pablo Greco e6a3ae
       glusterfs_fallocate="yes"
Pablo Greco e6a3ae
       glusterfs_zerofill="yes"
Pablo Greco e6a3ae
     fi
Pablo Greco e6a3ae
+    cat > $TMPC << EOF
Pablo Greco e6a3ae
+#include <glusterfs/api/glfs.h>
Pablo Greco e6a3ae
+
Pablo Greco e6a3ae
+int
Pablo Greco e6a3ae
+main(void)
Pablo Greco e6a3ae
+{
Pablo Greco e6a3ae
+	/* new glfs_ftruncate() passes two additional args */
Pablo Greco e6a3ae
+	return glfs_ftruncate(NULL, 0, NULL, NULL);
Pablo Greco e6a3ae
+}
Pablo Greco e6a3ae
+EOF
Pablo Greco e6a3ae
+    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
Pablo Greco e6a3ae
+      glusterfs_ftruncate_has_stat="yes"
Pablo Greco e6a3ae
+    fi
Pablo Greco e6a3ae
   else
Pablo Greco e6a3ae
     if test "$glusterfs" = "yes" ; then
Pablo Greco e6a3ae
       feature_not_found "GlusterFS backend support" \
Pablo Greco e6a3ae
@@ -6622,6 +6636,10 @@ if test "$glusterfs_zerofill" = "yes" ; then
Pablo Greco e6a3ae
   echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
Pablo Greco e6a3ae
 fi
Pablo Greco e6a3ae
 
Pablo Greco e6a3ae
+if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
Pablo Greco e6a3ae
+  echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
Pablo Greco e6a3ae
+fi
Pablo Greco e6a3ae
+
Pablo Greco e6a3ae
 if test "$libssh2" = "yes" ; then
Pablo Greco e6a3ae
   echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Pablo Greco e6a3ae
   echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
Pablo Greco e6a3ae
-- 
Pablo Greco e6a3ae
1.8.3.1
Pablo Greco e6a3ae