aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2006-04-11 01:52:48 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-11 09:18:30 -0400
commit6f91fe88e4e28b40b4f08d99e0ea6d17b70e9567 (patch)
tree035ac07180e058579ee8023ed0fcb12e40315594
parent54404e72cd3758e465fb6362f6d71e22b705c589 (diff)
[PATCH] md: make sure 64bit fields in version-1 metadata are 64-bit aligned
reshape_position is a 64bit field that was not 64bit aligned. So swap with new_level. NOTE: this is a user-visible change. However: - The bad code has not appeared in a released kernel - This code is still marked 'experimental' - This only affects version-1 superblock, which are not in wide use - These field are only used (rather than simply reported) by user-space tools in extemely rare circumstances : after a reshape crashes in the first second of the reshape process. So I believe that, at this stage, the change is safe. Especially if people heed the 'help' message on use mdadm-2.4.1. Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/md/Kconfig11
-rw-r--r--include/linux/raid/md_p.h2
2 files changed, 7 insertions, 6 deletions
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index fd2aae150ccc..ac25a48362ac 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -139,11 +139,12 @@ config MD_RAID5_RESHAPE
139 is online. However it is still EXPERIMENTAL code. It should 139 is online. However it is still EXPERIMENTAL code. It should
140 work, but please be sure that you have backups. 140 work, but please be sure that you have backups.
141 141
142 You will need a version of mdadm newer than 2.3.1. During the 142 You will need mdadm verion 2.4.1 or later to use this
143 early stage of reshape there is a critical section where live data 143 feature safely. During the early stage of reshape there is
144 is being over-written. A crash during this time needs extra care 144 a critical section where live data is being over-written. A
145 for recovery. The newer mdadm takes a copy of the data in the 145 crash during this time needs extra care for recovery. The
146 critical section and will restore it, if necessary, after a crash. 146 newer mdadm takes a copy of the data in the critical section
147 and will restore it, if necessary, after a crash.
147 148
148 The mdadm usage is e.g. 149 The mdadm usage is e.g.
149 mdadm --grow /dev/md1 --raid-disks=6 150 mdadm --grow /dev/md1 --raid-disks=6
diff --git a/include/linux/raid/md_p.h b/include/linux/raid/md_p.h
index 774e1acfb8c4..f1fbae7e390e 100644
--- a/include/linux/raid/md_p.h
+++ b/include/linux/raid/md_p.h
@@ -227,8 +227,8 @@ struct mdp_superblock_1 {
227 */ 227 */
228 228
229 /* These are only valid with feature bit '4' */ 229 /* These are only valid with feature bit '4' */
230 __u64 reshape_position; /* next address in array-space for reshape */
231 __u32 new_level; /* new level we are reshaping to */ 230 __u32 new_level; /* new level we are reshaping to */
231 __u64 reshape_position; /* next address in array-space for reshape */
232 __u32 delta_disks; /* change in number of raid_disks */ 232 __u32 delta_disks; /* change in number of raid_disks */
233 __u32 new_layout; /* new layout */ 233 __u32 new_layout; /* new layout */
234 __u32 new_chunk; /* new chunk size (bytes) */ 234 __u32 new_chunk; /* new chunk size (bytes) */