diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2010-02-27 00:37:27 +0300 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2010-02-27 00:37:29 +0300 |
commit | b4c707214c987da021d4d5c4ed54612cf73d80d6 (patch) | |
tree | d31dffc6de708a7069e59925a6fa4080138c90e6 /drivers/s390/cio/device.c | |
parent | b4563e891a043fe521e62f6f621b928641474ff3 (diff) | |
download | linux-b4c707214c987da021d4d5c4ed54612cf73d80d6.tar.xz |
[S390] cio: make wait_events interruptible
Make the potentially long blocking wait_event's used by the cio
settle mechanism interruptible.
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/device.c')
-rw-r--r-- | drivers/s390/cio/device.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 9c9ea45141af..6aa2f069c6be 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c @@ -158,11 +158,16 @@ static int io_subchannel_prepare(struct subchannel *sch) return 0; } -static void io_subchannel_settle(void) +static int io_subchannel_settle(void) { - wait_event(ccw_device_init_wq, - atomic_read(&ccw_device_init_count) == 0); + int ret; + + ret = wait_event_interruptible(ccw_device_init_wq, + atomic_read(&ccw_device_init_count) == 0); + if (ret) + return -EINTR; flush_workqueue(cio_work_q); + return 0; } static struct css_driver io_subchannel_driver = { |