OpenCloudOS-Kernel/drivers/block/drbd
Lars Ellenberg 7dc1d67f7c drbd: skip spurious wait_event in drbd_al_begin_io
Activity log transaction writes are serialized on a bit lock.
If several CPUs race to write an AL transaction,
those that did not get the lock the first time
may continue as soon as there are no more pending transactions.

The do not need to all grab the lock in turn,
just to realize that the AL is clean already,
and they have nothing to do.

This also closes a potential deadlock with drbd_adm_disk_opts.
Once it got the AL bit lock, it knows there are no pending transactions,
the AL is clean, and it should be safe to wait for all element references
to drop to zero.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
2012-11-08 16:55:49 +01:00
..
Kconfig drbd: Kconfig fix 2009-12-29 17:38:28 +01:00
Makefile drbd: Moved the state functions into its own source file 2011-09-28 10:26:43 +02:00
drbd_actlog.c drbd: skip spurious wait_event in drbd_al_begin_io 2012-11-08 16:55:49 +01:00
drbd_bitmap.c drbd: introduce a bio_set to allocate housekeeping bios from 2011-10-14 16:48:06 +02:00
drbd_int.h drbd: Rename the want_lose field/flag to discard_my_data 2012-11-08 16:55:49 +01:00
drbd_interval.c drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_interval.h drbd: Iterate over all overlapping intervals in a tree 2011-10-14 16:47:37 +02:00
drbd_main.c drbd: Rename the want_lose field/flag to discard_my_data 2012-11-08 16:55:49 +01:00
drbd_nl.c drbd: Rename the want_lose field/flag to discard_my_data 2012-11-08 16:55:49 +01:00
drbd_proc.c drbd: Removing drbd_cfg_rwsem 2012-11-08 16:55:48 +01:00
drbd_receiver.c drbd: Rename the want_lose field/flag to discard_my_data 2012-11-08 16:55:49 +01:00
drbd_req.c drbd: rcu_read_lock() and rcu_dereference() for tconn->net_conf 2012-11-08 16:48:59 +01:00
drbd_req.h drbd: Runtime changeable wire protocol 2012-11-08 16:45:18 +01:00
drbd_state.c drbd: RCU for disk_conf 2012-11-08 16:55:43 +01:00
drbd_state.h drbd: Improved logging of state changes 2012-11-08 16:45:06 +01:00
drbd_strings.c drbd: Allow volumes to become primary only on one side 2012-11-04 00:16:31 +01:00
drbd_vli.h Fix common misspellings 2011-03-31 11:26:23 -03:00
drbd_worker.c drbd: Removing drbd_cfg_rwsem 2012-11-08 16:55:48 +01:00
drbd_wrappers.h drbd: Remove obsolete drbd_crypto_is_hash() 2012-11-08 16:52:58 +01:00