[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 09/11] block: make BlockLimits::max_pdiscard 64bit
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v5 09/11] block: make BlockLimits::max_pdiscard 64bit |
Date: |
Wed, 5 May 2021 10:49:59 +0300 |
We are going to support 64 bit discard requests. Now update the
limit variable. It's absolutely safe. The variable is set in some
drivers, and used in bdrv_co_pdiscard().
Update also max_pdiscard variable in bdrv_co_pdiscard(), so that
bdrv_co_pdiscard() is now prepared to 64bit requests. The remaining
logic including num, offset and bytes variables is already
supporting 64bit requests.
So the only thing that prevents 64 bit requests is limiting
max_pdiscard variable to INT_MAX in bdrv_co_pdiscard().
We'll drop this limitation after updating all block drivers.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
include/block/block_int.h | 11 ++++++-----
block/io.c | 3 ++-
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 5734f44e59..cb36ba93a6 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -664,11 +664,12 @@ typedef struct BlockLimits {
* otherwise. */
uint32_t request_alignment;
- /* Maximum number of bytes that can be discarded at once (since it
- * is signed, it must be < 2G, if set). Must be multiple of
- * pdiscard_alignment, but need not be power of 2. May be 0 if no
- * inherent 32-bit limit */
- int32_t max_pdiscard;
+ /*
+ * Maximum number of bytes that can be discarded at once. Must be multiple
+ * of pdiscard_alignment, but need not be power of 2. May be 0 if no
+ * inherent 64-bit limit.
+ */
+ int64_t max_pdiscard;
/* Optimal alignment for discard requests in bytes. A power of 2
* is best but not mandatory. Must be a multiple of
diff --git a/block/io.c b/block/io.c
index 195b68b19e..a7edb1ef54 100644
--- a/block/io.c
+++ b/block/io.c
@@ -2991,7 +2991,8 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child,
int64_t offset,
int64_t bytes)
{
BdrvTrackedRequest req;
- int max_pdiscard, ret;
+ int ret;
+ int64_t max_pdiscard;
int head, tail, align;
BlockDriverState *bs = child->bs;
--
2.29.2
- [PATCH v5 01/11] block/io: bring request check to bdrv_co_(read, write)v_vmstate, (continued)
- [PATCH v5 01/11] block/io: bring request check to bdrv_co_(read, write)v_vmstate, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 02/11] qcow2: check request on vmstate save/load path, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 03/11] block: use int64_t instead of uint64_t in driver read handlers, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 05/11] block: use int64_t instead of uint64_t in copy_range driver handlers, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 04/11] block: use int64_t instead of uint64_t in driver write handlers, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 10/11] block: use int64_t instead of int in driver discard handlers, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 06/11] block: make BlockLimits::max_pwrite_zeroes 64bit, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 11/11] block/io: allow 64bit discard requests, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 07/11] block: use int64_t instead of int in driver write_zeroes handlers, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 08/11] block/io: allow 64bit write-zeroes requests, Vladimir Sementsov-Ogievskiy, 2021/05/05
- [PATCH v5 09/11] block: make BlockLimits::max_pdiscard 64bit,
Vladimir Sementsov-Ogievskiy <=
- Re: [PATCH v5 00/11] 64bit block-layer: part II, no-reply, 2021/05/05