BACKPORT: block: Make REQ_OP_ZONE_FINISH a write operation
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: 6c1b1da58f ("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>
Bug: 417517944
Change-Id: I1080fd446b57689158e6083f9deffcf70695873e
(cherry picked from commit 24cb7af081023bbb7a25ae514e6e2b398d4ab25c git://git.kernel.dk/linux-block for-next)
[ bvanassche: restored REQ_OP_* numerical values and modified
op_is_write() instead in order to preserve the Android kernel ABI. ]
Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
committed by
Bart Van Assche
parent
1895d73589
commit
5aca882326
@@ -443,7 +443,7 @@ static inline enum req_op bio_op(const struct bio *bio)
|
||||
|
||||
static inline bool op_is_write(blk_opf_t op)
|
||||
{
|
||||
return !!(op & (__force blk_opf_t)1);
|
||||
return (op & (__force blk_opf_t)1) || op == REQ_OP_ZONE_FINISH;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user