aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorMarkus Pargmann <mpa@pengutronix.de>2015-08-17 02:20:01 -0400
committerJens Axboe <axboe@fb.com>2015-08-17 10:22:49 -0400
commit36e47bee7c9bc7771aad6e972dea92e2324338a4 (patch)
tree1eddf59204b0ce75f7c15d649aa8ff33f8db4274 /drivers/block
parent7e2893a16d3e71035a38122a77bc55848a29f0e4 (diff)
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/block')
-rw-r--r--drivers/block/nbd.c16
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)
117/* 117/*
118 * Forcibly shutdown the socket causing all listeners to error 118 * Forcibly shutdown the socket causing all listeners to error
119 */ 119 */
120static void sock_shutdown(struct nbd_device *nbd, int lock) 120static void sock_shutdown(struct nbd_device *nbd)
121{ 121{
122 if (lock)
123 mutex_lock(&nbd->tx_lock);
124 if (nbd->sock) { 122 if (nbd->sock) {
125 dev_warn(disk_to_dev(nbd->disk), "shutting down socket\n"); 123 dev_warn(disk_to_dev(nbd->disk), "shutting down socket\n");
126 kernel_sock_shutdown(nbd->sock, SHUT_RDWR); 124 kernel_sock_shutdown(nbd->sock, SHUT_RDWR);
127 nbd->sock = NULL; 125 nbd->sock = NULL;
128 del_timer_sync(&nbd->timeout_timer); 126 del_timer_sync(&nbd->timeout_timer);
129 } 127 }
130 if (lock)
131 mutex_unlock(&nbd->tx_lock);
132} 128}
133 129
134static void nbd_xmit_timeout(unsigned long arg) 130static void nbd_xmit_timeout(unsigned long arg)
@@ -427,7 +423,9 @@ static int nbd_do_it(struct nbd_device *nbd)
427 ret = dequeue_signal_lock(current, &current->blocked, &info); 423 ret = dequeue_signal_lock(current, &current->blocked, &info);
428 dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n", 424 dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n",
429 task_pid_nr(current), current->comm, ret); 425 task_pid_nr(current), current->comm, ret);
430 sock_shutdown(nbd, 1); 426 mutex_lock(&nbd->tx_lock);
427 sock_shutdown(nbd);
428 mutex_unlock(&nbd->tx_lock);
431 ret = -ETIMEDOUT; 429 ret = -ETIMEDOUT;
432 } 430 }
433 431
@@ -541,7 +539,9 @@ static int nbd_thread(void *data)
541 &info); 539 &info);
542 dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n", 540 dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal %d\n",
543 task_pid_nr(current), current->comm, ret); 541 task_pid_nr(current), current->comm, ret);
544 sock_shutdown(nbd, 1); 542 mutex_lock(&nbd->tx_lock);
543 sock_shutdown(nbd);
544 mutex_unlock(&nbd->tx_lock);
545 break; 545 break;
546 } 546 }
547 547
@@ -735,7 +735,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd,
735 mutex_lock(&nbd->tx_lock); 735 mutex_lock(&nbd->tx_lock);
736 if (error) 736 if (error)
737 return error; 737 return error;
738 sock_shutdown(nbd, 0); 738 sock_shutdown(nbd);
739 sock = nbd->sock; 739 sock = nbd->sock;
740 nbd->sock = NULL; 740 nbd->sock = NULL;
741 nbd_clear_que(nbd); 741 nbd_clear_que(nbd);