14ed554660
coming in via qemu-stable (except for the vdmk fix, which was tagged for-7.0 on the qemu-devel list, but didn't make it into the release). Also took the chance to switch the gluster fix to the version that made it into upstream. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com> Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
48 lines
1.9 KiB
Diff
48 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Fabian Ebner <f.ebner@proxmox.com>
|
|
Date: Fri, 20 May 2022 09:59:22 +0200
|
|
Subject: [PATCH] block/gluster: correctly set max_pdiscard
|
|
|
|
On 64-bit platforms, assigning SIZE_MAX to the int64_t max_pdiscard
|
|
results in a negative value, and the following assertion would trigger
|
|
down the line (it's not the same max_pdiscard, but computed from the
|
|
other one):
|
|
qemu-system-x86_64: ../block/io.c:3166: bdrv_co_pdiscard: Assertion
|
|
`max_pdiscard >= bs->bl.request_alignment' failed.
|
|
|
|
On 32-bit platforms, it's fine to keep using SIZE_MAX.
|
|
|
|
The assertion in qemu_gluster_co_pdiscard() is checking that the value
|
|
of 'bytes' can safely be passed to glfs_discard_async(), which takes a
|
|
size_t for the argument in question, so it is kept as is. And since
|
|
max_pdiscard is still <= SIZE_MAX, relying on max_pdiscard is still
|
|
fine.
|
|
|
|
Fixes: 0c8022876f ("block: use int64_t instead of int in driver discard handlers")
|
|
Cc: qemu-stable@nongnu.org
|
|
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
|
|
Message-Id: <20220520075922.43972-1-f.ebner@proxmox.com>
|
|
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
(cherry-picked from commit 9b38fc56c054c7de65fa3bf7cdd82b32654f6b7d)
|
|
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
|
|
---
|
|
block/gluster.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/block/gluster.c b/block/gluster.c
|
|
index 80b75cb96c..1079b6186b 100644
|
|
--- a/block/gluster.c
|
|
+++ b/block/gluster.c
|
|
@@ -901,7 +901,7 @@ out:
|
|
static void qemu_gluster_refresh_limits(BlockDriverState *bs, Error **errp)
|
|
{
|
|
bs->bl.max_transfer = GLUSTER_MAX_TRANSFER;
|
|
- bs->bl.max_pdiscard = SIZE_MAX;
|
|
+ bs->bl.max_pdiscard = MIN(SIZE_MAX, INT64_MAX);
|
|
}
|
|
|
|
static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
|