nbd: wait uninterruptible for the dead timeout
authorJosef Bacik <jbacik@fb.com>
Mon, 6 Nov 2017 21:11:57 +0000 (16:11 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Nov 2017 08:40:41 +0000 (08:40 +0000)
commit ff57dc94faec023abc267cdc45766fccff497557 upstream.

If we have a pending signal or the user kills their application then
it'll bring down the whole device, which is less than awesome.  Instead
wait uninterruptible for the dead timeout so we're sure we gave it our
best shot.

Fixes: 560bc4b39952 ("nbd: handle dead connections")
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/nbd.c

index 9adfb5445f8dca5a88a4ffe59d3573ed5b854e02..fdef8efcdabc4030050b5ddc5874e08a2302223e 100644 (file)
@@ -723,9 +723,9 @@ static int wait_for_reconnect(struct nbd_device *nbd)
                return 0;
        if (test_bit(NBD_DISCONNECTED, &config->runtime_flags))
                return 0;
-       wait_event_interruptible_timeout(config->conn_wait,
-                                        atomic_read(&config->live_connections),
-                                        config->dead_conn_timeout);
+       wait_event_timeout(config->conn_wait,
+                          atomic_read(&config->live_connections),
+                          config->dead_conn_timeout);
        return atomic_read(&config->live_connections);
 }