[PATCH] md: improve raid1 "IO Barrier" concept

raid1 needs to put up a barrier to new requests while it does resync or other
background recovery.  The code for this is currently open-coded, slighty
obscure by its use of two waitqueues, and not documented.

This patch gathers all the related code into 4 functions, and includes a
comment which (hopefully) explains what is happening.

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
NeilBrown 2006-01-06 00:20:12 -08:00 committed by Linus Torvalds
parent ac81b2ee45
commit 17999be4aa
2 changed files with 92 additions and 81 deletions

View file

@ -45,6 +45,7 @@ struct r1_private_data_s {
spinlock_t resync_lock;
int nr_pending;
int nr_waiting;
int barrier;
sector_t next_resync;
int fullsync; /* set to 1 if a full sync is needed,
@ -52,8 +53,7 @@ struct r1_private_data_s {
* Cleared when a sync completes.
*/
wait_queue_head_t wait_idle;
wait_queue_head_t wait_resume;
wait_queue_head_t wait_barrier;
struct pool_info *poolinfo;