Commit a7ee8cf1 authored by Josef Bacik's avatar Josef Bacik Committed by Jens Axboe

nbd: only set sndtimeo if we have a timeout set

A user reported that he was getting immediate disconnects with my
sndtimeo patch applied.  This is because by default the OSS nbd client
doesn't set a timeout, so we end up setting the sndtimeo to 0, which of
course means we have send errors a lot.  Instead only set our sndtimeo
if the user specified a timeout, otherwise we'll just wait forever like
we did previously.

Fixes: dc88e34d ("nbd: set sk->sk_sndtimeo for our sockets")
Reported-by: default avatarAdam Borowski <kilobyte@angband.pl>
Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent b4b2aecc
...@@ -908,7 +908,8 @@ static int nbd_reconnect_socket(struct nbd_device *nbd, unsigned long arg) ...@@ -908,7 +908,8 @@ static int nbd_reconnect_socket(struct nbd_device *nbd, unsigned long arg)
continue; continue;
} }
sk_set_memalloc(sock->sk); sk_set_memalloc(sock->sk);
sock->sk->sk_sndtimeo = nbd->tag_set.timeout; if (nbd->tag_set.timeout)
sock->sk->sk_sndtimeo = nbd->tag_set.timeout;
atomic_inc(&config->recv_threads); atomic_inc(&config->recv_threads);
refcount_inc(&nbd->config_refs); refcount_inc(&nbd->config_refs);
old = nsock->sock; old = nsock->sock;
...@@ -1077,7 +1078,9 @@ static int nbd_start_device(struct nbd_device *nbd) ...@@ -1077,7 +1078,9 @@ static int nbd_start_device(struct nbd_device *nbd)
return -ENOMEM; return -ENOMEM;
} }
sk_set_memalloc(config->socks[i]->sock->sk); sk_set_memalloc(config->socks[i]->sock->sk);
config->socks[i]->sock->sk->sk_sndtimeo = nbd->tag_set.timeout; if (nbd->tag_set.timeout)
config->socks[i]->sock->sk->sk_sndtimeo =
nbd->tag_set.timeout;
atomic_inc(&config->recv_threads); atomic_inc(&config->recv_threads);
refcount_inc(&nbd->config_refs); refcount_inc(&nbd->config_refs);
INIT_WORK(&args->work, recv_work); INIT_WORK(&args->work, recv_work);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment