]> asedeno.scripts.mit.edu Git - linux.git/commit
deadline-iosched: Introduce zone locking support
authorDamien Le Moal <damien.lemoal@wdc.com>
Thu, 21 Dec 2017 06:43:42 +0000 (15:43 +0900)
committerJens Axboe <axboe@kernel.dk>
Fri, 5 Jan 2018 16:22:17 +0000 (09:22 -0700)
commit8dc8146f9c92c17caa3c50f979d351c87ed372f8
tree90bbdb9008d4d2e5de9e6ad1f19f72dc9e923f78
parentc117bac70133dbff9ed7fcbd91ef82b4ee518797
deadline-iosched: Introduce zone locking support

Introduce zone write locking to avoid write request reordering with
zoned block devices. This is achieved using a finer selection of the
next request to dispatch:
1) Any non-write request is always allowed to proceed.
2) Any write to a conventional zone is always allowed to proceed.
3) For a write to a sequential zone, the zone lock is first checked.
   a) If the zone is not locked, the write is allowed to proceed after
      its target zone is locked.
   b) If the zone is locked, the write request is skipped and the next
      request in the dispatch queue tested (back to step 1).

For a write request that has locked its target zone, the zone is
unlocked either when the request completes and the method
deadline_request_completed() is called, or when the request is requeued
using the method deadline_add_request().

Requests targeting a locked zone are always left in the scheduler queue
to preserve the initial write order. If no write request can be
dispatched, allow reads to be dispatched even if the write batch is not
done.

If the device used is not a zoned block device, or if zoned block device
support is disabled, this patch does not modify deadline behavior.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/deadline-iosched.c