On 04/04/2016 03:00 AM, Hannes Reinecke wrote:
+struct blk_zone *blk_lookup_zone(struct request_queue *q, sector_t lba)
A similar comment applies to this function: does this function expect a sector_t or an LBA as its second argument?
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 7e5d7e0..f58bcdc 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -249,6 +249,50 @@ struct blk_queue_tag { #define BLK_SCSI_MAX_CMDS (256) #define BLK_SCSI_CMD_PER_LONG (BLK_SCSI_MAX_CMDS / (sizeof(long) * 8)) +#ifdef CONFIG_BLK_DEV_ZONED +enum blk_zone_type { + BLK_ZONE_TYPE_UNKNOWN, + BLK_ZONE_TYPE_CONVENTIONAL, + BLK_ZONE_TYPE_SEQWRITE_REQ, + BLK_ZONE_TYPE_SEQWRITE_PREF, + BLK_ZONE_TYPE_RESERVED, +}; + +enum blk_zone_state { + BLK_ZONE_UNKNOWN, + BLK_ZONE_NO_WP, + BLK_ZONE_OPEN, + BLK_ZONE_READONLY, + BLK_ZONE_OFFLINE, + BLK_ZONE_BUSY, +}; + +struct blk_zone { + struct rb_node node; + spinlock_t lock; + sector_t start; + size_t len; + sector_t wp; + enum blk_zone_type type; + enum blk_zone_state state; + void *private_data; +}; + +#define blk_zone_is_smr(z) ((z)->type == BLK_ZONE_TYPE_SEQWRITE_REQ || \ + (z)->type == BLK_ZONE_TYPE_SEQWRITE_PREF) + +#define blk_zone_is_cmr(z) ((z)->type == BLK_ZONE_TYPE_CONVENTIONAL) +#define blk_zone_is_full(z) ((z)->wp == (z)->start + (z)->len) +#define blk_zone_is_empty(z) ((z)->wp == (z)->start) + +extern struct blk_zone *blk_lookup_zone(struct request_queue *, sector_t); +extern struct blk_zone *blk_insert_zone(struct request_queue *, + struct blk_zone *); +extern void blk_drop_zones(struct request_queue *); +#else +static inline void blk_drop_zones(struct request_queue *q) { }; +#endif
Have you considered to create a new header file for these definitions instead of adding these to <linux/blkdev.h>?
Bart. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html