[PATCH] md: make sure 64bit fields in version-1 metadata are 64-bit aligned
authorNeilBrown <neilb@suse.de>
Tue, 11 Apr 2006 05:52:48 +0000 (22:52 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 11 Apr 2006 13:18:30 +0000 (06:18 -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 fd2aae150ccc5c4104ed434fc78e18cb6f9d78be..ac25a48362acab47ea103fa176b39590ed5c2e42 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.
 
          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
 
          The mdadm usage is e.g.
               mdadm --grow /dev/md1 --raid-disks=6
index 774e1acfb8c4bab01eb9a1291711d0a6948834a8..f1fbae7e390ec4f53d67fa54e244153768449061 100644 (file)
@@ -227,8 +227,8 @@ struct mdp_superblock_1 {
                                 */
 
        /* These are only valid with feature bit '4' */
                                 */
 
        /* 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                */
        __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)                       */
        __u32   delta_disks;    /* change in number of raid_disks               */
        __u32   new_layout;     /* new layout                                   */
        __u32   new_chunk;      /* new chunk size (bytes)                       */