]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
block: Make REQ_OP_ZONE_FINISH a write operation
authorDamien Le Moal <dlemoal@kernel.org>
Sun, 17 Aug 2025 01:49:28 +0000 (21:49 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:22:54 +0000 (16:22 +0200)
[ Upstream commit 3f66ccbaaef3a0c5bd844eab04e3207b4061c546 ]

REQ_OP_ZONE_FINISH is defined as "12", which makes
op_is_write(REQ_OP_ZONE_FINISH) return false, despite the fact that a
zone finish operation is an operation that modifies a zone (transition
it to full) and so should be considered as a write operation (albeit
one that does not transfer any data to the device).

Fix this by redefining REQ_OP_ZONE_FINISH to be an odd number (13), and
redefine REQ_OP_ZONE_RESET and REQ_OP_ZONE_RESET_ALL using sequential
odd numbers from that new value.

Fixes: 6c1b1da58f8c ("block: add zone open, close and finish operations")
Cc: stable@vger.kernel.org
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20250625093327.548866-2-dlemoal@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
[ Extra renames ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/blk_types.h

index d9b69bbde5cc546645cd53a33c71fc396ef45cb4..4c7b7c5c821698b97b9adcef7a70f1fe069ce1ee 100644 (file)
@@ -353,13 +353,13 @@ enum req_opf {
        /* Close a zone */
        REQ_OP_ZONE_CLOSE       = 11,
        /* Transition a zone to full */
-       REQ_OP_ZONE_FINISH      = 12,
+       REQ_OP_ZONE_FINISH      = 13,
        /* write data at the current zone write pointer */
-       REQ_OP_ZONE_APPEND      = 13,
+       REQ_OP_ZONE_APPEND      = 15,
        /* reset a zone write pointer */
-       REQ_OP_ZONE_RESET       = 15,
+       REQ_OP_ZONE_RESET       = 17,
        /* reset all the zone present on the device */
-       REQ_OP_ZONE_RESET_ALL   = 17,
+       REQ_OP_ZONE_RESET_ALL   = 19,
 
        /* SCSI passthrough using struct scsi_request */
        REQ_OP_SCSI_IN          = 32,