summaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
authorLars Ellenberg <lars.ellenberg@linbit.com>2014-02-11 09:30:49 +0100
committerPhilipp Reisner <philipp.reisner@linbit.com>2014-07-10 18:34:55 +0200
commite334f55095b908f12c8bad991433f5d609e919d1 (patch)
tree00b88836a6eda4beeaea106f50fd423fc02d4043 /kernel/irq
parentdrbd: close race when detaching from disk (diff)
downloadlinux-e334f55095b908f12c8bad991433f5d609e919d1.tar.xz
linux-e334f55095b908f12c8bad991433f5d609e919d1.zip
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>
Diffstat (limited to 'kernel/irq')
0 files changed, 0 insertions, 0 deletions