[PATCH] md: make sure 64bit fields in version-1 metadata are 64-bit aligned
NeilBrown [Tue, 11 Apr 2006 05:52:48 +0000 (22:52 -0700)]
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>

drivers/md/Kconfig
include/linux/raid/md_p.h

index fd2aae1..ac25a48 100644 (file)
@@ -139,11 +139,12 @@ config MD_RAID5_RESHAPE
          is online.  However it is still EXPERIMENTAL code.  It should
          work, but please be sure that you have backups.
 
-         You will need a version of mdadm newer than 2.3.1.   During the
-         early stage of reshape there is a critical section where live data
-         is being over-written.  A crash during this time needs extra care
-         for recovery.  The newer mdadm takes a copy of the data in the
-         critical section and will restore it, if necessary, after a crash.
+         You will need mdadm verion 2.4.1 or later to use this
+         feature safely.  During the early stage of reshape there is
+         a critical section where live data is being over-written.  A
+         crash during this time needs extra care for recovery.  The
+         newer mdadm takes a copy of the data in the critical section
+         and will restore it, if necessary, after a crash.
 
          The mdadm usage is e.g.
               mdadm --grow /dev/md1 --raid-disks=6
index 774e1ac..f1fbae7 100644 (file)
@@ -227,8 +227,8 @@ struct mdp_superblock_1 {
                                 */
 
        /* These are only valid with feature bit '4' */
-       __u64   reshape_position;       /* next address in array-space for reshape */
        __u32   new_level;      /* new level we are reshaping to                */
+       __u64   reshape_position;       /* next address in array-space for reshape */
        __u32   delta_disks;    /* change in number of raid_disks               */
        __u32   new_layout;     /* new layout                                   */
        __u32   new_chunk;      /* new chunk size (bytes)                       */