Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
[pandora-kernel.git] / drivers / md / raid10.h
index 7c61561..135b1b0 100644 (file)
@@ -14,32 +14,38 @@ struct mirror_info {
 struct r10conf {
        struct mddev            *mddev;
        struct mirror_info      *mirrors;
-       int                     raid_disks;
+       struct mirror_info      *mirrors_new, *mirrors_old;
        spinlock_t              device_lock;
 
        /* geometry */
-       int                     near_copies;  /* number of copies laid out
+       struct geom {
+               int             raid_disks;
+               int             near_copies;  /* number of copies laid out
                                               * raid0 style */
-       int                     far_copies;   /* number of copies laid out
+               int             far_copies;   /* number of copies laid out
                                               * at large strides across drives
                                               */
-       int                     far_offset;   /* far_copies are offset by 1
+               int             far_offset;   /* far_copies are offset by 1
                                               * stripe instead of many
                                               */
-       int                     copies;       /* near_copies * far_copies.
-                                              * must be <= raid_disks
-                                              */
-       sector_t                stride;       /* distance between far copies.
+               sector_t        stride;       /* distance between far copies.
                                               * This is size / far_copies unless
                                               * far_offset, in which case it is
                                               * 1 stripe.
                                               */
+               int             chunk_shift; /* shift from chunks to sectors */
+               sector_t        chunk_mask;
+       } prev, geo;
+       int                     copies;       /* near_copies * far_copies.
+                                              * must be <= raid_disks
+                                              */
 
        sector_t                dev_sectors;  /* temp copy of
                                               * mddev->dev_sectors */
-
-       int                     chunk_shift; /* shift from chunks to sectors */
-       sector_t                chunk_mask;
+       sector_t                reshape_progress;
+       sector_t                reshape_safe;
+       unsigned long           reshape_checkpoint;
+       sector_t                offset_diff;
 
        struct list_head        retry_list;
        /* queue pending writes and submit them on unplug */
@@ -136,6 +142,7 @@ enum r10bio_state {
        R10BIO_Uptodate,
        R10BIO_IsSync,
        R10BIO_IsRecover,
+       R10BIO_IsReshape,
        R10BIO_Degraded,
 /* Set ReadError on bios that experience a read error
  * so that raid10d knows what to do with them.
@@ -146,5 +153,10 @@ enum r10bio_state {
  */
        R10BIO_MadeGood,
        R10BIO_WriteError,
+/* During a reshape we might be performing IO on the
+ * 'previous' part of the array, in which case this
+ * flag is set
+ */
+       R10BIO_Previous,
 };
 #endif