Blame SOURCES/kvm-gluster-Handle-changed-glfs_ftruncate-signature.patch

b7f00f
From c8c95fc7f40ace3e7125bcd2cbec1a7c39627503 Mon Sep 17 00:00:00 2001
b7f00f
From: Miroslav Rezanina <mrezanin@redhat.com>
b7f00f
Date: Tue, 14 Apr 2020 07:08:25 +0200
b7f00f
Subject: [PATCH 1/2] gluster: Handle changed glfs_ftruncate signature
b7f00f
b7f00f
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
b7f00f
Message-id: <251e640171ad2596aa802518bbb936478c34c39c.1586442545.git.mrezanin@redhat.com>
b7f00f
Patchwork-id: 94621
b7f00f
O-Subject: [RHEL-7.8 qemu-kvm PATCH 1/2] gluster: Handle changed glfs_ftruncate signature
b7f00f
Bugzilla: 1822235
b7f00f
RH-Acked-by: John Snow <jsnow@redhat.com>
b7f00f
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
b7f00f
RH-Acked-by: Max Reitz <mreitz@redhat.com>
b7f00f
b7f00f
From: Miroslav Rezanina <mrezanin@redhat.com>
b7f00f
b7f00f
From: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
b7f00f
b7f00f
New versions of Glusters libgfapi.so have an updated glfs_ftruncate()
b7f00f
function that returns additional 'struct stat' structures to enable
b7f00f
advanced caching of attributes. This is useful for file servers, not so
b7f00f
much for QEMU. Nevertheless, the API has changed and needs to be
b7f00f
adopted.
b7f00f
b7f00f
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
b7f00f
Signed-off-by: Niels de Vos <ndevos@redhat.com>
b7f00f
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
b7f00f
(cherry picked from commit e014dbe74e0484188164c61ff6843f8a04a8cb9d)
b7f00f
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
b7f00f
b7f00f
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
b7f00f
---
b7f00f
 block/gluster.c |  5 +++++
b7f00f
 configure       | 18 ++++++++++++++++++
b7f00f
 2 files changed, 23 insertions(+)
b7f00f
b7f00f
diff --git a/block/gluster.c b/block/gluster.c
b7f00f
index 86e136d..d6160af 100644
b7f00f
--- a/block/gluster.c
b7f00f
+++ b/block/gluster.c
b7f00f
@@ -20,6 +20,11 @@
b7f00f
 #include "qemu/sockets.h"
b7f00f
 #include "qemu/uri.h"
b7f00f
 
b7f00f
+#ifdef CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT
b7f00f
+# define glfs_ftruncate(fd, offset) glfs_ftruncate(fd, offset, NULL, NULL)
b7f00f
+#endif
b7f00f
+
b7f00f
+
b7f00f
 typedef struct GlusterAIOCB {
b7f00f
     BlockDriverAIOCB common;
b7f00f
     int64_t size;
b7f00f
diff --git a/configure b/configure
b7f00f
index 5877e82..70fd06f 100755
b7f00f
--- a/configure
b7f00f
+++ b/configure
b7f00f
@@ -243,6 +243,7 @@ seccomp=""
b7f00f
 glusterfs=""
b7f00f
 glusterfs_discard="no"
b7f00f
 virtio_blk_data_plane=""
b7f00f
+glusterfs_ftruncate_has_stat="no"
b7f00f
 gtk=""
b7f00f
 gtkabi="2.0"
b7f00f
 tpm="no"
b7f00f
@@ -2748,6 +2749,19 @@ EOF
b7f00f
     if $pkg_config --atleast-version=5 glusterfs-api >/dev/null 2>&1; then
b7f00f
       glusterfs_discard="yes"
b7f00f
     fi
b7f00f
+    cat > $TMPC << EOF
b7f00f
+#include <glusterfs/api/glfs.h>
b7f00f
+
b7f00f
+int
b7f00f
+main(void)
b7f00f
+{
b7f00f
+	/* new glfs_ftruncate() passes two additional args */
b7f00f
+	return glfs_ftruncate(NULL, 0, NULL, NULL);
b7f00f
+}
b7f00f
+EOF
b7f00f
+    if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then
b7f00f
+      glusterfs_ftruncate_has_stat="yes"
b7f00f
+    fi
b7f00f
   else
b7f00f
     if test "$glusterfs" = "yes" ; then
b7f00f
       feature_not_found "GlusterFS backend support"
b7f00f
@@ -4178,6 +4192,10 @@ if test "$live_block_ops" = "yes" ; then
b7f00f
   echo "CONFIG_LIVE_BLOCK_OPS=y" >> $config_host_mak
b7f00f
 fi
b7f00f
 
b7f00f
+if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
b7f00f
+  echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
b7f00f
+fi
b7f00f
+
b7f00f
 if test "$live_block_migration" = "yes" ; then
b7f00f
   echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
b7f00f
 fi
b7f00f
-- 
b7f00f
1.8.3.1
b7f00f