Bug#587550: mdadm: "--manage --remove faulty" does not remove all faulty disks
Jim Paris
jim at jtan.com
Tue Jun 29 18:24:07 UTC 2010
Package: mdadm
Version: 3.1.2-2
Severity: normal
Hi,
Here is an array with four faulty spares:
# mdadm --detail /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Fri Sep 22 06:18:01 2006
Raid Level : raid1
Array Size : 128384 (125.40 MiB 131.47 MB)
Used Dev Size : 128384 (125.40 MiB 131.47 MB)
Raid Devices : 6
Total Devices : 10
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Tue Jun 29 14:01:07 2010
State : clean, degraded
Active Devices : 2
Working Devices : 6
Failed Devices : 4
Spare Devices : 4
UUID : dece84f3:a8f8be71:ea9d9fee:21fd5f90
Events : 0.1770
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 1 1 active sync /dev/sda1
9 8 145 2 spare rebuilding /dev/sdj1
3 0 0 3 removed
4 0 0 4 removed
5 0 0 5 removed
6 8 97 - spare /dev/sdg1
7 8 113 - spare /dev/sdh1
8 8 129 - spare /dev/sdi1
10 8 81 - faulty spare
11 8 65 - faulty spare
12 8 49 - faulty spare
13 8 33 - faulty spare
To remove these spares, I used --remove faulty, but I had to run it
three times before they were all removed:
# mdadm --manage /dev/md0 --remove faulty
mdadm: hot removed 8:81
mdadm: hot removed 8:49
# mdadm --manage /dev/md0 --remove faulty
mdadm: hot removed 8:65
# mdadm --manage /dev/md0 --remove faulty
mdadm: hot removed 8:33
# mdadm --manage /dev/md0 --remove faulty
#
My guess is that in Manage.c:Manage_subdevs, the loops like
for (; j < array.raid_disks + array.nr_disks ; j++) {
are missing disks because the disk numbers are changing as they are
removed, but I didn't have the time to follow the code in detail.
-jim
-- System Information:
Debian Release: 5.0.5
APT prefers stable
APT policy: (990, 'stable'), (80, 'testing'), (50, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.34-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=POSIX, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages mdadm depends on:
ii debconf 1.5.24 Debian configuration management sy
ii libc6 2.10.2-5 Embedded GNU C Library: Shared lib
ii lsb-base 3.2-20 Linux Standard Base 3.2 init scrip
ii makedev 2.3.1-88 creates device files in /dev
ii udev 157-1 /dev/ and hotplug management daemo
Versions of packages mdadm recommends:
ii module-init-tools 3.4-1 tools for managing Linux kernel mo
ii sendmail-bin [mail-trans 8.14.3-5+lenny1 powerful, efficient, and scalable
mdadm suggests no packages.
-- debconf information:
* mdadm/autostart: true
* mdadm/initrdstart: /dev/md1
mdadm/initrdstart_notinconf: false
mdadm/initrdstart_msg_errexist:
mdadm/initrdstart_msg_intro:
mdadm/initrdstart_msg_errblock:
* mdadm/warning:
* mdadm/start_daemon: true
* mdadm/mail_to: jim at jtan.com
mdadm/initrdstart_msg_errmd:
mdadm/initrdstart_msg_errconf:
* mdadm/autocheck: true
More information about the pkg-mdadm-devel
mailing list