[PATCH] md: support write-mostly device in raid1
This allows a device in a raid1 to be marked as "write mostly". Read requests will only be sent if there is no other option. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
36fa30636f
commit
8ddf9efe67
@@ -181,6 +181,9 @@ struct mdk_rdev_s
|
||||
int faulty; /* if faulty do not issue IO requests */
|
||||
int in_sync; /* device is a full member of the array */
|
||||
|
||||
unsigned long flags; /* Should include faulty and in_sync here. */
|
||||
#define WriteMostly 4 /* Avoid reading if at all possible */
|
||||
|
||||
int desc_nr; /* descriptor index in the superblock */
|
||||
int raid_disk; /* role of device in array */
|
||||
int saved_raid_disk; /* role that device used to have in the
|
||||
|
@@ -79,6 +79,11 @@
|
||||
#define MD_DISK_SYNC 2 /* disk is in sync with the raid set */
|
||||
#define MD_DISK_REMOVED 3 /* disk is in sync with the raid set */
|
||||
|
||||
#define MD_DISK_WRITEMOSTLY 9 /* disk is "write-mostly" is RAID1 config.
|
||||
* read requests will only be sent here in
|
||||
* dire need
|
||||
*/
|
||||
|
||||
typedef struct mdp_device_descriptor_s {
|
||||
__u32 number; /* 0 Device number in the entire set */
|
||||
__u32 major; /* 1 Device major number */
|
||||
@@ -193,7 +198,7 @@ struct mdp_superblock_1 {
|
||||
|
||||
__u64 ctime; /* lo 40 bits are seconds, top 24 are microseconds or 0*/
|
||||
__u32 level; /* -4 (multipath), -1 (linear), 0,1,4,5 */
|
||||
__u32 layout; /* only for raid5 currently */
|
||||
__u32 layout; /* only for raid5 and raid10 currently */
|
||||
__u64 size; /* used size of component devices, in 512byte sectors */
|
||||
|
||||
__u32 chunksize; /* in 512byte sectors */
|
||||
@@ -212,7 +217,9 @@ struct mdp_superblock_1 {
|
||||
__u32 dev_number; /* permanent identifier of this device - not role in raid */
|
||||
__u32 cnt_corrected_read; /* number of read errors that were corrected by re-writing */
|
||||
__u8 device_uuid[16]; /* user-space setable, ignored by kernel */
|
||||
__u8 pad2[64-56]; /* set to 0 when writing */
|
||||
__u8 devflags; /* per-device flags. Only one defined...*/
|
||||
#define WriteMostly1 1 /* mask for writemostly flag in above */
|
||||
__u8 pad2[64-57]; /* set to 0 when writing */
|
||||
|
||||
/* array state information - 64 bytes */
|
||||
__u64 utime; /* 40 bits second, 24 btes microseconds */
|
||||
|
Reference in New Issue
Block a user