From bcf36768ea688e926b04639c88c77d8caea3b736 Mon Sep 17 00:00:00 2001 From: Jan Höppner Date: Thu, 27 Jun 2019 14:33:17 +0200 Subject: s390/dasd: Add dasd_sleep_on_queue_interruptible() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is dasd_sleep_on() and dasd_sleep_on_interruptible() to start CCW requests uninterruptible and interruptible. However, there is only dasd_sleep_on_queue() to start requests from CCW queues uninterruptible. Add dasd_sleep_on_queue_interruptible() to provide a way to start requests from CCW queues interruptible. _dasd_sleep_on_queue() already provides this functionality. Signed-off-by: Jan Höppner Reviewed-by: Stefan Haberland Signed-off-by: Vasily Gorbik --- drivers/s390/block/dasd.c | 9 +++++++++ drivers/s390/block/dasd_int.h | 1 + 2 files changed, 10 insertions(+) (limited to 'drivers/s390') diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 1c7da4342461..065f7b0ff0dc 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -2522,6 +2522,15 @@ int dasd_sleep_on_queue(struct list_head *ccw_queue) } EXPORT_SYMBOL(dasd_sleep_on_queue); +/* + * Start requests from a ccw_queue and wait interruptible for their completion. + */ +int dasd_sleep_on_queue_interruptible(struct list_head *ccw_queue) +{ + return _dasd_sleep_on_queue(ccw_queue, 1); +} +EXPORT_SYMBOL(dasd_sleep_on_queue_interruptible); + /* * Queue a request to the tail of the device ccw_queue and wait * interruptible for it's completion. diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h index 3f7c3b9dcae6..9a8ef372535b 100644 --- a/drivers/s390/block/dasd_int.h +++ b/drivers/s390/block/dasd_int.h @@ -748,6 +748,7 @@ void dasd_schedule_block_bh(struct dasd_block *); int dasd_sleep_on(struct dasd_ccw_req *); int dasd_sleep_on_queue(struct list_head *); int dasd_sleep_on_immediatly(struct dasd_ccw_req *); +int dasd_sleep_on_queue_interruptible(struct list_head *); int dasd_sleep_on_interruptible(struct dasd_ccw_req *); void dasd_device_set_timer(struct dasd_device *, int); void dasd_device_clear_timer(struct dasd_device *); -- cgit v1.2.3-59-g8ed1b