]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super-intel.c
Introduce MaxSector
[thirdparty/mdadm.git] / super-intel.c
index 39a29857569516d7fb15a79934140cfc230904a6..4bb199031f05771d5e5a16ee2c04fe0979458193 100644 (file)
@@ -669,23 +669,24 @@ static void print_imsm_dev(struct imsm_dev *dev, char *uuid, int disk_idx)
        printf("     Chunk Size : %u KiB\n",
                __le16_to_cpu(map->blocks_per_strip) / 2);
        printf("       Reserved : %d\n", __le32_to_cpu(dev->reserved_blocks));
-       printf("  Migrate State : %s", dev->vol.migr_state ? "migrating" : "idle\n");
+       printf("  Migrate State : ");
        if (dev->vol.migr_state) {
                if (migr_type(dev) == MIGR_INIT)
-                       printf(": initializing\n");
+                       printf("initialize\n");
                else if (migr_type(dev) == MIGR_REBUILD)
-                       printf(": rebuilding\n");
+                       printf("rebuild\n");
                else if (migr_type(dev) == MIGR_VERIFY)
-                       printf("check\n");
+                       printf("check\n");
                else if (migr_type(dev) == MIGR_GEN_MIGR)
-                       printf("general migration\n");
+                       printf("general migration\n");
                else if (migr_type(dev) == MIGR_STATE_CHANGE)
-                       printf("state change\n");
+                       printf("state change\n");
                else if (migr_type(dev) == MIGR_REPAIR)
-                       printf("repair\n");
+                       printf("repair\n");
                else
-                       printf(": <unknown:%d>\n", migr_type(dev));
-       }
+                       printf("<unknown:%d>\n", migr_type(dev));
+       } else
+               printf("idle\n");
        printf("      Map State : %s", map_state_str[map->map_state]);
        if (dev->vol.migr_state) {
                struct imsm_map *map = get_imsm_map(dev, 1);
@@ -1270,7 +1271,7 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info)
                /* FIXME add curr_migr_unit to resync_start conversion */
                info->resync_start = 0;
        else
-               info->resync_start = ~0ULL;
+               info->resync_start = MaxSector;
 
        strncpy(info->name, (char *) dev->volume, MAX_RAID_SERIAL_LEN);
        info->name[MAX_RAID_SERIAL_LEN] = 0;
@@ -2429,7 +2430,7 @@ imsm_thunderdome(struct intel_super **super_list, int len)
                        struct intel_disk *idisk;
 
                        idisk = disk_list_get(dl->serial, disk_list);
-                       if (is_spare(&idisk->disk) &&
+                       if (idisk && is_spare(&idisk->disk) &&
                            !is_failed(&idisk->disk) && !is_configured(&idisk->disk))
                                dl->index = -1;
                        else {
@@ -3481,7 +3482,7 @@ static int validate_geometry_imsm_volume(struct supertype *st, int level,
                 * offset
                 */
                unsigned long long minsize = size;
-               unsigned long long start_offset = ~0ULL;
+               unsigned long long start_offset = MaxSector;
                int dcnt = 0;
                if (minsize == 0)
                        minsize = MPB_SECTOR_CNT + IMSM_RESERVED_SECTORS;
@@ -3497,7 +3498,7 @@ static int validate_geometry_imsm_volume(struct supertype *st, int level,
                                esize = e[i].start - pos;
                                if (esize >= minsize)
                                        found = 1;
-                               if (found && start_offset == ~0ULL) {
+                               if (found && start_offset == MaxSector) {
                                        start_offset = pos;
                                        break;
                                } else if (found && pos != start_offset) {
@@ -3855,7 +3856,7 @@ static struct mdinfo *container_content_imsm(struct supertype *st)
                         * FIXME handle dirty degraded
                         */
                        if (skip && !dev->vol.dirty)
-                               this->resync_start = ~0ULL;
+                               this->resync_start = MaxSector;
                        if (skip)
                                continue;
 
@@ -4107,12 +4108,12 @@ static int imsm_set_array_state(struct active_array *a, int consistent)
        }
                
        if (consistent == 2 &&
-           (!is_resync_complete(a) ||
+           (!is_resync_complete(&a->info) ||
             map_state != IMSM_T_STATE_NORMAL ||
             dev->vol.migr_state))
                consistent = 0;
 
-       if (is_resync_complete(a)) {
+       if (is_resync_complete(&a->info)) {
                /* complete intialization / resync,
                 * recovery and interrupted recovery is completed in
                 * ->set_disk
@@ -4124,7 +4125,7 @@ static int imsm_set_array_state(struct active_array *a, int consistent)
                }
        } else if (!is_resyncing(dev) && !failed) {
                /* mark the start of the init process if nothing is failed */
-               dprintf("imsm: mark resync start (%llu)\n", a->resync_start);
+               dprintf("imsm: mark resync start\n");
                if (map->map_state == IMSM_T_STATE_UNINITIALIZED)
                        migrate(dev, IMSM_T_STATE_NORMAL, MIGR_INIT);
                else
@@ -4136,8 +4137,7 @@ static int imsm_set_array_state(struct active_array *a, int consistent)
 
        /* mark dirty / clean */
        if (dev->vol.dirty != !consistent) {
-               dprintf("imsm: mark '%s' (%llu)\n",
-                       consistent ? "clean" : "dirty", a->resync_start);
+               dprintf("imsm: mark '%s'\n", consistent ? "clean" : "dirty");
                if (consistent)
                        dev->vol.dirty = 0;
                else