102 lines
3.7 KiB
Diff
102 lines
3.7 KiB
Diff
From 1788135e55dd9e68e54ba32582702df09819a8fe Mon Sep 17 00:00:00 2001
|
|
From: Stefano Garzarella <sgarzare@redhat.com>
|
|
Date: Tue, 16 Jul 2019 08:13:10 +0100
|
|
Subject: [PATCH 16/39] block/gluster: limit the transfer size to 512 MiB
|
|
|
|
RH-Author: Stefano Garzarella <sgarzare@redhat.com>
|
|
Message-id: <20190716081310.29528-2-sgarzare@redhat.com>
|
|
Patchwork-id: 89533
|
|
O-Subject: [RHEL-8.1.0 qemu-kvm PATCH 1/1] block/gluster: limit the transfer size to 512 MiB
|
|
Bugzilla: 1728657
|
|
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
|
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
|
|
Several versions of GlusterFS (3.12? -> 6.0.1) fail when the
|
|
transfer size is greater or equal to 1024 MiB, so we are
|
|
limiting the transfer size to 512 MiB to avoid this rare issue.
|
|
|
|
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1691320
|
|
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
Reviewed-by: Niels de Vos <ndevos@redhat.com>
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
(cherry picked from commit de23e72bb7515888fdea2a58c58a2e02370123bd)
|
|
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
block/gluster.c | 16 ++++++++++++++++
|
|
1 file changed, 16 insertions(+)
|
|
|
|
diff --git a/block/gluster.c b/block/gluster.c
|
|
index a6ac2b1..9b29d96 100644
|
|
--- a/block/gluster.c
|
|
+++ b/block/gluster.c
|
|
@@ -9,6 +9,7 @@
|
|
*/
|
|
|
|
#include "qemu/osdep.h"
|
|
+#include "qemu/units.h"
|
|
#include <glusterfs/api/glfs.h>
|
|
#include "block/block_int.h"
|
|
#include "block/qdict.h"
|
|
@@ -41,6 +42,12 @@
|
|
#define GLUSTER_DEBUG_MAX 9
|
|
#define GLUSTER_OPT_LOGFILE "logfile"
|
|
#define GLUSTER_LOGFILE_DEFAULT "-" /* handled in libgfapi as /dev/stderr */
|
|
+/*
|
|
+ * Several versions of GlusterFS (3.12? -> 6.0.1) fail when the transfer size
|
|
+ * is greater or equal to 1024 MiB, so we are limiting the transfer size to 512
|
|
+ * MiB to avoid this rare issue.
|
|
+ */
|
|
+#define GLUSTER_MAX_TRANSFER (512 * MiB)
|
|
|
|
#define GERR_INDEX_HINT "hint: check in 'server' array index '%d'\n"
|
|
|
|
@@ -887,6 +894,11 @@ out:
|
|
return ret;
|
|
}
|
|
|
|
+static void qemu_gluster_refresh_limits(BlockDriverState *bs, Error **errp)
|
|
+{
|
|
+ bs->bl.max_transfer = GLUSTER_MAX_TRANSFER;
|
|
+}
|
|
+
|
|
static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
|
|
BlockReopenQueue *queue, Error **errp)
|
|
{
|
|
@@ -1527,6 +1539,7 @@ static BlockDriver bdrv_gluster = {
|
|
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
|
|
#endif
|
|
.bdrv_co_block_status = qemu_gluster_co_block_status,
|
|
+ .bdrv_refresh_limits = qemu_gluster_refresh_limits,
|
|
.create_opts = &qemu_gluster_create_opts,
|
|
};
|
|
|
|
@@ -1556,6 +1569,7 @@ static BlockDriver bdrv_gluster_tcp = {
|
|
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
|
|
#endif
|
|
.bdrv_co_block_status = qemu_gluster_co_block_status,
|
|
+ .bdrv_refresh_limits = qemu_gluster_refresh_limits,
|
|
.create_opts = &qemu_gluster_create_opts,
|
|
};
|
|
|
|
@@ -1585,6 +1599,7 @@ static BlockDriver bdrv_gluster_unix = {
|
|
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
|
|
#endif
|
|
.bdrv_co_block_status = qemu_gluster_co_block_status,
|
|
+ .bdrv_refresh_limits = qemu_gluster_refresh_limits,
|
|
.create_opts = &qemu_gluster_create_opts,
|
|
};
|
|
|
|
@@ -1620,6 +1635,7 @@ static BlockDriver bdrv_gluster_rdma = {
|
|
.bdrv_co_pwrite_zeroes = qemu_gluster_co_pwrite_zeroes,
|
|
#endif
|
|
.bdrv_co_block_status = qemu_gluster_co_block_status,
|
|
+ .bdrv_refresh_limits = qemu_gluster_refresh_limits,
|
|
.create_opts = &qemu_gluster_create_opts,
|
|
};
|
|
|
|
--
|
|
1.8.3.1
|
|
|