diff options
author | Markus Pargmann <mpa@pengutronix.de> | 2015-08-17 08:20:01 +0200 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-08-17 16:22:49 +0200 |
commit | 36e47bee7c9bc7771aad6e972dea92e2324338a4 (patch) | |
tree | 1eddf59204b0ce75f7c15d649aa8ff33f8db4274 /drivers | |
parent | nbd: Fix timeout detection (diff) | |
download | linux-36e47bee7c9bc7771aad6e972dea92e2324338a4.tar.xz linux-36e47bee7c9bc7771aad6e972dea92e2324338a4.zip |
nbd: sock_shutdown, remove conditional lock
Move the conditional lock from sock_shutdown into the surrounding code.
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/block/nbd.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index f3536e68e63f..bf0de3018cde 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -117,18 +117,14 @@ static void nbd_end_request(struct nbd_device *nbd, struct request *req) /* * Forcibly shutdown the socket causing all listeners to error */ -static void sock_shutdown(struct nbd_device *nbd, int lock) +static void sock_shutdown(struct nbd_device *nbd) { - if (lock) - mutex_lock(&nbd->tx_lock); if (nbd->sock) { dev_warn(disk_to_dev(nbd->disk), "shutting down socket\n"); kernel_sock_shutdown(nbd->sock, SHUT_RDWR); nbd->sock = NULL; del_timer_sync(&nbd->timeout_timer); } - if (lock) - mutex_unlock(&nbd->tx_lock); } static void nbd_xmit_timeout(unsigned long arg) @@ -427,7 +423,9 @@ static int nbd_do_it(struct nbd_device *nbd) ret = dequeue_signal_lock(current, ¤t->blocked, &info); dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n", task_pid_nr(current), current->comm, ret); - sock_shutdown(nbd, 1); + mutex_lock(&nbd->tx_lock); + sock_shutdown(nbd); + mutex_unlock(&nbd->tx_lock); ret = -ETIMEDOUT; } @@ -541,7 +539,9 @@ static int nbd_thread(void *data) &info); dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n", task_pid_nr(current), current->comm, ret); - sock_shutdown(nbd, 1); + mutex_lock(&nbd->tx_lock); + sock_shutdown(nbd); + mutex_unlock(&nbd->tx_lock); break; } @@ -735,7 +735,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd, mutex_lock(&nbd->tx_lock); if (error) return error; - sock_shutdown(nbd, 0); + sock_shutdown(nbd); sock = nbd->sock; nbd->sock = NULL; nbd_clear_que(nbd); |