diff --git a/64-md-raid.rules b/64-md-raid.rules deleted file mode 100644 index deccce4..0000000 --- a/64-md-raid.rules +++ /dev/null @@ -1,35 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="block", GOTO="md_end" -ACTION!="add|change", GOTO="md_end" - -# import data from a raid member and activate it -ENV{ID_FS_TYPE}=="linux_raid_member", PROGRAM="grep -qs '^AUTO -all' /etc/mdadm.conf", IMPORT{program}="/sbin/mdadm --examine --export $tempnode", RUN+="/sbin/mdadm --incremental $env{DEVNAME}" -# import data from a raid set -KERNEL!="md*", GOTO="md_end" - -# container devices have a metadata version of e.g. 'external:ddf' and -# never leave state 'inactive' -ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" -ATTR{md/array_state}=="|clear|inactive", GOTO="md_end" -LABEL="md_ignore_state" - -IMPORT{program}="/sbin/mdadm --detail --export $tempnode" -ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" -ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" -ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" - -ENV{DEVTYPE}!="partition", GOTO="md_vol_id" -IMPORT{program}="/sbin/mdadm --detail --export %r/$parent" -ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" -ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" -ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" -ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" - -LABEL="md_vol_id" -IMPORT{program}="/sbin/blkid -o udev -p $tempnode" -OPTIONS+="link_priority=100" -ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" -ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" - -LABEL="md_end" diff --git a/boot.md b/boot.md index 5e201e5..be9b8bb 100644 --- a/boot.md +++ b/boot.md @@ -22,9 +22,7 @@ ### BEGIN INIT INFO # Provides: boot.md # Required-Start: boot.udev boot.rootfsck -# Required-Stop: $null -# Should-Start: boot.scsidev boot.multipath -# Should-Stop: boot.scsidev boot.multipath +# X-SUSE-Should-Start: boot.scsidev boot.multipath # Default-Start: B # Default-Stop: # Short-Description: Multiple Device RAID @@ -77,11 +75,13 @@ rc_reset # considered a success. mdadm_BIN=/sbin/mdadm +mdrun_BIN=/sbin/mdrun +raidautorun_BIN=/sbin/raidautorun mdadm_CONFIG="/etc/mdadm.conf" mdadm_SYSCONFIG="/etc/sysconfig/mdadm" # udev integration -if [ -x /sbin/udevadm ] ; then +if [ -x /sbin/udevsettle ] ; then [ -z "$MDADM_DEVICE_TIMEOUT" ] && MDADM_DEVICE_TIMEOUT=60 else MDADM_DEVICE_TIMEOUT=0 @@ -98,14 +98,6 @@ case "$1" in start) echo -n "Starting MD Raid " - # create the /var/run/mdadm symlink if needed - mkdir -p /dev/.mdadm - if test ! /dev/.mdadm -ef /var/run/mdadm; then - rm -rf /var/run/mdadm - ln -s /dev/.mdadm /var/run/mdadm - fi - # restart mdmon (exits silently if there is nothing to monitor) - /sbin/mdmon /proc/mdstat / # Check for existence of needed config file and read it [ -r $mdadm_SYSCONFIG ] || _rc_exit 6 "... $mdadm_SYSCONFIG not existing " @@ -116,25 +108,31 @@ case "$1" in # Check for missing binaries (stale symlinks should not happen) [ -x $mdadm_BIN ] || _rc_exit 5 "... $mdadm_BIN not installed " + [ -x $mdrun_BIN ] || _rc_exit 5 "... $mdrun_BIN not installed " # Try to load md_mod - [ ! -f /proc/mdstat -a -x /sbin/modprobe ] && /sbin/modprobe md_mod + [ ! -f /proc/mdstat -a -x /sbin/modprobe ] && /sbin/modprobe -k md_mod 2>&1 | : [ -f /proc/mdstat ] || _rc_exit 5 "... no MD support in kernel " # Wait for udev to settle if [ "$MDADM_DEVICE_TIMEOUT" -gt 0 ] ; then - /sbin/udevadm settle --timeout="$MDADM_DEVICE_TIMEOUT" + /sbin/udevsettle --timeout="$MDADM_DEVICE_TIMEOUT" fi - if ! grep -qs '^[^#]*[^[:blank:]#]' $mdadm_CONFIG; then - # empty or missing /etc/mdadm.conf, "unused" - rc_status -u - else - $mdadm_BIN -A -s -c $mdadm_CONFIG - # a status of 2 is not an error - test $? -eq 0 -o $? -eq 2 - rc_status -v + # Fallback to raidautorun / mdrun when $mdadm_CONFIG missing + # or mdadm exits with an error + [ "$BOOT_MD_USE_MDADM_CONFIG" = "yes" -a -s "$mdadm_CONFIG" ] + [ $? = 0 ] && { $mdadm_BIN -A -s -c $mdadm_CONFIG || rc_failed 1; } + if [ $? != 0 ]; then + if test -b /dev/md0; then + $raidautorun_BIN + else + $mdrun_BIN + fi fi + + # Remember status and be verbose + rc_status -v ;; stop) echo -n "Shutting down MD Raid " @@ -152,5 +150,3 @@ case "$1" in ;; esac rc_exit - -# vim:ft=sh diff --git a/mdadm-2.5.3-infoname.diff b/mdadm-2.5.3-infoname.diff new file mode 100644 index 0000000..8df4e75 --- /dev/null +++ b/mdadm-2.5.3-infoname.diff @@ -0,0 +1,11 @@ +--- super1.c ++++ super1.c +@@ -538,7 +538,7 @@ + strncpy(info->name, c+1, 31 - (c-sb->set_name)); + else + strncpy(info->name, sb->set_name, 32); +- info->name[33] = 0; ++ info->name[32] = 0; + } + if (strcmp(update, "name") == 0) { + if (info->name[0] == 0) diff --git a/mdadm-2.5.3.tar.bz2 b/mdadm-2.5.3.tar.bz2 new file mode 100644 index 0000000..80125b9 --- /dev/null +++ b/mdadm-2.5.3.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22e8364dcc528b1e5e4ee8f25ef4a6f0e9c648f1f1d2d7dbe688c929a3369672 +size 135019 diff --git a/mdadm-3.0.3.tar.bz2 b/mdadm-3.0.3.tar.bz2 deleted file mode 100644 index 00e1e12..0000000 --- a/mdadm-3.0.3.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b51a52aebfb83b09ae7faee9eebb4d49a7ad27767bcc9569079df62c7d510599 -size 257554 diff --git a/mdadm.changes b/mdadm.changes index 5b5d3f3..06f97c7 100644 --- a/mdadm.changes +++ b/mdadm.changes @@ -1,472 +1,3 @@ -------------------------------------------------------------------- -Thu Mar 11 10:18:18 CET 2010 - mmarek@suse.cz - -- 64-md-raid.rules: Use blkid instead of vol_id. - -------------------------------------------------------------------- -Thu Mar 11 09:58:21 CET 2010 - mmarek@suse.cz - -- 64-md-raid.rules: Allow --incremental assembly if "AUTO -all" is - given in mdadm.conf (fate#307478). - -------------------------------------------------------------------- -Tue Mar 9 16:15:41 CET 2010 - mmarek@suse.cz - -- Install udev rules in /lib/udev/rules.d (fate#307478). - -------------------------------------------------------------------- -Mon Feb 22 15:14:03 CET 2010 - mmarek@suse.cz - -- mkinitrd-setup.sh: call mdadm --scan only if necessary - (bnc#581769). - -Fri Jan 15 17:37:26 CET 2010 - mmarek@suse.cz - -- fix modprobe invocation in boot.md (bnc#565293). - -------------------------------------------------------------------- -Fri Jan 15 17:04:06 CET 2010 - mmarek@suse.cz - -- store mdmon runtime files in /dev/.mdadm, to make it easier to - transfer mdmon from the initrd to the real root. -- rework the mkinitrd setup script a bit. - -------------------------------------------------------------------- -Wed Jan 6 15:47:03 CET 2010 - mmarek@suse.cz - -- mkinitrd-*.sh: fix booting from partitionable md devices and - from container devices (bnc#565219). - -------------------------------------------------------------------- -Tue Dec 15 20:26:46 CET 2009 - jengelh@medozas.de - -- enable parallel building - -------------------------------------------------------------------- -Fri Dec 4 18:00:40 CET 2009 - mmarek@suse.cz - -- Support for partitionable md devices in mkinitrd scripts - (fate#305883). - -------------------------------------------------------------------- -Tue Nov 3 11:03:54 CET 2009 - mmarek@suse.cz - -- update to 3.0.3 (fate#307159) - * mdmon improvements (needed for fate#306823) - * other fixes - -------------------------------------------------------------------- -Fri Oct 30 16:49:40 CET 2009 - mmarek@suse.cz - -- mkinitrd-boot.sh: add /sbin/mdmon to the initrd (fate#306823). - -------------------------------------------------------------------- -Thu Oct 1 10:51:38 CEST 2009 - mmarek@suse.cz - -- updated to 3.0.2 + 2 patches - * bugfixes only - -------------------------------------------------------------------- -Fri Jun 12 09:43:43 CEST 2009 - mmarek@suse.cz - -- remove static md* device nodes, they should not be needed - anymore. - -------------------------------------------------------------------- -Thu Jun 11 11:32:55 CEST 2009 - mmarek@suse.cz - -- updated to 3.0 final -- dropped all patches - -------------------------------------------------------------------- -Tue Mar 3 10:36:11 CET 2009 - mmarek@suse.cz - -- super0: Do all metadata IO with 4096byte alignment -- super1 - do metadata IO in sector_size units. - (bnc#466172) - - -------------------------------------------------------------------- -Sat Feb 21 15:37:55 CET 2009 - mmarek@suse.cz - -- mkinitrd-setup.sh: filter out duplicate devices (bnc#461673, - patch by Xin Wei Hu) - -------------------------------------------------------------------- -Tue Feb 17 17:01:23 CET 2009 - mmarek@suse.cz - -- disable auto-assemly in boot.md completely as it can collide with - dmraid (bnc#474652). If someone wants to auto-assemble md arrays - in the rescue system, they can run - 'mdadm -Es -c partitions >mdadm.conf && mdadm -As -c mdadm.conf' - manually. - - -------------------------------------------------------------------- -Mon Feb 16 16:00:11 CET 2009 - mmarek@suse.cz - -- fix segfault when stopping imsm arrays - (bnc#473947, patch by Dan Williams) - -------------------------------------------------------------------- -Mon Jan 26 11:47:59 CET 2009 - ro@suse.de - -- change fillup call from "-Y" to "-y" the boot script has - been present in this package for long enough (SLES10-GA) - -------------------------------------------------------------------- -Fri Dec 5 10:21:10 CET 2008 - hare@suse.de - -- Wait for udev to settle before continuing (bnc#435778) - -------------------------------------------------------------------- -Fri Dec 5 06:18:44 CET 2008 - nfbrown@suse.de - -- boot.md : an exit status of '2' from "mdadm --assemble" - should not be seen as failure by boot.md. - It happens if one or more arrays is already - assembled. - (bnc#456028) - -------------------------------------------------------------------- -Thu Nov 20 07:07:06 CET 2008 - nfbrown@suse.de - -- don-t-auto-assemble-if-any-arrays-are-list.patch - Avoid assembling extra arrays during initrd - processing. bnc#445438 - -------------------------------------------------------------------- -Thu Nov 20 04:57:30 CET 2008 - nfbrown@suse.de - -- mdmon-pass-symbolic-name-to-mdmon-instead-of-device.patch - avoid problems if mdmon is run before - udev creates any devices. - -------------------------------------------------------------------- -Fri Nov 14 05:33:41 CET 2008 - nfbrown@suse.de - -- intel.fixes.patch : various fixes from intel for - proper handling of their metadata -- name.fixes.patch : various fixes for new handling - of device names - one could cause a crash. - -------------------------------------------------------------------- -Sun Nov 9 23:38:39 CET 2008 - ro@suse.de - -- fix patch apply depth - -------------------------------------------------------------------- -Fri Nov 7 12:34:30 CET 2008 - nfbrown@suse.de - -- mdadm-auto-assemble.patch - fix various bugs in - auto-assemble -- start-kpartx-for-imsm-devices.patch - IMSM devices - need to be partitioned, and may programs including - YaST don't understand partitioned md devices, - so run kpartx to create 'dm' based partitions which - have a better chance for being understood - This relates to FATE#304220 - -------------------------------------------------------------------- -Fri Nov 7 10:32:35 CET 2008 - ro@suse.de - -- remove udev rule (conflicting with file in udev package) - -------------------------------------------------------------------- -Fri Nov 7 02:58:40 CET 2008 - ro@suse.de - -- buildfix: add missing DESTDIR to Makefile for udev rule -- fix len in snprintf to silence compiler warning about potential - overflow - -------------------------------------------------------------------- -Thu Nov 6 03:22:50 CET 2008 - nfbrown@suse.de - -- Update from mdadm-3.0-devel1 to mdadm-3.0-devel2. - This includes various bug fixes and enhancements to the - extent that DDF and IMSM work reasonably well and can be - auto-assembled much like other arrays. -- Allow BOOT_MD_USE_MDADM_CONFIG to have the value 'part' - that, like 'no', arrays are auto-assembled. However they - get assembled as 'mdp' partitionable arrays where possible. - This currently only affect arrays with v1.x metadata. - This supports FATE#303894 - -------------------------------------------------------------------- -Fri Oct 3 15:28:49 CEST 2008 - mmarek@suse.cz - -- fixed mdmon's clone_monitor on ia64 - -------------------------------------------------------------------- -Fri Oct 3 14:28:55 CEST 2008 - mmarek@suse.cz - -- fixed byte swapping in super-intel.c on big endian. - -------------------------------------------------------------------- -Wed Sep 24 18:24:25 CEST 2008 - ro@suse.de - -- change "udevsettle" to "udevadm settle" - -------------------------------------------------------------------- -Fri Sep 19 11:14:05 CEST 2008 - mmarek@suse.cz - -- added /var/run/mdadm for mdmon -- fixed build - -------------------------------------------------------------------- -Thu Sep 18 09:33:19 CEST 2008 - nfbrown@suse.de - -- update to mdadm-3.0-devel1 - package version number is set to 3.0 to avodi future confusion. - This is a substantial update that provides support for handling - the metadata entirely in userspace and thus making easier to - handle a variety of metadata formats. Support is included for - DDF and for the Intel Matrix metadata used by recent ICH chipsets. - - An extra program 'mdmon' is needed and included. It is run to - monitor any array using 'external' (to the kernel) metadata - and will update the metadata in response to device failures etc. - - This is required for FATE 304219 - - -------------------------------------------------------------------- -Wed Sep 3 11:09:34 CEST 2008 - hare@suse.de - -- Call mkinitrd_setup during %post and %postun (bnc#413709) - -------------------------------------------------------------------- -Sun Aug 17 08:04:26 CEST 2008 - aj@suse.de - -- Fix init scripts. - -------------------------------------------------------------------- -Wed Jul 23 15:21:59 CEST 2008 - hare@suse.de - -- Include mkinitrd scriptlets. - -------------------------------------------------------------------- -Fri Jun 20 14:28:20 CEST 2008 - mmarek@suse.cz - -- updated to 2.6.7 + fixes from git - * Avoid segfault when parsing /proc/mdstat with auto-read-only - arrays. - * For v0.90 superblocks, print the 'Events' count as a real - count, not 2 numbers separated by a dot. - * Allow creation of a RAID6 with exactly one missing device. - * Use LOG_PID for syslog, so you get the pid of mdadm in the - log files. - * --export now works with --examine too (not just --detail) - * Improve auto-creation of device special file when using - --incremental - * Simple locking for --incremental so mdadm doesn't get - confused when run concurrently with itself. - * Make --incremental cope better with arrays that are being - reshaped. - * Fix autoassemble for stack arrays. -- remove /tmp/mdadm.conf in boot.md (bnc#401138) - -------------------------------------------------------------------- -Wed Apr 30 15:57:14 CEST 2008 - mmarek@suse.cz - -- added some fixes from Neil's git repo, fixing bnc#368704 among - others - -------------------------------------------------------------------- -Mon Feb 4 19:24:54 CET 2008 - mmarek@suse.cz - -- correctly display rc_status in boot.md - -------------------------------------------------------------------- -Wed Jan 23 15:55:24 CET 2008 - mmarek@suse.cz - -- fixed auto-assembly part of boot.md - * if /etc/mdadm.conf is empy or only contains whitespace or - comments, no autoassembly is done - * remove /tmp/mdadm.conf even if a directory [#329678] -- dropped mdrun and raidautorun (no longer needed) - -------------------------------------------------------------------- -Wed Oct 24 17:08:11 CEST 2007 - mmarek@suse.cz - -- updated to 2.6.4 - * Make "--create --auto=mdp" work for non-standard device names. - * Fix restarting of a 'reshape' if it was stopped in the middle. - * Fix a segfault when using v1 superblock. - * Make --write-mostly effective when re-adding a device to an - array. - * Various minor fixes -- changes in 2.6.3: - * allow --write-behind to be set for --grow. - * When adding new disk to an array, don't reserve so much bitmap - space that the disk cannot store the required data. (Needed - when 1.x array was created with older mdadm). - * When adding a drive that was a little too small, we did not get - the correct error message. - * Make sure that if --assemble find an array in the critical - region of a reshape, and cannot find the critical data to - restart the reshape, it gives an error message. - * Fix segfault with '--detail --export' and non-persistent - superblocks. - * Various manpage updates. - * Improved 'raid4' support (--assemble, --monitor) - * Option parsing fixes w.r.t -a - * Interpret "--assemble --metadata=1" to allow any version 1.x - metadata, and be more specific in the "metadata=" message - printed with --examine --brief - * Fix spare migration in --monitor. - -------------------------------------------------------------------- -Fri Jul 27 13:01:01 CEST 2007 - mmarek@suse.cz - -- changes to the init script [#288454] - * don't try to autoassemble if /etc/mdadm.conf exists (even an - empty one) - * ony autoassemble partitions found in /proc/partitions - -------------------------------------------------------------------- -Fri Jul 13 15:02:21 CEST 2007 - mmarek@suse.cz - -- updated to 2.6.2 - * --fail detached and --remove faulty can be used to fail and - remove devices that are no longer physically present. - * --export option for --detail or present information in a format - that can be processed by udev. - * fix internal bitmap allocation problems with v1.1, v1.2 - metadata. - * --help now goes to stdout so you can direct it to a pager. - * Various manpage updates. - * Make "--grow --add" for linear arrays really work. - * --auto-detect to trigger in-kernel autodetect. - * Make return code for "--detail --test" more reliable. Missing - devices as well as failed devices cause an error. -- added some fixes from Neil's git repo (mdadm-git-fixes.patch) - -------------------------------------------------------------------- -Thu Jun 21 15:58:37 CEST 2007 - adrian@suse.de - -- fix changelog entry order - -------------------------------------------------------------------- -Mon Apr 2 15:00:10 CEST 2007 - mmarek@suse.cz - -- updated to 2.6.1 - * --monitor was producing some meaningless warnings due to a bug. - * Fix some compiler warnings. - * Fully support --grow for raid6. If a reshape crashed during - the critical period, mdadm wouldn't restore the Q information - properly. - * Update documentation for --grow. - * 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. - * Require bitmap files to have a '/' in their name. - * 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. - * 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. - * Support 'bitmap=' in mdadm.conf for auto-assembling arrays with - write-intent bitmaps in separate files. - * 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. - * 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. - * Don't try to create devices with --manage or --grow - * allow default metadata (superblock) type to be specified - in mdadm.conf - * Avoid some misdetection of overlapping partitions - * 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. - * When creating devices in /dev/md/ create matching symlinks - from /dev. e.g. /dev/md0 -> /dev/md/0. - Allow this to be disabled in mdadm.conf or on command line. - * Allow a number (of partitions) after the 'yes' option to --auto= - This is particularly useful in the 'create' line in mdadm.conf. - * Remove partitions from any whole device that is made part of - an md array. This is a work-around for annoying messages - when the first block on some drive accidentally looks like a - partition table. - * Close stray fd in mdassemble so that it can assemble stacked - devices - * If mdassemble finds an array already assembled, it marks it - read-write. - * Remove error in md_open if array is already active. This isn't - needed and gets in the ways if an array was created e.g. in - initramfs, but device doesn't yet exist in /dev. - * When --assemble --scan is run, if all arrays that could be found - have already been started, don't report an error. - * Allow --assemble --force to mark a raid6 clean when it has two - missing devices (which is needed else if won't assemble. - Without this fix it would only assemble if one or zero - missing devices. - * Support --update=devicesize for cases where the underlying device - can change size. - * Default to --auto=yes so the array devices with 'standard' names - get created automatically, as this is almost always what is wanted. - * Give useful message if raid4/5/6 cannot be started because it is - not clean and is also degraded. - * Increase raid456 stripe cache size if needed to --grow the array. - The setting used unfortunately requires intimate knowledge of the - kernel, and it not reset when the reshape finishes. - * Change 'Device Size' to 'Used Dev Size' because it only shows how - much of each device is actually used, not how big they are. - * --wait or -W will wait for resync activity to finish on the given - devices. - * If two drives in a raid5 disappear at the same time, then "-Af" - will add them both in rather than just one and forcing the array - to 'clean'. This is slightly safer in some cases. - * Don't hold md device open for so long in --monitor mode - map_dev - can be slow and interferes with trying to stop the array. - * Support --uuid= with --create to choose your own UUID. - * New major more "--incremental" for incremental assemble of arrays, - intended for use with udev. - * lots of bugfixes - * manpage updates - ------------------------------------------------------------------- Wed Jan 10 11:58:14 CET 2007 - mmarek@suse.cz @@ -724,16 +255,16 @@ Mon Dec 2 11:30:52 CET 2002 - fehr@suse.de - Fix for new glibc/gcc -------------------------------------------------------------------- -Tue Sep 17 17:34:28 CEST 2002 - ro@suse.de - -- removed bogus self-provides - ------------------------------------------------------------------- Mon Sep 13 15:10:00 CEST 2002 - lmb@suse.de - Fix for 64bit arch; ioctl returns long instead of int (#20339) +------------------------------------------------------------------- +Tue Sep 17 17:34:28 CEST 2002 - ro@suse.de + +- removed bogus self-provides + ------------------------------------------------------------------- Fri Aug 23 11:16:51 MEST 2002 - lmb@suse.de @@ -755,3 +286,4 @@ Mon Aug 5 16:05:19 CEST 2002 - fehr@suse.de - make SuSE package from version 1.0.1 of mdadm +------------------------------------------------------------------- diff --git a/mdadm.spec b/mdadm.spec index 2848587..9fc3f1c 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -1,33 +1,25 @@ # -# spec file for package mdadm (Version 3.0.3) +# spec file for package mdadm (Version 2.5.3) # -# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. +# This file and all modifications and additions to the pristine +# package are under the same license as the package itself. # -# All modifications and additions to the file contributed by third parties -# remain the property of their copyright owners, unless otherwise agreed -# upon. The license for this file, and modifications and additions to the -# file, is the same license as for the pristine package itself (unless the -# license for the pristine package is not an Open Source License, in which -# case the license is the MIT License). An "Open Source License" is a -# license that conforms to the Open Source Definition (Version 1.9) -# published by the Open Source Initiative. - # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # norootforbuild - Name: mdadm -Version: 3.0.3 -Release: 3 -BuildRequires: sgmltool +Version: 2.5.3 +Release: 20 +BuildRequires: opensp sgmltool PreReq: %fillup_prereq %insserv_prereq Obsoletes: raidtools -AutoReqProv: on +Autoreqprov: on Group: System/Base -License: GPLv2+ -Url: http://www.kernel.org/pub/linux/utils/raid/mdadm/ +License: GNU General Public License (GPL) +URL: http://www.cse.unsw.edu.au/~neilb/source/mdadm/ Summary: Utility for Configuring MD Setup BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: %{name}-%{version}.tar.bz2 @@ -35,9 +27,9 @@ Source1: Software-RAID.HOWTO.tar.bz2 Source2: sysconfig.mdadm Source3: mdadmd Source4: boot.md -Source5: mkinitrd-setup.sh -Source6: mkinitrd-boot.sh -Source7: 64-md-raid.rules +Source5: mdrun +Source6: raidautorun.c +Patch: %{name}-%{version}-infoname.diff %description Mdadm is a program that can be used to control Linux md devices. It is @@ -48,14 +40,16 @@ programs but with a very different interface. Authors: -------- - Neil Brown + Neil Brown %prep %setup -q -a1 +%patch %build %{suse_update_config -f} -make %{?jobs:-j%jobs} CXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-error" +make CXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-error" +gcc $RPM_OPT_FLAGS %{S:6} -o raidautorun cd Software-RAID.HOWTO sgml2html Software-RAID.HOWTO.sgml sgml2txt Software-RAID.HOWTO.sgml @@ -65,35 +59,16 @@ make install DESTDIR=$RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT%{_var}/adm/fillup-templates install -d $RPM_BUILD_ROOT{%{_sbindir},%{_sysconfdir}/init.d} install -d $RPM_BUILD_ROOT/lib/udev/devices +install -m 755 %{S:5} raidautorun $RPM_BUILD_ROOT/sbin/ install -m 755 %{S:4} %{S:3} $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ -install -d $RPM_BUILD_ROOT/lib/mkinitrd/scripts -install -m 755 %{S:5} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/setup-md.sh -install -m 755 %{S:6} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/boot-md.sh install -m 644 %{S:2} $RPM_BUILD_ROOT%{_var}/adm/fillup-templates/ ln -sf ../../etc/init.d/mdadmd $RPM_BUILD_ROOT/%{_sbindir}/rcmdadmd -rm -rf $RPM_BUILD_ROOT/var/run/mdadm -mkdir -p $RPM_BUILD_ROOT/var/run -ln -s mdadm $RPM_BUILD_ROOT/var/run/mdadm -install -d $RPM_BUILD_ROOT/lib/udev/rules.d -install -m 644 %_sourcedir/64-md-raid.rules $RPM_BUILD_ROOT/lib/udev/rules.d %post -[ -x /sbin/mkinitrd_setup ] && mkinitrd_setup -%{fillup_and_insserv -y boot.md} -mkdir -p /dev/.mdadm -# replace the /var/run/mdadm directory (installed by sle11/11.1) with -# a symlink pointing to /dev/.mdadm. Do not do this when /var/run/mdadm is -# not empty, let /etc/init.d/boot.md do it at the next reboot. -if test -e /var/run/mdadm -a ! /var/run/mdadm -ef /dev/.mdadm; then - if ! rmdir /var/run/mdadm 2>/dev/null; then - exit 0 - fi - ln -s /dev/.mdadm /var/run/mdadm -fi +%{fillup_and_insserv -Y boot.md} %postun %restart_on_update mdadmd -[ -x /sbin/mkinitrd_setup ] && mkinitrd_setup %{insserv_cleanup} %preun @@ -105,21 +80,176 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %attr(0755,root,root) %config %{_sysconfdir}/init.d/* -%doc COPYING ChangeLog README.initramfs TODO mdadm.conf-example mkinitramfs +%attr(640,root,disk) %dev(b,9,0) /lib/udev/devices/md0 +%attr(640,root,disk) %dev(b,9,1) /lib/udev/devices/md1 +%attr(640,root,disk) %dev(b,9,2) /lib/udev/devices/md2 +%attr(640,root,disk) %dev(b,9,3) /lib/udev/devices/md3 +%attr(640,root,disk) %dev(b,9,4) /lib/udev/devices/md4 +%attr(640,root,disk) %dev(b,9,5) /lib/udev/devices/md5 +%attr(640,root,disk) %dev(b,9,6) /lib/udev/devices/md6 +%attr(640,root,disk) %dev(b,9,7) /lib/udev/devices/md7 +%attr(640,root,disk) %dev(b,9,8) /lib/udev/devices/md8 +%attr(640,root,disk) %dev(b,9,9) /lib/udev/devices/md9 +%attr(640,root,disk) %dev(b,9,10) /lib/udev/devices/md10 +%attr(640,root,disk) %dev(b,9,11) /lib/udev/devices/md11 +%attr(640,root,disk) %dev(b,9,12) /lib/udev/devices/md12 +%attr(640,root,disk) %dev(b,9,13) /lib/udev/devices/md13 +%attr(640,root,disk) %dev(b,9,14) /lib/udev/devices/md14 +%attr(640,root,disk) %dev(b,9,15) /lib/udev/devices/md15 +%attr(640,root,disk) %dev(b,9,16) /lib/udev/devices/md16 +%attr(640,root,disk) %dev(b,9,17) /lib/udev/devices/md17 +%attr(640,root,disk) %dev(b,9,18) /lib/udev/devices/md18 +%attr(640,root,disk) %dev(b,9,19) /lib/udev/devices/md19 +%attr(640,root,disk) %dev(b,9,20) /lib/udev/devices/md20 +%attr(640,root,disk) %dev(b,9,21) /lib/udev/devices/md21 +%attr(640,root,disk) %dev(b,9,22) /lib/udev/devices/md22 +%attr(640,root,disk) %dev(b,9,23) /lib/udev/devices/md23 +%attr(640,root,disk) %dev(b,9,24) /lib/udev/devices/md24 +%attr(640,root,disk) %dev(b,9,25) /lib/udev/devices/md25 +%attr(640,root,disk) %dev(b,9,26) /lib/udev/devices/md26 +%attr(640,root,disk) %dev(b,9,27) /lib/udev/devices/md27 +%attr(640,root,disk) %dev(b,9,28) /lib/udev/devices/md28 +%attr(640,root,disk) %dev(b,9,29) /lib/udev/devices/md29 +%attr(640,root,disk) %dev(b,9,30) /lib/udev/devices/md30 +%attr(640,root,disk) %dev(b,9,31) /lib/udev/devices/md31 +%doc ANNOUNCE-2.0 ANNOUNCE-2.1 ANNOUNCE-2.2 COPYING ChangeLog README.initramfs TODO mdadm.conf-example mkinitramfs %doc Software-RAID.HOWTO/Software-RAID.HOWTO*{.txt,.html} %doc %{_mandir}/man?/* /sbin/* -%dir /lib/udev -%dir /lib/udev/devices +/lib/udev %{_sbindir}/* %{_var}/adm/fillup-templates/sysconfig.mdadm -%ghost /var/run/mdadm -%dir /lib/mkinitrd -%dir /lib/mkinitrd/scripts -/lib/mkinitrd/scripts/setup-md.sh -/lib/mkinitrd/scripts/boot-md.sh -%dir /lib/udev -%dir /lib/udev/rules.d -/lib/udev/rules.d/64-md-raid.rules -%changelog +%changelog -n mdadm +* Wed Jan 10 2007 - mmarek@suse.cz +- use raidautorun instead of mdrun to autodetect the raid arrays in + boot.md [#230733] +* Wed Nov 08 2006 - prusnak@suse.cz +- fixed subscript out of range [#212697] +* Wed Sep 20 2006 - mjancar@suse.cz +- update to 2.5.3 + * lots bugfixes + * drop all patches (integrated upstream) +* Fri Jul 28 2006 - olh@suse.de +- remove dropped boot.ibmsis from boot.md +- boot.rootfsck should start before boot.md (#181972) +* Fri Jul 21 2006 - olh@suse.de +- remove boot.proc from Required-Start: in boot.md (#178753) +* Wed May 03 2006 - mjancar@suse.cz +- fix false SparesMissing error (#171326) +* Wed Apr 26 2006 - hare@suse.de +- Fix init script dependencies +- Implement MDADM_DEVICE_TIMEOUT to set a timeout for + udevsettle (#149979) +* Tue Apr 25 2006 - mjancar@suse.cz +- add static device nodes for udev (#168824) +* Wed Apr 19 2006 - mjancar@suse.cz +- set $BOOT_MD_USE_MDADM_CONFIG to "yes" by default (#155120) +* Fri Apr 07 2006 - mjancar@suse.cz +- detach mdadmd from tty in rcmdadmd (#160881) +* Mon Apr 03 2006 - mjancar@suse.cz +- fix garbled output with --detail (#160827) +- fix fix write-mostly with --add and --re-add (#162968) +* Fri Mar 24 2006 - mjancar@suse.cz +- add /sbin/raidautorun (#159460) +* Wed Mar 08 2006 - mjancar@suse.cz +- add $BOOT_MD_USE_MDADM_CONFIG sysconfig variable (#155120) +* Thu Feb 09 2006 - mjancar@suse.cz +- round free size to chunk size multiply on --create (#148562) +* Tue Feb 07 2006 - mjancar@suse.cz +- move boot.multipath to Should-Start instead of Required-Start +* Mon Feb 06 2006 - mjancar@suse.cz +- add "Obsoletes: raidtools" +- start boot.md after boot.multipath +- call mdadm without -a from mdrun, an argument is required in 2.2 +* Mon Feb 06 2006 - mjancar@suse.de +- don't start mdadmd by default +* Sun Feb 05 2006 - mjancar@suse.cz +- include option for email to be sent on start (#142105) +- fix missing md autostart due to raidtools dropped (#148234) + * include mdrun script from Debian + * create boot.md initscipt +* Sun Feb 05 2006 - schwab@suse.de +- Fix memset parameters. +* Thu Feb 02 2006 - mjancar@suse.cz +- fix segfault on --assemble (#146514) +* Fri Jan 27 2006 - mls@suse.de +- converted neededforbuild to BuildRequires +* Wed Jan 25 2006 - olh@suse.de +- fix uninitialized variable, memset call and memcmp/memcpy bug + mdadm.bug144647-array.init.patch + mdadm.bug144647-update_super1-memcpy.patch + mdadm.bug144647-add_internal_bitmap0-memcpy.patch +* Wed Jan 11 2006 - mjancar@suse.cz +- update ro 2.2 +* Tue Dec 20 2005 - ro@suse.de +- at least output errors if they occur (instead of ignoring) +* Wed Nov 30 2005 - schwab@suse.de +- Fix broken formats. +* Tue Oct 25 2005 - aj@suse.de +- Build with -fno-strict-aliasing. +* Wed Oct 12 2005 - mjancar@suse.cz +- update to 2.1 +* Thu Jul 28 2005 - anicka@suse.cz +- update to 1.12.0 +* Wed Jun 15 2005 - meissner@suse.de +- use RPM_OPT_FLAGS correctly. +* Tue Apr 19 2005 - postadal@suse.de +- updated to version 1.11.0 +- fixed for gcc 4.0 +- removed obsoleted patch config-fix +* Wed Mar 30 2005 - postadal@suse.cz +- fixed parsing command line option '--config=partions' [#74603] +* Fri Feb 04 2005 - postadal@suse.cz +- updated to version 1.9.0 +* Thu Jan 13 2005 - postadal@suse.cz +- updated to version 1.8.1 +- extended comment in sysconfig.mdadm [#48567] +* Fri Aug 06 2004 - postadal@suse.cz +- updated to version 1.6.0 + * added --auto= and --assume-clean options + * added "degraded" and "recovering" options to the "Status:" entry +* Tue Feb 10 2004 - postadal@suse.cz +- updated to version 1.5.0 + * new commands "mdassemble" + * support for raid6 as found in 2.6.2 + * support partitioned md arrays with a different major number and + naming scheme + * added "SparesMissing" event when --monitor first sees an array and + it doesn't have the enough spare devices. +* Sun Jan 11 2004 - adrian@suse.de +- add %%defattr +* Mon Dec 01 2003 - fehr@suse.de +- fix quoting problem in start script (#33392) +* Fri Aug 29 2003 - fehr@suse.de +- add PreReq for fillup +* Tue Aug 26 2003 - fehr@suse.de +- add %%stop_on_removal and %%restart_on_update +* Thu Aug 14 2003 - fehr@suse.de +- add missing activation metadata in sysconfig (#28901) +* Tue Jul 29 2003 - fehr@suse.de +- update to new version 1.3.0 of package +* Mon Apr 14 2003 - postadal@suse.cz +- fixed init script (added return value for unimplemented reload function) +* Mon Mar 31 2003 - postadal@suse.cz +- added buildroot, init script, sysconfig +- bzip2 sources and cleaned specfile +* Thu Mar 20 2003 - fehr@suse.de +- update to version 1.2.0 of package +* Mon Mar 03 2003 - fehr@suse.de +- update to version 1.1.0 of package +* Mon Dec 02 2002 - fehr@suse.de +- Fix for new glibc/gcc +* Tue Sep 17 2002 - ro@suse.de +- removed bogus self-provides +* Fri Sep 13 2002 - lmb@suse.de +- Fix for 64bit arch; ioctl returns long instead of int (#20339) +* Fri Aug 23 2002 - lmb@suse.de +- Multipath arrays can now be build manually even without a superblock. +- One debugging chunk removed from patch. +* Tue Aug 13 2002 - lmb@suse.de +- Fix for the assembly of multipath arrays. +* Mon Aug 12 2002 - lmb@suse.de +- Added patch to support the enhanced multipath features. +* Mon Aug 05 2002 - fehr@suse.de +- make SuSE package from version 1.0.1 of mdadm diff --git a/mdadmd b/mdadmd index 9975b1a..0c6e7d7 100644 --- a/mdadmd +++ b/mdadmd @@ -13,9 +13,9 @@ ### BEGIN INIT INFO # Provides: mdadmd # Required-Start: $local_fs -# Should-Start: $time sendmail +# X-UnitedLinux-Should-Start: $time sendmail # Required-Stop: $local_fs -# Should-Stop: $time sendmail +# X-UnitedLinux-Should-Stop: $time sendmail # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: mdadmd daemon monitoring MD devices diff --git a/mdrun b/mdrun new file mode 100644 index 0000000..f83fe3b --- /dev/null +++ b/mdrun @@ -0,0 +1,147 @@ +#!/bin/sh + +# mdrun, (c) Eduard Bloch 2003 + +# Usage: +# Without arguments: autodetect all RAID partitions and activate MDs +# Arguments: [ DEVDIR ] NUMBER UUID [ ... ] +# a number of number/uuid pairs, where NUMBER is the one from /dev/md/* +# Argument: LIST +# lists all raids in the syntax needed for the pairs (see above) + +# IMPORTANT: create /dev/fs directory if you have devfs support in the kernel +# but do not want to mount it over /dev. Usage of /dev/fs directory will keep +# mdrun away from /dev. + +# If the first argument is a directory, it will be used as a writeable +# temporary directory for device nodes. mdrun needs mknod to create them +# on-the-fly + +# Environment: +# MORERAIDVOLUMES (list of strings) : additional raid disks to scan, +# eg. loop devices + +if ! test -e /proc/partitions ; then + echo "/proc not mounted!" + exit 1 +fi + +DEVDIR=/dev + +if [ -d "$1" ] ; then + AUTOCREATE=true + DEVDIR="$1" + shift +fi + +# For people that compile the kernel with devfs (means: different +# proc/partitions content), but without auto-mounting it +if ! uname -r | grep "^2.6" 1>/dev/null && [ -z "$AUTOCREATE" ] && grep " devfs" /proc/filesystems >/dev/null 2>&1 && ! grep "^devfs" /proc/mounts >/dev/null 2>&1 ; then + + mkdir /dev/fs 2>/dev/null + # if we can do it - good, we will use it. Otherwise, use /dev even if it is ugly + + # mount devfs for now to make the device names match, umount later + if [ -d /dev/fs ] ; then + DEVDIR=/dev/fs + fi + mount none $DEVDIR -tdevfs + UMNTDEVFS="umount $DEVDIR" +fi + +# arr(array, index): return contents in array[index]; as with Bourne shell +# in general, there is no easy way to distinguish between index not +# existing and empty string assigned. +arr() { sa_i=`arr_index $2`; eval "echo \"\$$1_${sa_i}\""; unset sa_i; } + +# seterr(array, index, value): assign the given value to array[index]. +setarr() { sa_i=`arr_index $2`; eval "$1_${sa_i}=\"$3\""; unset sa_i; } + +# arr_index(index): make sure the given index is valid for use. +arr_index() { echo $1 | sed -e 's/:/_/g' | sed 's;/;_;g'; } + + +BASE=$DEVDIR/md +export BASE +#devfs +test -d $BASE && BASE=$BASE/ + +next_free_md() { + for raidnr in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24; do + if ! mdadm -D $BASE$raidnr >/dev/null 2>&1 ; then + echo $BASE$raidnr + return 0 + fi + done + return 1 +} + +listpairs() { + for NUMBER in `cat /proc/mdstat | grep "^md. : active" | sed -e 's/^md\(.\) :.*/\1/'`; do + echo $NUMBER + mdadm -D ${BASE}$NUMBER 2>/dev/null |grep UUID | sed 's/.*: \(.*\)/\1/' + done +} + +if [ "$1" = LIST ] ; then + echo `listpairs` + $UMNTDEVFS + exit 0 +fi + +DEVDIRESC=$(echo $DEVDIR | sed -e 's!/!\\/!g') +if [ "$AUTOCREATE" ] ; then + CREATECMD=$(sed -e "s/.*major.*//; s/.*\ \([:0-9:]\+\)\ \+\ \([:0-9:]\+\)\ \+\ [:0-9:]\+\ \+\([:a-z0-9\/:]\+\).*/mknod \3 b \1 \2 ; / ; s/\//_/g" < /proc/partitions) + export CREATECMD + export DEVDIR + # and we need array nodes, of course + ( + cd $DEVDIR ; + eval $CREATECMD ; + for x in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ; do + mknod ${BASE}$x b 9 $x + done + ) + PARTLIST=$(sed -e "s/.*major.*//; s/.*\ \([:0-9:]\+\)\ \+\ \([:0-9:]\+\)\ \+\ [:0-9:]\+\ \+\([:a-z0-9\/:]\+\).*/DEVDIR\3 /; s/\//_/g ; s/DEVDIR/$DEVDIRESC\//;" < /proc/partitions) +else + PARTLIST=$(sed -e "s/.*major.*//; s/^[:0-9 :]* \([:a-z:].[:a-z0-9\/:]*\).*/\1/; s/^\([:a-z:].*\)/$DEVDIRESC\/\1/g" < /proc/partitions) +fi + +for SRC in $PARTLIST $MORERAIDVOLUMES ; do + SUM=$(mdadm -E $SRC 2>/dev/null | grep UUID | sed 's/.*: \(.*\)/\1/') + for x in $SUM; do + UUIDS="$UUIDS $SUM" + setarr MDS $SUM "`arr MDS $SUM` $SRC" + done +done + +if [ "$#" -gt 1 ] ; then + NUMBER=${BASE}$1 + MD=$2 + shift ; shift + if [ "`arr MDS $MD`" != "started" ] ; then + mdadm -A $NUMBER -f `arr MDS $MD` && setarr MDS $MD "started" + # just to be sure + ln /dev/md/$NUMBER /dev/md$NUMBER 2>/dev/null + fi +fi + +# and process the rest, if it exists +# do not touch active arrays +#dropactive() { + for NUMBER in `cat /proc/mdstat | grep "^md. : active" | sed -e 's/^md\(.\) :.*/\1/'`; do + setarr MDS `mdadm -D ${BASE}$NUMBER 2>/dev/null |grep UUID | sed 's/.*: \(.*\)/\1/'` "started" + done +#} + + +for MD in $UUIDS; do + if [ "`arr MDS $MD`" != "started" ] ; then + NUMBER=`next_free_md` + mdadm -A $NUMBER -f `arr MDS $MD` && setarr MDS $MD "started" + # just to be sure + ln /dev/md/$NUMBER /dev/md$NUMBER 2>/dev/null + fi +done + +$UMNTDEVFS diff --git a/mkinitrd-boot.sh b/mkinitrd-boot.sh deleted file mode 100644 index a5c7019..0000000 --- a/mkinitrd-boot.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash -#%stage: softraid -#%programs: /sbin/mdadm /sbin/mdmon -#%modules: raid0 raid1 raid10 raid456 -#%if: -n "$need_mdadm" -# -##### MD (Software-)Raid -## -## This activates and waits for an MD software raid. -## -## Command line parameters -## ----------------------- -## -## need_mdadm=1 use MD raid -## md_uuid the uuid of the raid to activate -## - -# load the necessary module before we initialize the raid system -load_modules - -# put the mdmon socked and pid file to /dev/.mdadm -rm -rf /var/run/mdadm -mkdir -p /var/run -ln -s /dev/.mdadm /var/run/mdadm -mkdir -p /dev/.mdadm -[ "$mduuid" ] && md_uuid="$mduuid" - -md_major=$(sed -ne 's/\s*\([0-9]\+\)\s*md$/\1/p' /proc/devices) -if [ -n "$md_major" -a "$md_major" = "$maj" ]; then - md_minor="$min" - md_dev="/dev/md$md_minor" -fi - -# Always start md devices read/only. They will get set to rw as soon -# as the first write occurs. This way we can guarantee that no -# restore occurs before resume. -if [ -f /sys/module/md_mod/parameters/start_ro ]; then - echo 1 > /sys/module/md_mod/parameters/start_ro -fi - -md_assemble() -{ - local dev=$1 mdconf container - - case "$dev" in - /dev/md[0-9]*p[0-9]*) - dev=${dev%p[0-9]*} - esac - if test -f /etc/mdadm.conf; then - mdconf="-c /etc/mdadm.conf" - container=$( \ - sed -rn "s:^ARRAY +$dev .*container=([^ ]*).*:\\1:p" \ - /etc/mdadm.conf) - else - mdconf="-c partitions" - fi - case "$container" in - "") - ;; - /dev/*) - mdadm -A $mdconf $container - ;; - [0-9a-f]*[0-9a-f]) - mdadm -A $mdconf --uuid="$container" /dev/md/container - ;; - *) - echo "unrecognized container for $dev: $container" - ;; - esac - mdadm -A $mdconf $mdarg "$dev" -} - -if [ -n "$need_mdadm" ]; then - - if [ -n "$md_uuid" ] ; then - mdarg="--uuid=$md_uuid" - fi - - case $resumedev in - /dev/md*) - md_assemble "$resumedev" - esac - - if [ -n "$md_dev" ] ; then - md_assemble "$md_dev" - fi - wait_for_events -fi diff --git a/mkinitrd-setup.sh b/mkinitrd-setup.sh deleted file mode 100644 index 5f25c80..0000000 --- a/mkinitrd-setup.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/bash -# -#%stage: softraid -# -mdblockdev= - -# Full mdadm.conf generated by mdadm. -# Contains all created MD RAIDs -mdadm_conf= - -cont_list= -md_devs= - -# blockdev contains real devices (/dev/X) for root, resume, journal, dumb -for bd in $blockdev ; do - is_part_dev=false - case $bd in - /dev/md[0-9]*p[0-9]*) - # Partitionable MD RAID. This is partition on RAID. Get the RAID - bd=${bd%%p[0-9]*} - is_part_dev=true - ;; - /dev/md[0-9]*) - ;; - *) - mdblockdev="$mdblockdev $bd" - continue - ;; - esac - # Check if this device is already added (possible for partitionable). - md_dev=${bd##/dev/} - dup_found=false - for dup in $md_devs; do - if [ x"$dup" = x"$md_dev" ]; then - dup_found=true - break - fi - done - if $dup_found; then - if ! $is_part_dev; then - echo "setup-md.sh: $md_dev found multiple times" >&2 - fi - continue - fi - mdconf=$(mdadm -Db "$bd") - if test -z "$mdconf"; then - mdblockdev="$mdblockdev $bd" - continue - fi - md_tmpblockdev=$(mdadm -Dbv $bd | sed -n "1D;s/,/ /g;s/^ *devices=//p") - mdblockdev="$mdblockdev $md_tmpblockdev" - md_devs="$md_devs $md_dev" - container=$(echo "$mdconf" | sed -rn 's/.* container=([^ ]*) .*/\1/p') - for cnt in $cont_list; do - if [ x"$container"= x"$cnt" ]; then - container= - break - fi - done - case "$container" in - "") - ;; - /dev/*) - mdconf="$(mdadm -Db "$container")\\n$mdconf" - ;; - [0-9a-f]*[0-9a-f]) - if test -z "$mdadm_conf"; then - mdadm_conf=$(mdadm --examine --brief --scan) - fi - mdconf="$(echo "$mdadm_conf" | grep "UUID=$container")\\n$mdconf" - ;; - *) - echo "unrecognized container for $md_dev: $container" - ;; - esac - eval md_conf_${md_dev}=\"$mdconf\" - root_md=1 -done - -# Any 'md' device is replaced by it's component disks. -blockdev="$mdblockdev" - -if [ -n "$root_md" ] ; then - need_mdadm=1 - echo -n "" > $tmp_mnt/etc/mdadm.conf - for md in $md_devs; do - eval echo -e \"\$md_conf_$md\" >> $tmp_mnt/etc/mdadm.conf - done -fi - -save_var need_mdadm -save_var root_md diff --git a/raidautorun.c b/raidautorun.c new file mode 100644 index 0000000..a82ef8a --- /dev/null +++ b/raidautorun.c @@ -0,0 +1,16 @@ +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + int fd = open("/dev/md0", O_RDWR); + + if (fd >= 0) { + ioctl(fd, RAID_AUTORUN, 0); + close(fd); + } + return (0); +} diff --git a/ready b/ready new file mode 100644 index 0000000..473a0f4 diff --git a/sysconfig.mdadm b/sysconfig.mdadm index 7cdd682..36324f9 100644 --- a/sysconfig.mdadm +++ b/sysconfig.mdadm @@ -51,6 +51,13 @@ MDADM_CONFIG="/etc/mdadm.conf" # MDADM_SEND_MAIL_ON_START=no +## Type: yesno +## Default: no +# +# "yes" for mdadm.conf to be used for array assembly on boot +# +BOOT_MD_USE_MDADM_CONFIG=yes + ## Type: integer ## Default: 60 #