]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
FIX: imsm: Do not change serial if disk failed
authorKrzysztof Wojcik <krzysztof.wojcik@intel.com>
Wed, 23 Mar 2011 23:15:01 +0000 (10:15 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 23 Mar 2011 23:15:01 +0000 (10:15 +1100)
This patch rollback one change connected with mdadm-OROM
compatibility:
adding ':0' at the end of disk serial number if disk is
detected as failed.
Current mdadm's implementation does not distinguish two
cases when disk is marked as failed:
1. If disk is really failed- disconnected, broken
2. Just marked as failed by mdadm- using "-f" option

Second case is not yet fully handled and compatible with
IMSM standard.
Changing serial number of existing, operational disk causes
problems in "thunderdome" and "load_super" functions that use
serial numbers to disks comparisons and searching.
The change must be recalled until full support will be
developed.

Signed-off-by: Krzysztof Wojcik <krzysztof.wojcik@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
super-intel.c

index 2b41e086bf19d73c4d240160ff106cb3ce47b501..5f5f0d99263e7eb864c4450b1fb465781a89f934 100644 (file)
@@ -5218,8 +5218,6 @@ static int mark_failure(struct imsm_dev *dev, struct imsm_disk *disk, int idx)
        __u32 ord;
        int slot;
        struct imsm_map *map;
-       char buf[MAX_RAID_SERIAL_LEN+3];
-       unsigned int len, shift = 0;
 
        /* new failures are always set in map[0] */
        map = get_imsm_map(dev, 0);
@@ -5232,11 +5230,6 @@ static int mark_failure(struct imsm_dev *dev, struct imsm_disk *disk, int idx)
        if (is_failed(disk) && (ord & IMSM_ORD_REBUILD))
                return 0;
 
-       sprintf(buf, "%s:0", disk->serial);
-       if ((len = strlen(buf)) >= MAX_RAID_SERIAL_LEN)
-               shift = len - MAX_RAID_SERIAL_LEN + 1;
-       strncpy((char *)disk->serial, &buf[shift], MAX_RAID_SERIAL_LEN);
-
        disk->status |= FAILED_DISK;
        set_imsm_ord_tbl_ent(map, slot, idx | IMSM_ORD_REBUILD);
        if (map->failed_disk_num == 0xff)