On Tue, Oct 08, 2019 at 09:25:58AM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
The patch below does not apply to the 4.14-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <stable@xxxxxxxxxxxxxxx>. thanks, greg k-h ------------------ original commit in Linus's tree ------------------ From e9e006f5fcf2bab59149cb38a48a4817c1b538b4 Mon Sep 17 00:00:00 2001 From: Mike Christie <mchristi@xxxxxxxxxx> Date: Sun, 4 Aug 2019 14:10:06 -0500 Subject: [PATCH] nbd: fix max number of supported devs This fixes a bug added in 4.10 with commit: commit 9561a7ade0c205bc2ee035a2ac880478dcc1a024 Author: Josef Bacik <jbacik@xxxxxx> Date: Tue Nov 22 14:04:40 2016 -0500 nbd: add multi-connection support that limited the number of devices to 256. Before the patch we could create 1000s of devices, but the patch switched us from using our own thread to using a work queue which has a default limit of 256 active works. The problem is that our recv_work function sits in a loop until disconnection but only handles IO for one connection. The work is started when the connection is started/restarted, but if we end up creating 257 or more connections, the queue_work call just queues connection257+'s recv_work and that waits for connection 1 - 256's recv_work to be disconnected and that work instance completing. Instead of reverting back to kthreads, this has us allocate a workqueue_struct per device, so we can block in the work. Cc: stable@xxxxxxxxxxxxxxx Reviewed-by: Josef Bacik <josef@xxxxxxxxxxxxxx> Signed-off-by: Mike Christie <mchristi@xxxxxxxxxx> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
I've queued up 553768d1169a4 ("nbd: fix crash when the blksize is zero") and 2189c97cdbed6 ("block/ndb: add WQ_UNBOUND to the knbd-recv workqueue") to resolve this on 4.14. -- Thanks, Sasha