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