Files
linux/include/linux
Christoph Hellwig 6cc77e9cb0 block: introduce zoned block devices zone write locking
Components relying only on the request_queue structure for accessing
block devices (e.g. I/O schedulers) have a limited knowledged of the
device characteristics. In particular, the device capacity cannot be
easily discovered, which for a zoned block device also result in the
inability to easily know the number of zones of the device (the zone
size is indicated by the chunk_sectors field of the queue limits).

Introduce the nr_zones field to the request_queue structure to simplify
access to this information. Also, add the bitmap seq_zone_bitmap which
indicates which zones of the device are sequential zones (write
preferred or write required) and the bitmap seq_zones_wlock which
indicates if a zone is write locked, that is, if a write request
targeting a zone was dispatched to the device. These fields are
initialized by the low level block device driver (sd.c for ZBC/ZAC
disks). They are not initialized by stacking drivers (device mappers)
handling zoned block devices (e.g. dm-linear).

Using this, I/O schedulers can introduce zone write locking to control
request dispatching to a zoned block device and avoid write request
reordering by limiting to at most a single write request per zone
outside of the scheduler at any time.

Based on previous patches from Damien Le Moal.

Signed-off-by: Christoph Hellwig <hch@lst.de>
[Damien]
* Fixed comments and identation in blkdev.h
* Changed helper functions
* Fixed this commit message
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-01-05 09:22:17 -07:00
..
2017-11-13 01:34:49 +01:00
2017-06-08 18:52:36 -07:00
2017-11-23 10:56:35 +01:00
2017-11-22 21:40:54 +01:00
2017-07-03 16:56:28 -06:00
2017-11-15 18:21:04 -08:00
2017-12-12 13:22:10 +01:00
2017-08-30 14:40:40 +02:00
2017-09-04 00:06:02 +02:00
2017-08-24 13:23:03 -07:00
2016-10-28 08:48:16 -06:00
2017-07-17 13:42:48 +02:00
2017-11-05 16:42:02 -08:00
2017-08-07 17:22:14 +02:00
2017-11-13 01:41:20 +01:00
2017-11-15 18:21:06 -08:00
2017-03-21 10:15:47 +02:00
2017-05-18 10:07:40 -04:00
2017-06-21 14:37:12 -04:00
2017-11-17 16:10:04 -08:00
2017-11-15 18:21:05 -08:00
2017-11-15 18:21:01 -08:00
2017-11-17 16:10:04 -08:00
2017-10-12 15:41:05 +02:00
2017-11-15 18:21:01 -08:00
2017-12-01 13:09:40 -08:00
2017-10-19 10:08:56 +02:00
2017-10-07 10:45:02 -06:00
2017-02-24 17:46:57 -08:00
2017-08-28 20:51:22 +02:00
2017-11-15 18:21:04 -08:00
2017-11-29 18:40:42 -08:00
2017-11-15 18:21:04 -08:00
2017-11-17 16:10:00 -08:00
2017-07-25 18:05:25 +02:00
2017-10-20 09:37:32 +02:00
2017-12-14 16:00:49 -08:00
2017-11-15 18:21:03 -08:00
2017-11-15 18:21:06 -08:00
2017-11-09 10:23:28 +01:00
2017-08-06 20:55:29 -07:00
2017-11-17 16:10:04 -08:00
2017-11-17 16:10:04 -08:00
2017-11-13 01:33:48 +01:00
2017-12-11 10:52:23 -05:00
2017-11-15 18:21:04 -08:00
2017-11-07 12:22:21 +01:00
2017-07-06 16:24:30 -07:00
2017-08-16 16:28:47 -07:00
2017-11-15 18:21:01 -08:00
2017-11-15 18:21:06 -08:00
2017-11-15 18:21:01 -08:00
2017-10-11 22:36:54 -04:00
2017-07-24 17:50:37 +02:00
2017-10-04 10:29:22 +02:00
2017-08-15 09:02:07 -07:00
2017-08-15 09:02:08 -07:00