nbd: don't requeue the same request twice.
authorJosef Bacik <josef@toxicpanda.com>
Mon, 16 Jul 2018 16:11:34 +0000 (12:11 -0400)
committerJens Axboe <axboe@kernel.dk>
Mon, 16 Jul 2018 16:14:39 +0000 (10:14 -0600)
commitd7d94d48a272fd7583dc3c83acb8f5ed4ef456a4
tree82545e7495d193b4f1e6794aae23e2dcfc7ad08b
parent70dbcc2254fa2a9add74a122b9dac954c4736e01
nbd: don't requeue the same request twice.

We can race with the snd timeout and the per-request timeout and end up
requeuing the same request twice.  We can't use the send_complete
completion to tell if everything is ok because we hold the tx_lock
during send, so the timeout stuff will block waiting to mark the socket
dead, and we could be marked complete and still requeue.  Instead add a
flag to the socket so we know whether we've been requeued yet.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/nbd.c