[thirdparty/mdadm.git] / ChangeLog
1Changes Prior to this release
2 - Round off MB/GiB etc values instead of round down.
3 - Add --sparc2.2 option to examine to shift superblock around
4 and --sparc2.2update to rewrite the superblock
6Changes Prior to 1.0.0 release
7 - Allow --config with Misc mode (for --examine --scan)
8 - Add $(CXFLAGS) to end of CFLAGS in makefile
9 - When making an N disk raid5 array, the Nth drive
10 is moved to the end of the array as a spare rather than
11 being shifted up one place. This means that when the
12 kernel builds onto the last spare and inserts it,
13 the devices will be in the expected order.
14 - Man page improvements
15Changes Prior to 0.8.2 release
16 - Correct spelling of persist[ae]nce/persist[ae]nt.
17 - Change "disk" to "device" in options and config file
18 - convert array size to "long long" *before* shift-left in -D and -Q
20Changes Prior to 0.8.1 release
21 - Add "INSTALL" file.
22 - Fix some "i" variables that were not being set properly
23 - Initialise minsize and maxsize so that compilers don't complain.
24 - Tidy up Makefile and mdadm.spec installations
25 - Add "multipath" to documentation of valid levels
27Changes Prior to 0.8 release
28 - Fix another bug in Assemble.c due to confusing 'i' with 'j'
29 - Minimal, untested, support for multipath
30 - re-write of argument parsing to have more coherent modes,
31 - add --query,-Q option
32 - Update mdadm.8 to reflect arg processing change and --query
33 - Change "long" to "unsigned long" for device sizes
34 - Handle "mailaddr" and "program" lines in config file for follow/scan mode.
35 - --follow --scan will exit if no program or mail found
36 - Add MAILADDR and PROGRAM to mdadm.conf-example
37 - Spell check man pages
38 - consistently use "component devices" instead of "subdevices"
39 - Make -Wall -Werror really work and fix lots of errors.
40 - --detail and --stop can have --scan which chooses devices from /proc/mdstat
41 - --monitor detects 20% changes in resync, failed spares,
42 disappearing arrays,
43 - --monitor --scan will automatically add any devices found in /proc/mdstat
44 - --monitor will move spares between arrays with same spare-group if necessary
45 - Documentation for Monitor Mode
46 - --query notes if the array containing the given device is active or not
47 - Finished md.4 man page.
49Changes Prior to 0.7.2 release
50 - mdadm.spec updates and ifdef BLKGETSIZE64 from Luca Berra --
51 - more mdadm.spec updates from Gregory Leblanc <>
52 - make directory for mdadm.conf configurable in Makefile
53 - Finished mdadm.conf.5. Removed details of conf file from
54 mdadm.8 leaving a reference to mdadm.conf.5.
55 - Fix bug in Assemble.c, thanks to Junaid Rizvi <>
56 - Get --assemble --force to make sure old major/minor numbers are
57 consistant, as md.c worries about this :-(
60Changes Prior to 0.7.1 release
61 - update mdadm.spec
62 - use BLKGETSIZE64 if available for array size
63 - give human readable as GiB/MiB and GB and MB, with 2 decimal point precision
64 - Only warn about size variation for raid1/4/5.
65 - Started md.4 man page
66 - Started mdadm.conf.5 man page
68Changes Prior to 0.7 release
70 - Fix makefile to install binary at /sbin and not /sbin/sbin
71 Also install man page.
72 - Add --zero-superblock based on --destroywithextremeprejudice
73 from Dale Stephenson <>
74 - change name to mdadm. It is palandromic, and much nicer to pronouce.
76Changes Prior to 0.6 release
9a9dab36 78 - Remove the limit on the number of device names that can be
79 given on the command line.
80 - Fix bug in --assemble --force where it would only update a
81 single superblock.
82 - Fix bogus printing of big numbers not being block devices
83 when given names of devices that don't exist.
84 - When --assemble --force, consider superblocks with an event
85 count that is 1 behind as out-of-date. Normally they are
86 considered up-to-date (as the kernel assumes this too).
87 - When marking drives as not-failed in the superblock,
88 we also mark them as ACTIVE and SYNC.
89 - Don't start arrays for which not all drives are available unless:
90 --scan which implies that all drives were found automatically
91 --run which means the user knows what they want
92 --force which means that we are fixing something broken
93 - Make sure all device numbers passed as 3rd arg of ioctl
94 are passed as unsigned lock, so that it works on SPARC
95 - If HOT_ADD_DISK failes for -a, then only try ADD_NEW_DISK
96 if we cannot read from the array, i.e. if the array is
97 not started yet.
98 - man page update
99 - Taught Examine to handle --scan. It examines all devices listed
100 on DEVICE lines in the config file.
101 - Added --brief (-b) flag for Examine and Detail to print out
102 and mdctl.conf compatible description with uuid=, level=,
103 disks= and - for Examine - devices=
104 --examine --brief collects all devices the make the one array and
105 list them as one entry.
106 - Added level= and disks= options to ARRAY lines in config files
107 so --brief output could be used as-is.
108 - Make parity style ({left,right}-{,a}symmetric) consistantly use -,
109 never _.
110 - Add "Array Size" to --detail output
111 - Change "Size" to "Device Size" and exclude from Detail of arrays
112 that do not have a consistent device size.
113 - Add Human readable MiB or GiB value on size lines of Detail and Examine
114 - --assemble --scan doesn't complain about active drives
115 - require number of spares given in -x to be listed.
116 - Made --build actually work.
117Changes Prior to 0.5 release
119 --assemble:
120 spare drives are handled properly.
122 --force can be used to recover from 2-drive failures on RAID5
123 If you belive that /dev/hda1 /dev/hdb1 /dev/hdc1 /dev/hdd1 should
124 make a raid5 array, but it has experienced multiple failures and
125 wont start, then
127 mdctl --assemble --force /dev/md0 /dev/hd[abcd]1
129 Should update the superblock on the newest failed drive and
130 restart the array in degraded mode. You should then remove the
131 remaining failed drive and re-add it (if you are happy that it
132 might work).
134 Ofcourse whenever you have a 2-drive failure, you have a risk
135 of corruption in data that hasn't be changed for a long time. So
136 this doesn't give you your array back all nice and happy, but it
137 does allow you to recover data that might not be corrupt.
139 More flexibility in identifying a RAID array in the mdctl.conf
140 e.g.
141 array /dev/md4 super-minor=4
143 assembles /dev/md4 from all devices found that have a raid
144 superblock that says the minor number of the array is 4.
145 If the blocks with the right minor number do not all have the
146 same UUID, an error is flags and no assembly happens.
148 array /dev/md3 devices=/dev/hd[abc]2
150 Assembles /dev/md3 drom /dev/hda2 /dev/hdb2 and/dev/hdc2. All
151 devices must exist and have raid superblock with the same uuid.
153 If two identity specifiers are used, only devices that match all
154 of them are considered, so
156 array /dev/md2 devices=/dev/hd?2 super-minor=2
158 will assemble /dev/md2 using all /dev/hd?2 devices which have a
159 raid superblock with minor number 2.
161 --create:
162 When listing devices for --create, the word "missing" can be
163 used to indicate that the respective slot does not have a
164 working drive currently. This is similar to the "failed-disk"
165 directive in mkraid/raidtab.
166 e.g.
167 mdctl --create --level=5 -raid-disks=4 --spare-disks=2
168 /dev/md0 /dev/sda /dev/sdb missing /dev/sdc /dev/sdd /dev/sde
170 will create a raid5 array with the third slot empty, and two
171 spares.
173 By default, raid5 arrays are created with the last slot empty
174 and drive listed for the last slot added as a spare. If a
175 "missing" slot is given, or if --force is given, then --create
176 does exactly what you ask and doesn't try to be clever.
179 --follow / --monitor:
181 This is a new mode. I couldn't stop my self from picking a name
182 starting with F (as current modes start A,B,C,D,E) but I
183 relented and provided an alternate name that is somewhat more
184 meaningful.
186 In this mode, mdctl does not exit, but runs continuously and
187 periodically polls all the md devices to see if they have had
188 any interested state change.
189 The changes that it currently notices are:
190 Fail - an active disc fails
191 FailSpare - a spare, that was presumably being build, fails
192 ActiveSpare - a spare becomes active, presumably after a rebuild.
194 Options:
195 --mail mailaddress - send Email on any Fail* event
196 --program program - run the program on any event.
197 Args are: eventname mddevice subdevice(if-known)
198 --delay seconds - change from the default 60second pause
199 between polls.
201 I plan to add functionality to this mode to allow sharing of
202 spare drives. If an array is marks "spare-group=fred", and it
203 has a failed drive and no spares, and if some other array is
204 also "spare-group=fred" and it has no failed drives, but does
205 have a spare drive that is big enough, the spare will be moved
206 to the first array.
208 I also have the idea of adding a --grow mode which will re-organise
209 the data on an N disk raid0/4/5 array to be on an N+M disk array.
210 I have no concrete plans for this though.
212 I got rid of the "v" in the archive file name, and include the
213 version number in the directory created by the archive.
215 There is now a man page and mdctl.spec (for rpm) thanks to
216 Danilo Godec <>.
218 Ofcourse, the man page is now out of date and despite being based on
219 the --help output, is not wholy correct. After I get --follow
220 working properly, I plan to revise the various documentation and/or
221 the code to make sure the two match.