drbd: protect all idr accesses that might sleep with drbd_cfg_rwsem
authorPhilipp Reisner <philipp.reisner@linbit.com>
Wed, 13 Apr 2011 21:46:05 +0000 (14:46 -0700)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 8 Nov 2012 15:45:17 +0000 (16:45 +0100)
commitd3fcb4908d8cce7f29cff16bbef3b08933148003
treefc457ab337f19aa265a3b5cc4d5bcacc5b664315
parentef356262846eb49821db7b20a131b6573e4c7d2e
drbd: protect all idr accesses that might sleep with drbd_cfg_rwsem

With this commit the locking for all accesses to IDRs is complete:

 * Non sleeping read accesses are protected by RCU
 * sleeping read accesses are protocted by a read lock on drbd_cfg_rwsem
 * accesses that add anything are protected by a write lock
 * accesses that remove an object are protoected by a write lock
   and a call to synchronize_rcu() after it is removed from the IDR
   and before the object is actually free()ed.

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