diff options
| author | NeilBrown <neilb@suse.de> | 2005-11-09 00:39:32 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-09 10:56:38 -0500 |
| commit | bd926c63b7a6843d3ce2728396c0891e54fce5c4 (patch) | |
| tree | 38f7083a733e9b31efe69616c5fa3448c74c1320 /include/linux/raid | |
| parent | b2d444d7ad975d555bb919601bcdc0e58975a40e (diff) | |
[PATCH] md: make md on-disk bitmaps not host-endian
Current bitmaps use set_bit et.al and so are host-endian, which means
not-portable. Oops.
Define a new version number (4) for which bitmaps are little-endian.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/raid')
| -rw-r--r-- | include/linux/raid/bitmap.h | 11 | ||||
| -rw-r--r-- | include/linux/raid/md.h | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/include/linux/raid/bitmap.h b/include/linux/raid/bitmap.h index 9de99198caf1..899437802aea 100644 --- a/include/linux/raid/bitmap.h +++ b/include/linux/raid/bitmap.h | |||
| @@ -6,7 +6,13 @@ | |||
| 6 | #ifndef BITMAP_H | 6 | #ifndef BITMAP_H |
| 7 | #define BITMAP_H 1 | 7 | #define BITMAP_H 1 |
| 8 | 8 | ||
| 9 | #define BITMAP_MAJOR 3 | 9 | #define BITMAP_MAJOR_LO 3 |
| 10 | /* version 4 insists the bitmap is in little-endian order | ||
| 11 | * with version 3, it is host-endian which is non-portable | ||
| 12 | */ | ||
| 13 | #define BITMAP_MAJOR_HI 4 | ||
| 14 | #define BITMAP_MAJOR_HOSTENDIAN 3 | ||
| 15 | |||
| 10 | #define BITMAP_MINOR 39 | 16 | #define BITMAP_MINOR 39 |
| 11 | 17 | ||
| 12 | /* | 18 | /* |
| @@ -133,7 +139,8 @@ typedef __u16 bitmap_counter_t; | |||
| 133 | /* use these for bitmap->flags and bitmap->sb->state bit-fields */ | 139 | /* use these for bitmap->flags and bitmap->sb->state bit-fields */ |
| 134 | enum bitmap_state { | 140 | enum bitmap_state { |
| 135 | BITMAP_ACTIVE = 0x001, /* the bitmap is in use */ | 141 | BITMAP_ACTIVE = 0x001, /* the bitmap is in use */ |
| 136 | BITMAP_STALE = 0x002 /* the bitmap file is out of date or had -EIO */ | 142 | BITMAP_STALE = 0x002, /* the bitmap file is out of date or had -EIO */ |
| 143 | BITMAP_HOSTENDIAN = 0x8000, | ||
| 137 | }; | 144 | }; |
| 138 | 145 | ||
| 139 | /* the superblock at the front of the bitmap file -- little endian */ | 146 | /* the superblock at the front of the bitmap file -- little endian */ |
diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h index ffa316ce4dc8..91467a3c4a52 100644 --- a/include/linux/raid/md.h +++ b/include/linux/raid/md.h | |||
| @@ -66,8 +66,10 @@ | |||
| 66 | * and major_version/minor_version accordingly | 66 | * and major_version/minor_version accordingly |
| 67 | * >=2 means that Internal bitmaps are supported by setting MD_SB_BITMAP_PRESENT | 67 | * >=2 means that Internal bitmaps are supported by setting MD_SB_BITMAP_PRESENT |
| 68 | * in the super status byte | 68 | * in the super status byte |
| 69 | * >=3 means that bitmap superblock version 4 is supported, which uses | ||
| 70 | * little-ending representation rather than host-endian | ||
| 69 | */ | 71 | */ |
| 70 | #define MD_PATCHLEVEL_VERSION 2 | 72 | #define MD_PATCHLEVEL_VERSION 3 |
| 71 | 73 | ||
| 72 | extern int register_md_personality (int p_num, mdk_personality_t *p); | 74 | extern int register_md_personality (int p_num, mdk_personality_t *p); |
| 73 | extern int unregister_md_personality (int p_num); | 75 | extern int unregister_md_personality (int p_num); |
