]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
block: make REQ_OP_ZONE_OPEN a write operation
authorDamien Le Moal <dlemoal@kernel.org>
Mon, 27 Oct 2025 00:27:33 +0000 (09:27 +0900)
committerJens Axboe <axboe@kernel.dk>
Tue, 28 Oct 2025 13:52:55 +0000 (07:52 -0600)
A REQ_OP_OPEN_ZONE request changes the condition of a sequential zone of
a zoned block device to the explicitly open condition
(BLK_ZONE_COND_EXP_OPEN). As such, it should be considered a write
operation.

Change this operation code to be an odd number to reflect this. The
following operation numbers are changed to keep the numbering compact.

No problems were reported without this change as this operation has no
data. However, this unifies the zone operation to reflect that they
modify the device state and also allows strengthening checks in the
block layer, e.g. checking if this operation is not issued against a
read-only device.

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: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/blk_types.h

index d8ba743a89b7c31d32f016bdf545153a4597fc37..44c30183ecc34440ee434b0dd5796afcbe683bb5 100644 (file)
@@ -341,15 +341,15 @@ enum req_op {
        /* write the zero filled sector many times */
        REQ_OP_WRITE_ZEROES     = (__force blk_opf_t)9,
        /* Open a zone */
-       REQ_OP_ZONE_OPEN        = (__force blk_opf_t)10,
+       REQ_OP_ZONE_OPEN        = (__force blk_opf_t)11,
        /* Close a zone */
-       REQ_OP_ZONE_CLOSE       = (__force blk_opf_t)11,
+       REQ_OP_ZONE_CLOSE       = (__force blk_opf_t)13,
        /* Transition a zone to full */
-       REQ_OP_ZONE_FINISH      = (__force blk_opf_t)13,
+       REQ_OP_ZONE_FINISH      = (__force blk_opf_t)15,
        /* reset a zone write pointer */
-       REQ_OP_ZONE_RESET       = (__force blk_opf_t)15,
+       REQ_OP_ZONE_RESET       = (__force blk_opf_t)17,
        /* reset all the zone present on the device */
-       REQ_OP_ZONE_RESET_ALL   = (__force blk_opf_t)17,
+       REQ_OP_ZONE_RESET_ALL   = (__force blk_opf_t)19,
 
        /* Driver private requests */
        REQ_OP_DRV_IN           = (__force blk_opf_t)34,