Lars Ellenberg e334f55095 drbd: make sure disk cleanup happens in worker context
The recent fix to put_ldev() (correct ordering of access to local_cnt
and state.disk; memory barrier in __drbd_set_state) guarantees
that the cleanup happens exactly once.

However it does not yet guarantee that the cleanup happens from worker
context, the last put_ldev() may still happen from atomic context,
which must not happen: blkdev_put() may sleep.

Fix this by scheduling the cleanup to the worker instead,
using a couple more bits in device->flags and a new helper,
drbd_device_post_work().

Generalized the "resync progress" work to cover these new work bits.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
2014-07-10 18:34:55 +02:00
..
2014-06-23 16:47:44 -07:00
2014-06-04 09:08:25 -07:00
2014-06-17 14:28:04 +02:00
2014-06-26 13:34:15 +01:00
2014-06-25 12:19:01 -07:00
2014-06-17 15:43:48 -07:00
2014-06-11 14:06:55 -07:00
2014-06-06 11:44:09 -07:00
2014-06-26 10:48:23 +01:00
2014-06-25 12:19:01 -07:00
2014-06-23 09:22:48 +03:00