Do not deadlock in drbd_disconnect() [bugz 258]
authorPhilipp Reisner <philipp.reisner@linbit.com>
Fri, 23 Oct 2009 11:57:45 +0000 (13:57 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Wed, 4 Nov 2009 14:21:03 +0000 (15:21 +0100)
commite656ec8ae2c0319b6d52834695f9635217d62de5
tree47930af0bbf1bbcfe475524dab913b31e3a8e035
parent0a4921662513ae60dc638c8e13fbe3439d84db64
Do not deadlock in drbd_disconnect() [bugz 258]

When there are many blocks on the fly (ua), and the AL gets into "starving"
mode (random IO, scattered all over the device), and the connections gets
interrupted, the receiver thread deadlocks in the drbd_disconnect() code path.

Affected are only nodes in Primary role.

The bug triggers most likely on system that mirror over "long distances"

Regression introduced shortly before 8.3.3
with git commit 31e0f1250f174ac1ee317f360943a0159e19edc8

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_receiver.c