This is a second attempt to make wake_up_{bit,var} less fragile. This version doesn't change those functions much, but instead improves the documentation and provides some helpers which both serve as patterns to follow and alternates so that use of the fragile functions can be limited or eliminated. The only change to either function is that wake_up_bit() is changed to take an unsigned long * rather than a void *. This necessitates the first patch which changes the one place where something other then unsigned long * is passed to wake_up bit - it is in block/. The final patch modifies the same bit of code as a demonstration of one of the new APIs that has been added. Thanks, NeilBrown [PATCH 1/7] block: change wait on bd_claiming to use a var_waitqueue, [PATCH 2/7] sched: change wake_up_bit() and related function to [PATCH 3/7] sched: Improve documentation for wake_up_bit/wait_on_bit [PATCH 4/7] sched: Document wait_var_event() family of functions and [PATCH 5/7] sched: Add test_and_clear_wake_up_bit() and [PATCH 6/7] sched: Add wait/wake interface for variable updated under [PATCH 7/7] Block: switch bd_prepare_to_claim to use