diff options
author | Markus Pargmann <mpa@pengutronix.de> | 2015-08-17 02:20:01 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-08-17 10:22:49 -0400 |
commit | 36e47bee7c9bc7771aad6e972dea92e2324338a4 (patch) | |
tree | 1eddf59204b0ce75f7c15d649aa8ff33f8db4274 /drivers/block | |
parent | 7e2893a16d3e71035a38122a77bc55848a29f0e4 (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.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) | |||
117 | /* | 117 | /* |
118 | * Forcibly shutdown the socket causing all listeners to error | 118 | * Forcibly shutdown the socket causing all listeners to error |
119 | */ | 119 | */ |
120 | static void sock_shutdown(struct nbd_device *nbd, int lock) | 120 | static 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 | ||
134 | static void nbd_xmit_timeout(unsigned long arg) | 130 | static 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, ¤t->blocked, &info); | 423 | ret = dequeue_signal_lock(current, ¤t->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); |