null_blk: Fix REQ_OP_ZONE_CLOSE handling
authorDamien Le Moal <damien.lemoal@wdc.com>
Thu, 26 Dec 2019 06:54:25 +0000 (15:54 +0900)
committerJens Axboe <axboe@kernel.dk>
Mon, 30 Dec 2019 15:51:46 +0000 (08:51 -0700)
In order to match ZBC defined behavior, closing an empty zone must
result in the "empty" zone condition instead of the "closed" condition.

Fixes: da644b2cc1a4 ("null_blk: add zone open, close, and finish support")
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/null_blk_zoned.c

index d4d88b5..5cf49d9 100644 (file)
@@ -186,7 +186,10 @@ static blk_status_t null_zone_mgmt(struct nullb_cmd *cmd, enum req_opf op,
                if (zone->cond == BLK_ZONE_COND_FULL)
                        return BLK_STS_IOERR;
 
-               zone->cond = BLK_ZONE_COND_CLOSED;
+               if (zone->wp == zone->start)
+                       zone->cond = BLK_ZONE_COND_EMPTY;
+               else
+                       zone->cond = BLK_ZONE_COND_CLOSED;
                break;
        case REQ_OP_ZONE_FINISH:
                if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL)