Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 269247
b: refs/heads/master
c: ce550c2
h: refs/heads/master
i:
  269245: 943d369
  269243: 470be58
  269239: 36f8ad5
  269231: f5bc087
  269215: 06a2790
  269183: cb6f994
v: v3
  • Loading branch information
NeilBrown committed Oct 7, 2011
1 parent 3eabe3e commit b1d800b
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2dba6a911c284603d2085fec1e2d3c142f58a010
refs/heads/master: ce550c2059a67ee7834fc6f64cf895391d36a58e
59 changes: 42 additions & 17 deletions trunk/drivers/md/raid1.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,42 +28,67 @@ struct r1_private_data_s {
mddev_t *mddev;
mirror_info_t *mirrors;
int raid_disks;

/* When choose the best device for a read (read_balance())
* we try to keep sequential reads one the same device
* using 'last_used' and 'next_seq_sect'
*/
int last_used;
sector_t next_seq_sect;
/* During resync, read_balancing is only allowed on the part
* of the array that has been resynced. 'next_resync' tells us
* where that is.
*/
sector_t next_resync;

spinlock_t device_lock;

/* list of 'r1bio_t' that need to be processed by raid1d, whether
* to retry a read, writeout a resync or recovery block, or
* anything else.
*/
struct list_head retry_list;
/* queue pending writes and submit them on unplug */
struct bio_list pending_bio_list;

/* for use when syncing mirrors: */
/* queue pending writes to be submitted on unplug */
struct bio_list pending_bio_list;

/* for use when syncing mirrors:
* We don't allow both normal IO and resync/recovery IO at
* the same time - resync/recovery can only happen when there
* is no other IO. So when either is active, the other has to wait.
* See more details description in raid1.c near raise_barrier().
*/
wait_queue_head_t wait_barrier;
spinlock_t resync_lock;
int nr_pending;
int nr_waiting;
int nr_queued;
int barrier;
sector_t next_resync;
int fullsync; /* set to 1 if a full sync is needed,
* (fresh device added).
* Cleared when a sync completes.
*/
int recovery_disabled; /* when the same as
* mddev->recovery_disabled
* we don't allow recovery
* to be attempted as we
* expect a read error
*/

wait_queue_head_t wait_barrier;
/* Set to 1 if a full sync is needed, (fresh device added).
* Cleared when a sync completes.
*/
int fullsync;

struct pool_info *poolinfo;
/* When the same as mddev->recovery_disabled we don't allow
* recovery to be attempted as we expect a read error.
*/
int recovery_disabled;

struct page *tmppage;

/* poolinfo contains information about the content of the
* mempools - it changes when the array grows or shrinks
*/
struct pool_info *poolinfo;
mempool_t *r1bio_pool;
mempool_t *r1buf_pool;

/* temporary buffer to synchronous IO when attempting to repair
* a read error.
*/
struct page *tmppage;


/* When taking over an array from a different personality, we store
* the new thread here until we fully activate the array.
*/
Expand Down

0 comments on commit b1d800b

Please sign in to comment.