X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=ChangeLog;h=a3bf7007d8394a5bae5a3ae2267fe4030bf218da;hp=c1e1b7da8b0b00a92a1f1289c5e59c7d150802ba;hb=67a02d520085b01a1b9e6ea59fb30e79c5649c9c;hpb=60248f743376a69e155f2a48cb77b89b281602ff diff --git a/ChangeLog b/ChangeLog index c1e1b7da..a3bf7007 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,618 +1,306 @@ -Changes Prior to 2.5.3 release - - Document v0.91 superblocks in md.4 - - Make GPL explicit in man pages. - - Fix recent breakage of starting degraded arrays. - - Tidyup automatic name choice for v-1 arrays: - /dev/md_d0 now becomes '0', not '_d0'. - -Changes Prior to 2.5.2 release - - Fix problem with compiling with gcc-2 compilers - - Fix compile problem of post-incrmenting a variable in a macro arg. - - Stop map_dev from returning [0:0], as that breaks things. - - Add 'Array Slot' line to --examine for version-1 superblocks - to make it a bit easier to see what is happening. - - Work around bug in --add handling for version-1 superblocks - in 2.6.17 (and prior). - - Make -assemble a bit more resilient to finding strange - information in superblocks. - - Don't claim newly added spares are InSync!! (don't know why that - code was ever in there) - - Work better when no 'ftw' is available, and check to see - if current uclibc provides ftw. - - Never use /etc/mdadm.conf if --config file is given (previously - some code used one, some used the other). - -Changes Prior to 2.5.1 release - - Various fixes for gcc warnings - - uclibc warnings - - Makefile improvements for static linking/intalling - - Makefile uninstall target - - Really fix return status of --examine - - Typos - - Byteorder stuff (again) - - Don't try to create devices with --manage or --grow - - allow default metadata (superblock) type to be specified - in mdadm.conf - - Get --stop to list devices stopped but honour --quiet - - remove libssl dependency - - Avoid some misdetection of overlapping partitions - - Fix memory leak in --monitor mode - -Changes Prior to 2.5 release - - Support 'mailfrom' line in mdadm.conf so the From: line in alert - emails can be explicitly set. - - Arrange that SparesMissing (which is similar in import to - DegradedArray) generates an Email. - - Assume "DEVICE partitions" if no DEVICE line is given. - - Support new 'offset' layout for raid10. - - When creating a bitmap file, choose a chunksize to limit number - of bitmap chunks to 2 million. More than this can cause kmalloc - failure. - - New 'CREATE' line in mdadm.conf for defaults such as owner, group, - mode and auto-flag - - --detail checks if array has been started or not and includes that - in report. - - When using --update=uuid on an array with a bitmap, update the - bitmap's uuid too. - - Add a copy of /proc/mdstat to the mail message sent by mdadm - --monitor. - - New flag --no-degraded to avoid starting arrays if there are - fewer devices available than last time the array was started. - This is only needed with --scan, as with --scan, that behaviour - is the default. - - Support for 'homehost' concept. This is a fairly major update. - It includes a configfile option and a command line option for - specifying a homehost, records that host in the superblock, - and reports the homehost where possible. - - Support for Auto Assembly. "mdadm -As" will, if provided with - the name of a homehost, try to assemble all arrays it can find - that were created for that homehost. See man pages for more details. - -Changes Prior to 2.4.1 release - - Honour --write-mostly when adding to an array without persistent - superblocks. - - Fix alignment problem in version-1 superblocks. - NOTE: This is an incompatable change affecting raid5 reshape. - If you want to reshape a raid5 using version-1 superblocks, - use 2.6.17-rc2 or later, and mdadm-2.4.1 or later. - -Changes Prior to 2.4 release - - Rewrite 'reshape' support including performing a backup - of the critical region for a raid5 growth, and restoring that - backup after a crash. - - Put a 'canary' at each end of the backup so a corruption - can be more easily detected. - - Remove useless 'ident' arguement from ->getinfo_super method. - - Support --backup-file for backing-up critical section during - growth. - - Erase old superblocks (of different versions) when creating new - array. - - Allow --monitor to work with arrays with >28 devices - - Report reshape information in --detail - - Handle symlinks in /dev better - - Fix mess in --detail output which a device is missing. - - Manpage tidyup - - Support 'bitmap=' in mdadm.conf for auto-assembling arrays with - write-intent bitmaps in separate files. - - Updates to md.4 man page including section on RESTRIPING and SYSFS - -Changes Prior to 2.3.1 release - - Fixed -O2 compile so I could make and RPM. - - Type cast number to be printed %llu so it compiles on 64bit - machines. (Thanks Luca). - - Stop using asm/byteorder.h - to make Redhat happy :-( - - Require bitmap files to have a '/' in their name. - - Error-check a few syscalls - code from SuSE package. - -Changes Prior to 2.3 release - - Try /etc/mdadm/mdadm.conf if /etc/mdadm.conf doesn't exist. - This provided compatability for Debian. - - Fixed for version-1 superblock: - report chunksize for raid6 and raid10 - make sure device size used is a multiple of chunksize - - Fix "--assemble --scan" crash. - - Fix completely failure to create array on ppc64 - - Fix memcmp in place of memcpy - - A few minor improvements to online help - - Clean up usage of 'long long' for used-size of devices, so - that it is possible to create a raid1 of 7TB devices! - - Make internal bitmaps work on 7TB raid1 arrays. - - Provide error message if --examine doesn't find any superblock. - - Report 'reshape' status in --examine - this depends on kernel - patches that are not yet finalised. - - Report bitmap status in --detail and --examine - - Default to v1 superblocks instead of v0.90 if the array - is too big for 0.90 to handle. - - Sort the output of "mdadm --detail --scan" so that it is - in a suitable order for assembling arrays. i.e. components come - before an array that they are part of. - - Print size of large reiserfs array properly went warning of - possible confilcts. - -Changes Prior to 2.2 release - - Assorted bug fixes - - Support write-intent-bitmaps on raid10 - - Support little-endian (Rather than hostendian) bitmaps. - - Return correct error code from 'mdadm -S' - - Remove extra blank line from 'mdadm -Eb' output. - - Improve option parsing so that -a and -b do not have - optional arguements: the arg is either required or not - depending on context. - - Allow scanning of devices listed in /proc/partitions even - if they don't appear in /dev. - - Support --assume-clean in --create mode as well as --build - - Add support for --monitor to report to syslog: -y or --syslog. - Thanks to Ross Vandegrift - - --monitor now reports which device failed in a 'Fail' message - This broke with 2.6 - - Improve chance of array starting properly after a crash. - mdadm was insisting the event numbers were identical, but this - isn't needed, and is a problem if the crash was while the metadata - was being updated. - - Support --update==uuid - - Added README.initramfs and mkinitramfs to help people use an - initram for starting md arrays at boot. - -Changes Prior to 2.1 release - - Fix assembling of raid10 array when devices are missing. - mdadm now correctly detects if a array is workable or not - depending on which devices are present, and so will correctly - handle "--assemble --force" if multiple devices have failed. - - Report raid10 layout in --examine output. - - Fix assembling of arrays that use the version-1 superblock and - have spares. Previously the spares would be ignored. - - Fix bug so that multiple drives can be re-added at once. - - Fix problem with hot-adding a bitmap to version-1-superblock - arrays. - -Changes Prior to 2.0 - - Support assembling from byte-swapped superblocks - metadata type "0.swap" and --update=byteorder - - write-mostly and write-behind support for raid1. - - Support --name= and 'name=' config entry for identifying - arrays be name. - - RAID10 in man pages. - - Lot of minor manpage updates - -Changes Prior to 2.0-devel-3 release - - Assorted fixes for multiple bugs... - - Add test suite - -Changes Prior to 1.12.0 release - Several of these are backported from the Debian package - - Don't use 'lstat' to check for blockdevices, use stat. - - Document --size=max option for --grow - - Document SparesMissing event and DeviceDisappeared/WrongLevel - - --stop --scan repeatly cycles until no more progress can be made - so that stack devices are stopped properly - - Minor type rationalisation for ident->uuid - now always 'int[]' - - Fix type in online help for --grow (was -F, now -G) - - Allow --auto command line option to set default auto= - value when running "--assemble --scan". Previously - --auto was ignored if --scan was given - - Fix a few type casts - - Fix parsing of /dev/md/N in is_standard - - Fix rounding errors in human_size() - - Fix silly example in mdadm.conf-examples - - When finding a /dev name for a device, prefer shorter names - - Suppress listing of devices= in --brief output of -D or -E, - unless -v is given (-vv gives the old behaviour with -Dsv). - This is because the device list can change and so is not a - stable aspect of the array - - Allow --force with --grow so '-Gfn1' works (on raid1) - - Replace sprintf calls with snprintf (to quiet diet-libc) - - Add man page for mdassemble - - Fix compilation with tinyc - -Changes Prior to 1.11.0 release - - Fix embarassing bug which causes --add to always fail. - -Changes Prior to 1.10.0 release - - Fix bug with --config=partitions - - Open sub-devices with O_EXCL to detect if already in use - - Make sure superblock updates are flushed directly to disk. - -Changes Prior to 2.0-devel-1 release - - Support for version-1 superblock. See --metadata option. - - Support for bitmap based intent logging. - - Minor fixes. - -Changes Prior to 1.9.0 release - - Fix rpm build problem (stray %) - - Minor manpage updates - - Change "dirty" status to "active" as it was confusing people. - - --assemble --auto recognises 'standard' name and insists on using - the appropriate major/minor number for them. - - Remove underscore from partition names, so partitions of - "foo" are "foo1", "foo2" etc (unchanged) and partitions of - "f00" are "f00p1", "f00p2" etc rather than "f00_p1"... - - Use "major", "minor", "makedev" macros instead of - "MAJOR", "MINOR", "MKDEV" so that large device numbers work - on 2.6 (providing you have glibc 2.3.3 or later). - - Add some missing closes of open file descriptors. - - Reread /proc/partition for every array assembled when using - it to find devices, rather than only once. - - Make "mdadm -Ss" stop stacked devices properly, by reversing the - order in which arrays are stopped. - - Improve some error messages. - - Allow device name to appear before first option, so e.g. - mdadm /dev/md0 -A /dev/sd[ab] - works. - - Assume '-Q' if just a device is given, rather than being silent. - - Change "dirty" status to "active" as it was confusing people. - -Changes Prior to 1.8.0 release - - Makefile cleanup from Luca Berra - - --pid-file (-i) to set a pid file to use with --monitor --daemonise - - Fix typo in mdadm man page - - Fix coredump when "-s" used with no config file present. - - Support new "faulty" personality which can inject synthetic - faults. (Not in kernel.org yet at 1Nov2004) - - Support raid0/linear on devices > 2 Terabytes - - Make sure raid6 resyncs when created with one missing device - -Changes Prior to 1.7.0 release - - Support "--grow --add" to add a device to a linear array, if the - kernel supports it. Not documented yet. - - Restore support for uclibc which was broken recently. - - Several improvements to the output of --detail, including - reporting "resyncing" or "recovering" in the state. - - Close filedescriptor at end of --detail (exit would have closed it - anyway, so this isn't abig deal). - - Report "Sync checkpoint" in --examine output if appropriate. - - Add --update=resync for --assemble mode to for a resync when the - array is assembled. - - Add support for "raid10", which is under development in 2.6. - Not documented yet. - - --monitor now reads spare-group and spares info from config file - even when names of arrays to scan are given on the command line - -Changes Prior to 1.6.0 release - - Device name given in -Eb is determined by examining /dev rather - than assuming /dev/md%d - - Fix bug in --monitor where an array could be held open an so - could not be stopped without killing mdadm. - - Add --grow mode. Currently only --size and --raid-disks can be - changed. Both require kernel support which, at the time of - writing, is not in a release kernel yet. - - Don't print out "errors" or "no-errors" in -D and -E, as the bit - is never set or used. - - Use md event notification in 2.6.??? to make --monitor mode - respond instantly to events. - - Add --auto= option and auto= configfile entry to tell mdadm to - create device files as needed. This is particularly useful - with partitioned arrays where the major device number can change. - - When generating --brief listing, if the standard name doesn't - exist, search /dev for one rather than using a temp name. - - Allow --build to build raid1 and multipath arrays. - - Add "--assume-clean" for Create and Build, particularly for raid1 - Note: this is dangerous. Only use it if you are certain. - - Fix bug so that Rebuild status monitoring works again. - - Add "degraded" and "recovering" options to the "Status:" - entry for --detail - -Changes Prior to 1.5.0 release - - new commands "mdassemble" which is a stripped-down equivalent of - "mdadm -As", that can be compiled with dietlibc. - Thanks to Luca Berra . - It can be using in an initramfs or initrd. - - Fix compiling error with BLKGETSIZE64 and some signed/unsigned - comparison warnings. - - Add Rebuild Status (% complete) to --detail output. - - Support "--monitor --test" which will generate a test alert - for each array once, to test notification paths. - - Generate RebuildFinished event when rebuild finishes. - - Support for raid6 as found in 2.6.2 - thanks to - H. Peter Anvin - - Support partitioned md arrays with a different major number and - naming scheme (md_dX in /proc/mdstat, /dev/md/dXpY in /dev). - -Changes Prior to 1.4.0 release - - Document fact that creating a raid5 array really creates a - degraded array with a spare. - - Add "spares=" tag to config file and generate it wit --detail and - --examine - - Add "SparesMissing" event when --monitor first sees an array and - it doesn't have the enough spare devices. - - Add --update=summaries for --assemble to update summary - information in superblock, and correct other inconsistancies in - the superblock. - - Add --test option to --detail to set a meaningful exit status. - -Changes Prior to 1.3.0 release - - Make 'size' and unsigned long in Create to allow creation of - larger arrays. - - Explicitly flag spare devices as 'spare' in --detail and --examine - output. Previously they simply had no flags lists. - - Make MailCmd (for monitor) configurable in Makefile, and default - to "/usr/sbin/sendmail -t". Also split out the warning related - flags into CWFLAGS for easier build configurability. - - Minor bugfix in Manage code. - - --monitor now notices and reports degraded arrays at startup using - "DegradedArray" event, and also has a --oneshot option to only - report DegradedArrays, and then exit. - - Small man-page clarification w.r.t. raid levels and raid4 in - particular. - - Disallow creation of arrays with only one device as this is - probably a mistake. --force will override this check. - - Correct some misleading documentation in the "mdadm --create --help" - message. - - Ignore chunksize if raid1 or multipath. - - Explicit statement in man page that raid-disks cannot be changed - after array is created. - - Improve message when attempting to start an array with - insufficient devices. Instead of required the array to be full, - we only require it has as many active devices as last time. - -Changes Prior to 1.2.0 release - - Fix bug where --daemonise required an argument. - - In --assemble --verbose, print appropriate message if device is - not in devices= list - - Updated mdadm.conf.5 to reflect fact that device= takes wildcards - - Typos: componenet -> component - - Reduce size of "--help" message put excess into "--help-options" - - Fix bug introduced when MD_SB_DISKS dependancy removed, and which - caused spares not be assembled properly. - - Print appropriate message if --monitor --scan decides not to - monitor anything. -Changes Prior to 1.1.0 release - - add --deamonise flag for --monitor - forks and prints pid to stdout - - Fix bug so we REALLY clear dirty flag with -Af - - -Db now prints a 'devices=' word for each array. - - "mdadm -A /dev/md0" will get info from configfile, even without scan - - When assembling multipath arrays, ignore devices which are flagged - as having errors. - - take --super-minor=dev to mean "use the minor number of the mddev - being assembled. - - take --config=none to mean "completely ignore config file" - - Make --monitor require --scan or a device list. -Changes Prior to 1.0.9 release - - Documentation updates including kernel parameters documented - in md.4 - - --assemble --force for raid4/5 will mark clean, needed for 2.5 - - --detail prints out the events counter as well - - flush device before reading superblock to be sure to get - current data - - added mdadm.static target to makefile for static linking - - --monitor was ignoring /dev/md0 due to off-by-one error - - Fix assorted typos - - Fix printing of Gibibytes - calc was wrong. - - Fix printing of Array Size in --detail when very big. - - --monitor no longer tries to work for raid0 or linear as these - have nothing to be monitored. - - The word 'partitions' on a DEVICE line will cause all partitions - listed in /proc/partitions to be considered - - If the config file is called 'partitions' then it will be treated - as though it contained exactly 'device partitions' so e.g. - mdadm -Ebsc partitions - will find all raid partitions easily. - - successfully assemble multipath devices by ignoring raid_disk - value from superblock (it is always the same). - - --assemble not tied to MD_SB_DISKS limit quite so much - - Support compiling with tcc - - Support compiling with uclibc - just skip scan of /dev - - Add --update= option for Assemble mode. Either sparc2.2 - or super-minor updates are possible. See mdadm.8 - -Changes Prior to 1.0.1 release - - Round off MB/GiB etc values instead of round down. - - Add --sparc2.2 option to examine to shift superblock around - and --sparc2.2update to rewrite the superblock - - Fix assorted typos in online help - -Changes Prior to 1.0.0 release - - Allow --config with Misc mode (for --examine --scan) - - Add $(CXFLAGS) to end of CFLAGS in makefile - - When making an N disk raid5 array, the Nth drive - is moved to the end of the array as a spare rather than - being shifted up one place. This means that when the - kernel builds onto the last spare and inserts it, - the devices will be in the expected order. - - Man page improvements -Changes Prior to 0.8.2 release - - Correct spelling of persist[ae]nce/persist[ae]nt. - - Change "disk" to "device" in options and config file - - convert array size to "long long" *before* shift-left in -D and -Q - -Changes Prior to 0.8.1 release - - Add "INSTALL" file. - - Fix some "i" variables that were not being set properly - - Initialise minsize and maxsize so that compilers don't complain. - - Tidy up Makefile and mdadm.spec installations - - Add "multipath" to documentation of valid levels - -Changes Prior to 0.8 release - - Fix another bug in Assemble.c due to confusing 'i' with 'j' - - Minimal, untested, support for multipath - - re-write of argument parsing to have more coherent modes, - - add --query,-Q option - - Update mdadm.8 to reflect arg processing change and --query - - Change "long" to "unsigned long" for device sizes - - Handle "mailaddr" and "program" lines in config file for follow/scan mode. - - --follow --scan will exit if no program or mail found - - Add MAILADDR and PROGRAM to mdadm.conf-example - - Spell check man pages - - consistently use "component devices" instead of "subdevices" - - Make -Wall -Werror really work and fix lots of errors. - - --detail and --stop can have --scan which chooses devices from /proc/mdstat - - --monitor detects 20% changes in resync, failed spares, - disappearing arrays, - - --monitor --scan will automatically add any devices found in /proc/mdstat - - --monitor will move spares between arrays with same spare-group if necessary - - Documentation for Monitor Mode - - --query notes if the array containing the given device is active or not - - Finished md.4 man page. - -Changes Prior to 0.7.2 release - - mdadm.spec updates and ifdef BLKGETSIZE64 from Luca Berra -- bluca@comedia.it - - more mdadm.spec updates from Gregory Leblanc - - make directory for mdadm.conf configurable in Makefile - - Finished mdadm.conf.5. Removed details of conf file from - mdadm.8 leaving a reference to mdadm.conf.5. - - Fix bug in Assemble.c, thanks to Junaid Rizvi - - Get --assemble --force to make sure old major/minor numbers are - consistant, as md.c worries about this :-( - - -Changes Prior to 0.7.1 release - - update mdadm.spec - - use BLKGETSIZE64 if available for array size - - give human readable as GiB/MiB and GB and MB, with 2 decimal point precision - - Only warn about size variation for raid1/4/5. - - Started md.4 man page - - Started mdadm.conf.5 man page - -Changes Prior to 0.7 release - - - Fix makefile to install binary at /sbin and not /sbin/sbin - Also install man page. - - Add --zero-superblock based on --destroywithextremeprejudice - from Dale Stephenson - - change name to mdadm. It is palandromic, and much nicer to pronouce. - -Changes Prior to 0.6 release - - - Remove the limit on the number of device names that can be - given on the command line. - - Fix bug in --assemble --force where it would only update a - single superblock. - - Fix bogus printing of big numbers not being block devices - when given names of devices that don't exist. - - When --assemble --force, consider superblocks with an event - count that is 1 behind as out-of-date. Normally they are - considered up-to-date (as the kernel assumes this too). - - When marking drives as not-failed in the superblock, - we also mark them as ACTIVE and SYNC. - - Don't start arrays for which not all drives are available unless: - --scan which implies that all drives were found automatically - --run which means the user knows what they want - --force which means that we are fixing something broken - - Make sure all device numbers passed as 3rd arg of ioctl - are passed as unsigned lock, so that it works on SPARC - - If HOT_ADD_DISK failes for -a, then only try ADD_NEW_DISK - if we cannot read from the array, i.e. if the array is - not started yet. - - man page update - - Taught Examine to handle --scan. It examines all devices listed - on DEVICE lines in the config file. - - Added --brief (-b) flag for Examine and Detail to print out - and mdctl.conf compatible description with uuid=, level=, - disks= and - for Examine - devices= - --examine --brief collects all devices the make the one array and - list them as one entry. - - Added level= and disks= options to ARRAY lines in config files - so --brief output could be used as-is. - - Make parity style ({left,right}-{,a}symmetric) consistantly use -, - never _. - - Add "Array Size" to --detail output - - Change "Size" to "Device Size" and exclude from Detail of arrays - that do not have a consistent device size. - - Add Human readable MiB or GiB value on size lines of Detail and Examine - - --assemble --scan doesn't complain about active drives - - require number of spares given in -x to be listed. - - Made --build actually work. -Changes Prior to 0.5 release - - --assemble: - spare drives are handled properly. - - --force can be used to recover from 2-drive failures on RAID5 - If you belive that /dev/hda1 /dev/hdb1 /dev/hdc1 /dev/hdd1 should - make a raid5 array, but it has experienced multiple failures and - wont start, then - - mdctl --assemble --force /dev/md0 /dev/hd[abcd]1 - - Should update the superblock on the newest failed drive and - restart the array in degraded mode. You should then remove the - remaining failed drive and re-add it (if you are happy that it - might work). - - Ofcourse whenever you have a 2-drive failure, you have a risk - of corruption in data that hasn't be changed for a long time. So - this doesn't give you your array back all nice and happy, but it - does allow you to recover data that might not be corrupt. - - More flexibility in identifying a RAID array in the mdctl.conf - e.g. - array /dev/md4 super-minor=4 - - assembles /dev/md4 from all devices found that have a raid - superblock that says the minor number of the array is 4. - If the blocks with the right minor number do not all have the - same UUID, an error is flags and no assembly happens. - - array /dev/md3 devices=/dev/hd[abc]2 - - Assembles /dev/md3 drom /dev/hda2 /dev/hdb2 and/dev/hdc2. All - devices must exist and have raid superblock with the same uuid. - - If two identity specifiers are used, only devices that match all - of them are considered, so - - array /dev/md2 devices=/dev/hd?2 super-minor=2 - - will assemble /dev/md2 using all /dev/hd?2 devices which have a - raid superblock with minor number 2. - - --create: - When listing devices for --create, the word "missing" can be - used to indicate that the respective slot does not have a - working drive currently. This is similar to the "failed-disk" - directive in mkraid/raidtab. - e.g. - mdctl --create --level=5 -raid-disks=4 --spare-disks=2 - /dev/md0 /dev/sda /dev/sdb missing /dev/sdc /dev/sdd /dev/sde - - will create a raid5 array with the third slot empty, and two - spares. - - By default, raid5 arrays are created with the last slot empty - and drive listed for the last slot added as a spare. If a - "missing" slot is given, or if --force is given, then --create - does exactly what you ask and doesn't try to be clever. - - - --follow / --monitor: - - This is a new mode. I couldn't stop my self from picking a name - starting with F (as current modes start A,B,C,D,E) but I - relented and provided an alternate name that is somewhat more - meaningful. - - In this mode, mdctl does not exit, but runs continuously and - periodically polls all the md devices to see if they have had - any interested state change. - The changes that it currently notices are: - Fail - an active disc fails - FailSpare - a spare, that was presumably being build, fails - ActiveSpare - a spare becomes active, presumably after a rebuild. - - Options: - --mail mailaddress - send Email on any Fail* event - --program program - run the program on any event. - Args are: eventname mddevice subdevice(if-known) - --delay seconds - change from the default 60second pause - between polls. - - I plan to add functionality to this mode to allow sharing of - spare drives. If an array is marks "spare-group=fred", and it - has a failed drive and no spares, and if some other array is - also "spare-group=fred" and it has no failed drives, but does - have a spare drive that is big enough, the spare will be moved - to the first array. - - I also have the idea of adding a --grow mode which will re-organise - the data on an N disk raid0/4/5 array to be on an N+M disk array. - I have no concrete plans for this though. - - I got rid of the "v" in the archive file name, and include the - version number in the directory created by the archive. - - There is now a man page and mdctl.spec (for rpm) thanks to - Danilo Godec . - - Ofcourse, the man page is now out of date and despite being based on - the --help output, is not wholy correct. After I get --follow - working properly, I plan to revise the various documentation and/or - the code to make sure the two match. +Please see git logs for detailed change log. +This file just contains highlight. + +Changes Prior to release 3.3 +- Some array reshapes can proceed without needing backup file. + This is done by changing the 'data_offset' so we never need to write + any data back over where it was before. If there is no "head space" + or "tail space" to allow data_offset to change, the old mechanism + with a backup file can still be used. +- RAID10 arrays can be reshaped to change the number of devices, + change the chunk size, or change the layout between 'near' + and 'offset'. + This will always change data_offset, and will fail if there is no + room for data_offset to be moved. +- "--assemble --update=metadata" can convert a 0.90 array to a 1.0 array. +- bad-block-logs are supported (but not heavily tested yet) +- "--assemble --update=revert-reshape" can be used to undo a reshape + that has just been started but isn't really wanted. This is very + new and while it passes basic tests it cannot be guaranteed. +- improved locking between --incremental and --assemble +- uses systemd to run "mdmon" if systemd is configured to do that. +- kernel names of md devices can be non-numeric. e.g. "md_home" rather than + "md0". This will probably confuse lots of other tools, so you need to + echo CREATE names=yes >> /etc/mdadm.conf + or the feature will not be used. (you also need a reasonably new kernel). +- "--stop" can be given a kernel name instead of a device name. i.e + mdadm --stop md4 + will work even if /dev/md4 doesn't exist. +- "--detail --export" has some information about the devices in the array +- --dump and --restore can be used to backup and restore the metadata on an + array. +- Hot-replace is supported with + mdadm /dev/mdX --replace /dev/foo + and + mdadm /dev/mdX --replace /dev/foo --with /dev/bar +- Config file can be a directory in which case all "*.conf" files are + read in lexical order. + Default is to read /etc/mdadm.conf and then /etc/mdadm.conf.d + Thus + echo CREATE name=yes > /etc/mdadm.conf.d/names.conf + will also enable the use of named md devices. + +- Lots of improvements to DDF support including adding support for + RAID10 (thanks Martin Wilck). + +Changes Prior to release 3.2.6 + - There are no real stand-out fixes, just lots of little bits and pieces. + +Changes Prior to release 3.2.5 + - This release primarily fixes a serious regression in 3.2.4. + This regression does *not* cause any risk to data. It simply + means that adding a device with "--add" would sometime fail + when it should not. + + - The fix also includes a couple of minor fixes such as making + the "--layout=preserve" option to "--grow" work again. + + +Changes Prior to release 3.2.4 +"--oneline" log of changes is below. Some notable ones are: + + - --offroot argument to improve interactions between mdmon and initrd + - --prefer argument to select which /dev names to display in some + circumstances. + - relax restructions on when "--add" will be allowed + - Fix bug with adding write-intent-bitmap to active array + - Now defaults to "/run/mdadm" for storing run-time files. + +Changes Prior to release 3.2.3 + - The largest single area of change is support for reshape of Intel + IMSM arrays (OnLine Capacity Explansion and Level Migration). + - Among other fixes, this now has a better chance of surviving if a + device fails during reshape. + +Changes Prior to release 3.2.2 + - reshaping IMSM (Intel metadata) arrays is no longer 'experimental', + it should work properly and be largely compatible with IMSM drivers in + other platforms. + - --assume-clean can be used with --grow --size to avoid resyncing the + new part of the array. This is only support with very new kernels. + - RAID0 arrays can have chunksize which is not a power of 2. This has been + supported in the kernel for a while but is only now supprted by + mdadm. + + - A new tool 'raid6check' is available which can check a RAID6 array, + or part of it, and report which device is most inconsistent with the + others if any stripe is inconsistent. This is still under development + and does not have a man page yet. If anyone tries it out and has any + questions or experience to report, they would be most welcome on + linux-raid@vger.kernel.org. + +Changes Prior to release 3.2.1 + - policy framework + Policy can be expressed for moving spare devices between arrays, and + for how to handle hot-plugged devices. This policy can be different + for devices plugged in to different controllers etc. + This, for example, allows a configuration where when a device is plugged + in it is immediately included in an md array as a hot spare and + possibly starts recovery immediately if an array is degraded. + + - some understanding of mbr and gpt paritition tables + This is primarly to support the new hot-plug support. If a + device is plugged in and policy suggests it should have a partition table, + the partition table will be copied from a suitably similar device, and + then the partitions will hot-plug and can then be added to md arrays. + + - "--incremental --remove" can remember where a device was removed from + so if a device gets plugged back in the same place, special policy applies + to it, allowing it to be included in an array even if a general hotplug + will not be included. + + - enhanced reshape options, including growing a RAID0 by converting to RAID4, + restriping, and converting back. Also convertions between RAID0 and + RAID10 and between RAID1 and RAID10 are possible (with a suitably recent + kernel). + + - spare migration for IMSM arrays. + Spare migration can now work across 'containers' using non-native metadata + and specifically Intel's IMSM arrays support spare migrations. + + - OLCE and level migration for Intel IMSM arrays. + OnLine Capacity Expansion and level migration (e.g. RAID0 -> RAID5) is + supported for Intel Matrix Storage Manager arrays. + This support is currently 'experimental' for technical reasons. It can + be enabled with "export MDADM_EXPERIMENTAL=1" + + - avoid including wayward devices + If you split a RAID1, mount the two halves as two separate degraded RAID1s, + and then later bring the two back together, it is possible that the md + metadata won't properly show that one must over-ride the other. + mdadm now does extra checking to detect this possibilty and avoid + potentially corrupting data. + + - remove any possible confusion between similar options. + e.g. --brief and --bitmap were mapped to 'b' and mdadm wouldn't + notice if one was used where the other was expected. + + - allow K,M,G suffixes on chunk sizes + +Changes Prior to release 3.2 + - By far the most significant change in this release related to the + management of reshaping arrays. This code has been substantially + re-written so that it can work with 'externally managed metadata' - + Intel's IMSM in particular. We now support level migration and + OnLine Capacity Expansion on these arrays. + - Policy framework. + Various policy statements can be made in the mdadm.conf to guide + the behaviour of mdadm, particular with regards to how new devices + are treated by "mdadm -I". + Depending on the 'action' associated with a device (identified by + its 'path') such need devices can be automatically re-added to and + existing array that they previously fell out off, or automatically + added as a spare if they appear to contain no data. + + - mdadm now has a limited understanding of partition tables. This + allows the policy framework to make decisions about partitioned + devices as well. + + - --incremental --remove can be told what --path the device was on, + and this info will be recorded so that another device appearing at + the same physical location can be preferentially added to the same + array (provides the spare-same-slot action policy applied to the + path). + + - A new flags "--invalid-backup" flag is available in --assemble + mode. This can be used to re-assemble an array which was stopping + in the middle of a reshape, and for which the 'backup file' is no + longer available or is corrupted. The array may have some + corruption in it at the point where reshape was up to, but at least + the rest of the array will become available. + + + - Various internal restructuring - more is needed. + +Changes Prior to release 3.1.5 + - Fixes for v1.x metadata on big-endian machines. + - man page improvements + - Improve '--detail --export' when run on partitions of an md array. + - Fix regression with removing 'failed' or 'detached' devices. + - Fixes for "--assemble --force" in various unusual cases. + - Allow '-Y' to mean --export. This was documented but not implemented. + - Various fixed for handling 'ddf' metadata. This is now more reliable + but could benefit from more interoperability testing. + - Correctly list subarrays of a container in "--detail" output. + - Improve checks on whether the requested number of devices is supported + by the metadata - both for --create and --grow. + - Don't remove partitions from a device that is being included in an + array until we are fully committed to including it. + - Allow "--assemble --update=no-bitmap" so an array with a corrupt + bitmap can still be assembled. + - Don't allow --add to succeed if it looks like a "--re-add" is probably + wanted, but cannot succeed. This avoids inadvertently turning + devices into spares when an array is failed. + +Changes Prior to release 3.1.4 + Two fixes related to configs that aren't using udev: + - Don't remove md devices which 'standard' names on --stop + - Allow dev_open to work on read-only /dev + And fixed regressions: + - Allow --incremental to add spares to an array + - Accept --no-degraded as a deprecated option rather than + throwing an error + - Return correct success status when --incrmental assembling + a container which does not yet have enough devices. + - Don't link mdadm with pthreads, only mdmon needs it. + - Fix compiler warning due to bad use of snprintf + +Changes Prior to release 3.1.3 + - mapfile now lives in a fixed location which default to + /dev/.mdadm/map but can be changed at compile time. This + location is choses and most distros provide it during early + boot and preserve it through. As long a /dev exists and is + writable, /dev/.mdadm will be created. + Other files file communication with mdmon live here too. + This fixes a bug reported by Debian and Gentoo users where + udev would spin in early-boot. + - IMSM and DDF metadata will not be recognised on partitions + as they should only be used on whole-disks. + - Various overflows causes by 2G drives have been addressed. + - A subarray of an IMSM contain can now be killed with + --kill-subarray. Also subarrays can be renamed with + --update-subarray + - -If (or --incremental --fail) can be used from udev to + fail and remove from all arrays a device which has been + unplugged from the system. i.e. hot-unplug-support. + - "mdadm /dev/mdX --re-add missing" will look for any device + that looks like it should be a member of /dev/mdX but isn't + and will automatically --re-add it + - Now compile with -Wextra to get extra warnings. + - Lots of minor bug fixes, documentation improvements, etcc + +Changes Prior to release 3.1.2 + - The default metadata has change again (sorry about that). + It is now v1.2 and will hopefully stay that way. It turned + out there with boot-block issues with v1.1 which make it + unsuitable for a default, though in many cases it is still + suitable to use. + - Stopping a container is not permitted when members are still + active + - Add 'homehost' to the valid words for the "AUTO" config file + line. When followed by "-all", this causes mdadm to + auto-assemble any array belonging to this host, but not + auto-assemble anything else. + - Fix some bugs with "--grow --chunksize=" for changing chunksize. + - VAR_RUN can be easily changed at compile time just like ALT_RUN. + This gives distros more flexability in how to manage the + pid and sock files that mdmon needs. + - Various mdmon fixes + - Alway make bitmap 4K-aligned if at all possible. + - If mdadm.conf lists arrays which have inter-dependencies, + the previously had to be listed in the "right" order. Now + any order should work. + - Fix --force assembly of v1.x arrays which are in the process + of recovering. + - Add section on 'scrubbing' to 'md' man page. + - Various command-line-option parsing improvements. + - ... and lots of other bug fixes. + +Changes Prior to release 3.1.1 + - Multiple fixes for new --grow levels including fixes for + serious data corruption problems. + - Change default metadata to v1.1 + - Change default chunk size to 512K + - Change default bitmap chunk size to 64Meg + - When --re-add is used, don't fall back to + --add if --re-add fails as this can destroy data. + +Changes Prior to release 3.1 + - Support --grow to change the layout of RAID4/5/6 + - Support --grow to change the chunksize of raid 4/5/6 + - Support --grow to change level from RAID1 -> RAID5 -> RAID6 and + back. + - Support --grow to reduce the number of devices in RAID4/5/6. + - Support restart of these grow options which assembling an array + which is partially grown. + - Assorted tests of this code, and of different RAID6 layouts. + +Changes Prior to release 3.0.3 + - Improvements for creating arrays giving just a name, like 'foo', + rather than the full '/dev/md/foo'. + - Improvements for assembling member arrays of containers. + - Improvements to test suite + - Add option to change increment for RebuildNN messages reported + by "mdadm --monitor" + - Improvements to mdmon 'hand-over' from initrd to final root. + - Handle merging of devices that have left an IMSM array and are + being re-incorporated. + - Add missing space in "--detail --brief" output. + +Changes Prior to release 3.0.2 + - Fix crash when hosthost is not set, as often happens in + early boot. + +Changes Prior to release 3.0.1 + - Fix various segfaults + - Fixed for --examine with containers + - Lots of other little fixes. + +Changes Prior to release 3.0 + - Support for externally managed metadata, specifically DDF and IMSM. + - Depend on udev to create entries in /dev, rather than creating them + ourselves. + - remove --auto-update-home-hosts + - new config file line "auto" + - new "" and "any" options for "homehost" + - numerous bug fixes and minor enhancements.