Hello community, here is the log from the commit of package mdadm for openSUSE:Factory checked in at 2013-09-13 14:45:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mdadm (Old) and /work/SRC/openSUSE:Factory/.mdadm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mdadm" Changes: -------- --- /work/SRC/openSUSE:Factory/mdadm/mdadm.changes 2013-09-09 19:45:26.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.mdadm.new/mdadm.changes 2013-09-13 14:45:22.000000000 +0200 @@ -1,0 +2,46 @@ +Fri Sep 13 01:46:00 UTC 2013 - [email protected] + +- boot.md - simplify boot. + As array assembly is done by udev, it shouldn't + be done by boot.md. This will avoid some problems + with arrays getting started degraded. + +------------------------------------------------------------------- +Fri Sep 13 00:59:15 UTC 2013 - [email protected] + +- Make-IRs-and-run-work-properly-for-containers.patch +- mdmon-honour-offroot-again.patch +- DDF-allow-for-possibility-that-there-is-no-secondary.patch + Upstream fixes + +------------------------------------------------------------------- +Thu Sep 12 01:12:36 UTC 2013 - [email protected] + +- config-set-auto_seen-after-processing-the-auto-line.patch + Fix bug which causes "AUTO -all" in mdadm.conf + in initrd to be ignored, so array might be + auto-assembled too early. + +------------------------------------------------------------------- +Thu Sep 12 01:05:03 UTC 2013 - [email protected] + +- mkinitrd-boot.sh: simplify boot sequence by relying + completely on udev running "mdadm -I". Thus + mkinitrd-boot.sh needs to do very little. + The devfunction script in the mkinitrd package has + been modified to start newly degraded array after + a suitable timeout. +- mkinitrd-setup.sh: + - don't save md_devs as it isn't used any more + - allow md device names like "/dev/md_foo" which will + need to be supported in due course. + +------------------------------------------------------------------- +Mon Sep 9 03:06:20 UTC 2013 - [email protected] + +- mkinitd-boot.sh: Clear {root,resume}_major variable + + If multipath is in use, md is always on top of it. Therefore, the root + device is always an md device. (bnc#786526) + +------------------------------------------------------------------- New: ---- DDF-allow-for-possibility-that-there-is-no-secondary.patch Make-IRs-and-run-work-properly-for-containers.patch config-set-auto_seen-after-processing-the-auto-line.patch mdmon-honour-offroot-again.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mdadm.spec ++++++ --- /var/tmp/diff_new_pack.c0FGNc/_old 2013-09-13 14:45:23.000000000 +0200 +++ /var/tmp/diff_new_pack.c0FGNc/_new 2013-09-13 14:45:23.000000000 +0200 @@ -43,6 +43,14 @@ Source6: mkinitrd-boot.sh Source7: mdadm.cron Source8: mdadm.shutdown +# PATCH-FIX-UPSTREAM config-set-auto_seen-after-processing-the-auto-line.patch upstream-bugfix [email protected] +Patch1: config-set-auto_seen-after-processing-the-auto-line.patch +# PATCH-FIX-UPSTREAM DDF-allow-for-possibility-that-there-is-no-secondary.patch upstream-bugfix [email protected] +Patch2: DDF-allow-for-possibility-that-there-is-no-secondary.patch +# PATCH-FIX-UPSTREAM Make-IRs-and-run-work-properly-for-containers.patch upstream-bugfix [email protected] +Patch3: Make-IRs-and-run-work-properly-for-containers.patch +# PATCH-FIX-UPSTREAM mdmon-honour-offroot-again.patch upstream-bugfix [email protected] +Patch4: mdmon-honour-offroot-again.patch %define _udevdir %(pkg-config --variable=udevdir udev) %define _systemdshutdowndir %{_unitdir}/../system-shutdown @@ -54,6 +62,10 @@ %prep %setup -q -a1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %build make %{?_smp_mflags} CC="%__cc" CXFLAGS="$RPM_OPT_FLAGS -Wno-error" ++++++ DDF-allow-for-possibility-that-there-is-no-secondary.patch ++++++ >From b95cb4b9d88c8adf2adb7f2efef3ae3f72b27b8e Mon Sep 17 00:00:00 2001 From: NeilBrown <[email protected]> Date: Thu, 12 Sep 2013 14:57:28 +1000 Subject: [PATCH] DDF: allow for possibility that there is no secondary copy of metadata. If there isn't, we currently write the second copy at some random location :-) Reported-and-tested-by: Francis Moreau <[email protected]> Signed-off-by: NeilBrown <[email protected]> --- super-ddf.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/super-ddf.c b/super-ddf.c index 636d7b4..d2cdda4 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -880,7 +880,8 @@ static int load_ddf_headers(int fd, struct ddf_super *super, char *devname) super->primary.openflag && !super->secondary.openflag) ) super->active = &super->secondary; - } else if (devname) + } else if (devname && + be64_to_cpu(super->anchor.secondary_lba) != ~(__u64)0) pr_err("Failed to load secondary DDF header on %s\n", devname); if (super->active == NULL) @@ -2810,7 +2811,9 @@ static int add_to_super_ddf(struct supertype *st, } while (0) __calc_lba(dd, ddf->dlist, workspace_lba, 32); __calc_lba(dd, ddf->dlist, primary_lba, 16); - __calc_lba(dd, ddf->dlist, secondary_lba, 32); + if (ddf->dlist == NULL || + be64_to_cpu(ddf->dlist->secondary_lba) != ~(__u64)0) + __calc_lba(dd, ddf->dlist, secondary_lba, 32); pde->config_size = dd->workspace_lba; sprintf(pde->path, "%17.17s","Information: nil") ; @@ -2892,6 +2895,8 @@ static int __write_ddf_structure(struct dl *d, struct ddf_super *ddf, __u8 type) default: return 0; } + if (sector == ~(__u64)0) + return 0; header->type = type; header->openflag = 1; -- 1.8.3.1.487.g3e7a5b4 ++++++ Make-IRs-and-run-work-properly-for-containers.patch ++++++ >From d5a4041647d2b3328ce45ff727afe37477f07c75 Mon Sep 17 00:00:00 2001 From: NeilBrown <[email protected]> Date: Fri, 13 Sep 2013 10:51:20 +1000 Subject: [PATCH] Make -IRs and --run work properly for containers. We really need to make sure assemble_container_content() gets called to finished the assembly of these. Reported-by: Francis Moreau <[email protected]> Signed-off-by: NeilBrown <[email protected]> --- Assemble.c | 2 +- Incremental.c | 53 +++++++++++++++++++++++++++++++++++++++++++++-------- Manage.c | 4 ++-- mdadm.c | 7 ++++--- mdadm.h | 4 ++-- 5 files changed, 54 insertions(+), 16 deletions(-) diff --git a/Assemble.c b/Assemble.c index bc85603..86b4c89 100644 --- a/Assemble.c +++ b/Assemble.c @@ -1817,7 +1817,7 @@ int assemble_container_content(struct supertype *st, int mdfd, working++; } else if (errno == EEXIST) preexist++; - if (working + expansion == 0) + if (working + expansion == 0 && c->runstop <= 0) return 1;/* Nothing new, don't try to start */ map_update(&map, fd2devnm(mdfd), diff --git a/Incremental.c b/Incremental.c index f256b48..1bb3638 100644 --- a/Incremental.c +++ b/Incremental.c @@ -44,7 +44,7 @@ static int try_spare(char *devname, int *dfdp, struct dev_policy *pol, struct supertype *st, int verbose); static int Incremental_container(struct supertype *st, char *devname, - struct context *c); + struct context *c, char *only); int Incremental(char *devname, struct context *c, struct supertype *st) @@ -138,7 +138,7 @@ int Incremental(char *devname, struct context *c, if (map_lock(&map)) pr_err("failed to get " "exclusive lock on mapfile\n"); - rv = Incremental_container(st, devname, c); + rv = Incremental_container(st, devname, c, NULL); map_unlock(&map); return rv; } @@ -478,7 +478,7 @@ int Incremental(char *devname, struct context *c, close(mdfd); sysfs_free(sra); if (!rv) - rv = Incremental_container(st, chosen_name, c); + rv = Incremental_container(st, chosen_name, c, NULL); map_unlock(&map); if (rv == 1) /* Don't fail the whole -I if a subarray didn't @@ -1278,7 +1278,7 @@ static int try_spare(char *devname, int *dfdp, struct dev_policy *pol, return rv; } -int IncrementalScan(int verbose, char *devnm) +int IncrementalScan(struct context *c, char *devnm) { /* look at every device listed in the 'map' file. * If one is found that is not running then: @@ -1290,10 +1290,13 @@ int IncrementalScan(int verbose, char *devnm) struct map_ent *me; struct mddev_ident *devs, *mddev; int rv = 0; + char container[32]; + char *only = NULL; map_read(&mapl); devs = conf_get_ident(NULL); +restart: for (me = mapl ; me ; me = me->next) { mdu_array_info_t array; mdu_bitmap_file_t bmf; @@ -1302,10 +1305,42 @@ int IncrementalScan(int verbose, char *devnm) if (devnm && strcmp(devnm, me->devnm) != 0) continue; + if (devnm && me->metadata[0] == '/') { + char *sl; + /* member array, need to work on container */ + strncpy(container, me->metadata+1, 32); + container[31] = 0; + sl = strchr(container, '/'); + if (sl) + *sl = 0; + only = devnm; + devnm = container; + goto restart; + } mdfd = open_dev(me->devnm); if (mdfd < 0) continue; + if (!isdigit(me->metadata[0])) { + /* must be a container */ + struct supertype *st = super_by_fd(mdfd, NULL); + int ret = 0; + struct map_ent *map = NULL; + if (st) + st->ignore_hw_compat = 1; + if (st && st->ss->load_container) + ret = st->ss->load_container(st, mdfd, NULL); + close(mdfd); + if (!ret && st->ss->container_content) { + if (map_lock(&map)) + pr_err("failed to get exclusive lock on mapfile\n"); + ret = Incremental_container(st, me->path, c, only); + map_unlock(&map); + } + if (ret) + rv = 1; + continue; + } if (ioctl(mdfd, GET_ARRAY_INFO, &array) == 0 || errno != ENODEV) { close(mdfd); @@ -1330,7 +1365,7 @@ int IncrementalScan(int verbose, char *devnm) close(bmfd); } } - if (verbose >= 0) { + if (c->verbose >= 0) { if (added == 0) pr_err("Added bitmap %s to %s\n", mddev->bitmap_file, me->path); @@ -1346,7 +1381,7 @@ int IncrementalScan(int verbose, char *devnm) if (sra) { if (sysfs_set_str(sra, NULL, "array_state", "read-auto") == 0) { - if (verbose >= 0) + if (c->verbose >= 0) pr_err("started array %s\n", me->path ?: me->devnm); } else { @@ -1387,7 +1422,7 @@ static char *container2devname(char *devname) } static int Incremental_container(struct supertype *st, char *devname, - struct context *c) + struct context *c, char *only) { /* Collect the contents of this container and for each * array, choose a device name and assemble the array. @@ -1458,7 +1493,7 @@ static int Incremental_container(struct supertype *st, char *devname, strcpy(chosen_name, mp->path); else strcpy(chosen_name, mp->devnm); - } else { + } else if (!only) { /* Check in mdadm.conf for container == devname and * member == ra->text_version after second slash. @@ -1515,6 +1550,8 @@ static int Incremental_container(struct supertype *st, char *devname, trustworthy, chosen_name); } + if (only && (!mp || strcmp(mp->devnm, only) != 0)) + continue; if (mdfd < 0) { pr_err("failed to open %s: %s.\n", diff --git a/Manage.c b/Manage.c index 910caa6..c8276ca 100644 --- a/Manage.c +++ b/Manage.c @@ -170,7 +170,7 @@ static void remove_devices(char *devnm, char *path) free(path2); } -int Manage_run(char *devname, int fd, int verbose) +int Manage_run(char *devname, int fd, struct context *c) { /* Run the array. Array must already be configured * Requires >= 0.90.0 @@ -187,7 +187,7 @@ int Manage_run(char *devname, int fd, int verbose) return 1; } strcpy(nm, nmp); - return IncrementalScan(verbose, nm); + return IncrementalScan(c, nm); } int Manage_stop(char *devname, int fd, int verbose, int will_retry) diff --git a/mdadm.c b/mdadm.c index 1ada607..f55a035 100644 --- a/mdadm.c +++ b/mdadm.c @@ -1293,7 +1293,7 @@ int main(int argc, char *argv[]) if (!rv && c.readonly < 0) rv = Manage_ro(devlist->devname, mdfd, c.readonly); if (!rv && c.runstop > 0) - rv = Manage_run(devlist->devname, mdfd, c.verbose); + rv = Manage_run(devlist->devname, mdfd, &c); if (!rv && c.runstop < 0) rv = Manage_stop(devlist->devname, mdfd, c.verbose, 0); break; @@ -1535,7 +1535,7 @@ int main(int argc, char *argv[]) pr_err("--incremental --scan --fail not supported.\n"); break; } - rv = IncrementalScan(c.verbose, NULL); + rv = IncrementalScan(&c, NULL); } if (!devlist) { if (!rebuild_map && !c.scan) { @@ -1804,7 +1804,8 @@ static int misc_list(struct mddev_dev *devlist, if (mdfd>=0) { switch(dv->disposition) { case 'R': - rv |= Manage_run(dv->devname, mdfd, c->verbose); break; + c->runstop = 1; + rv |= Manage_run(dv->devname, mdfd, c); break; case 'S': rv |= Manage_stop(dv->devname, mdfd, c->verbose, 0); break; case 'o': diff --git a/mdadm.h b/mdadm.h index 2eca603..c90fe10 100644 --- a/mdadm.h +++ b/mdadm.h @@ -1171,7 +1171,7 @@ struct stat64; extern int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s); extern int Manage_ro(char *devname, int fd, int readonly); -extern int Manage_run(char *devname, int fd, int quiet); +extern int Manage_run(char *devname, int fd, struct context *c); extern int Manage_stop(char *devname, int fd, int quiet, int will_retry); extern int Manage_subdevs(char *devname, int fd, @@ -1237,7 +1237,7 @@ extern int WaitClean(char *dev, int sock, int verbose); extern int Incremental(char *devname, struct context *c, struct supertype *st); extern void RebuildMap(void); -extern int IncrementalScan(int verbose, char *devnm); +extern int IncrementalScan(struct context *c, char *devnm); extern int IncrementalRemove(char *devname, char *path, int verbose); extern int CreateBitmap(char *filename, int force, char uuid[16], unsigned long chunksize, unsigned long daemon_sleep, -- 1.8.3.1.487.g3e7a5b4 ++++++ boot.md ++++++ --- /var/tmp/diff_new_pack.c0FGNc/_old 2013-09-13 14:45:23.000000000 +0200 +++ /var/tmp/diff_new_pack.c0FGNc/_new 2013-09-13 14:45:23.000000000 +0200 @@ -3,17 +3,17 @@ # SUSE system startup script for MD RAID autostart # Copyright (C) 1995--2005 Kurt Garloff, SUSE / Novell Inc. # Copyright (C) 2006 Marian Jancar, SUSE / Novell Inc. -# +# # This library is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or (at # your option) any later version. -# +# # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. -# +# # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA @@ -36,7 +36,7 @@ ### END INIT INFO # Source LSB init functions -# providing start_daemon, killproc, pidofproc, +# providing start_daemon, killproc, pidofproc, # log_success_msg, log_failure_msg and log_warning_msg. # This is currently not used by UnitedLinux based distributions and # not needed for init scripts for UnitedLinux only. If it is used, @@ -70,7 +70,7 @@ # 6 - program is not configured # 7 - program is not running # 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl) -# +# # Note that starting an already running service, stopping # or restarting a not-running service as well as the restart # with force-reload (in case signaling is not supported) are @@ -97,16 +97,14 @@ case "$1" in start) echo -n "Starting MD RAID " - - mkdir -p /run/mdadm - # restart mdmon (exits silently if there is nothing to monitor) + /sbin/mdmon --all --takeover --offroot # Check for existence of needed config file and read it [ -r $mdadm_SYSCONFIG ] || _rc_exit 6 "... $mdadm_SYSCONFIG not existing " # Read config . $mdadm_SYSCONFIG - + [ "x$MDADM_CONFIG" != x"" ] && mdadm_CONFIG="$MDADM_CONFIG" # Check for missing binaries (stale symlinks should not happen) @@ -116,22 +114,8 @@ [ ! -f /proc/mdstat -a -x /sbin/modprobe ] && /sbin/modprobe md_mod [ -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" - fi - - if ! grep -qs '^[^#]*[^[:blank:]#]' $mdadm_CONFIG; then - # empty or missing /etc/mdadm.conf, "unused" - rc_status -u - else - # firstly finish any incremental assembly that has started. - $mdadm_BIN -IRs - $mdadm_BIN -A -s -c $mdadm_CONFIG - # a status of 2 is not an error - test $? -eq 0 -o $? -eq 2 - rc_status -v - fi + # leave all array assembly to udev. + rc_status -v ;; stop) echo -n "Not shutting down MD RAID - reboot/halt scripts do this." @@ -151,11 +135,12 @@ rc_status -v ;; reload) - # We cannot really reload the kernel module, or reassemble the - # arrays, but we can restart mdmon. It will replace existing - # mdmon, or exit quietly if there is nothing to do. - echo -n "MD RAID: restarting mdmon if it is needed." - /sbin/mdmon --all --takeover --offroot + # There isn't much that is useful to do. + # We cannot reload the kernel module, or reassemble the + # arrays. Restarting mdmon is pointless and might be bad + # as mdmon might be running in the initrd. + # We could start and newly-degraded arrays. + /sbin/mdadm -IRs rc_status -v ;; *) ++++++ config-set-auto_seen-after-processing-the-auto-line.patch ++++++ >From dbdf3f15e7ed9d5462a6ece09dd1c57ca430d912 Mon Sep 17 00:00:00 2001 From: NeilBrown <[email protected]> Date: Tue, 10 Sep 2013 17:10:10 +1000 Subject: [PATCH] config: set "auto_seen" after processing the auto line. Otherwise when we process an empty autoline (to be sure to capture the MDADM_CONF_AUTO environment variable) we can end up setting everything to 'yes' which over-rides 'no'. Signed-off-by: NeilBrown <[email protected]> --- config.c | 1 + 1 file changed, 1 insertion(+) diff --git a/config.c b/config.c index f1a70c5..a35807c 100644 --- a/config.c +++ b/config.c @@ -575,6 +575,7 @@ void autoline(char *line) if (auto_seen) return; + auto_seen = 1; /* Parse the 'auto' line creating policy statements for the 'auto' policy. * -- 1.8.3.1.487.g3e7a5b4 ++++++ mdmon-honour-offroot-again.patch ++++++ >From 5d79c72e16b32d7d6d0f535348286a7f2a966092 Mon Sep 17 00:00:00 2001 From: "[email protected]" <[email protected]> Date: Wed, 11 Sep 2013 22:15:19 +0200 Subject: [PATCH] mdmon: honour --offroot, again commit 3e32ba9d removed support for --offroot, and a9c15847 made mdmon use @ in argv[0] only when started from initrd. This breaks mdadm in OpenSUSE 12.3, which starts mdmon from the root file system and relies on --offroot to work as documented earlier. Reintroducing --offroot as an undocumented option, as its use is going to go away soon anyway. If this can't be applied, it should probably be included as distro-specific patch if mdadm 3.3 is built for OpenSUSE 12.3. I haven't checked if the patch is necesary for OpenSUSE Factory, too. Signed-off-by: Martin Wilck <[email protected]> Signed-off-by: NeilBrown <[email protected]> --- mdmon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mdmon.c b/mdmon.c index f0b0623..8cd53d8 100644 --- a/mdmon.c +++ b/mdmon.c @@ -320,7 +320,7 @@ int main(int argc, char *argv[]) dofork = 0; break; case OffRootOpt: - /* silently ignore old option */ + argv[0][0] = '@'; break; case 'h': default: -- 1.8.3.1.487.g3e7a5b4 ++++++ mkinitrd-boot.sh ++++++ --- /var/tmp/diff_new_pack.c0FGNc/_old 2013-09-13 14:45:23.000000000 +0200 +++ /var/tmp/diff_new_pack.c0FGNc/_new 2013-09-13 14:45:23.000000000 +0200 @@ -1,32 +1,28 @@ #!/bin/bash -#%stage: softraid -# grep needed for udev rules file. +#%stage: boot +#%depends: start #%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. +## This only sets the 'start_ro' module parameter to ensure +## arrays don't start resync until after the first write. +## All array assembly is performed by udev -> "mdadm -I" ## ## Command line parameters ## ----------------------- ## ## need_mdadm=1 use MD raid -## +## # load the necessary module before we initialize the raid system load_modules -# Create dir for socket and pid files -mkdir -p /run/mdadm -[ "$mduuid" ] && md_uuid="$mduuid" - +#check_for_device uses $md_major +#we depend on 'start' to ensure /proc/devices exists 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 @@ -34,110 +30,3 @@ if [ -f /sys/module/md_mod/parameters/start_ro ]; then echo 1 > /sys/module/md_mod/parameters/start_ro fi - -if test -n "$debug_linuxrc"; then - mdadm="mdadm -v" -else - mdadm="mdadm" -fi - -# uuid -> array name -get_md_name() -{ - local uuid=$1 res - - if ! test -f /etc/mdadm.conf; then - return 1 - fi - res=$(sed -rn "s/^ARRAY +([^ ]+).* UUID=$uuid.*/\1/p" /etc/mdadm.conf) - case "$res" in - "" | \<* | *=*) - return 1 - ;; - /*) - echo "$res" - ;; - *) - echo "/dev/md/$res" - ;; - esac - return 0 -} - -md_assemble() -{ - local dev=$1 uuid mdconf container container_name - - if test -e "$dev"; then - return - fi - case "$dev" in - /dev/md[0-9]*p[0-9]*) - dev=${dev%p[0-9]*} - ;; - /dev/md*) - ;; - /dev/disk/by-id/md-uuid-*) - uuid=${dev#/dev/disk/by-id/md-uuid-} - uuid=${uuid%-part*} - dev= - ;; - *) - return - esac - if test -f /etc/mdadm.conf; then - mdconf="-c /etc/mdadm.conf" - local line - if test -n "$dev"; then - line=$(sed -rn "\:^ARRAY +$dev :p" /etc/mdadm.conf) - else - line=$(sed -rn "/^ARRAY .* UUID=$uuid/p" /etc/mdadm.conf) - fi - container=$(echo "$line" | \ - sed -rn 's/.* container=([^ ]*).*/\1/p') - else - mdconf="-c partitions" - fi - case "$container" in - "") - ;; - /dev/*) - $mdadm -A $mdconf $container --offroot - ;; - [0-9a-f]*[0-9a-f]) - container_name=$(get_md_name "$container") - if test -z "$container_name"; then - container_name=/dev/md/container - fi - $mdadm -A $mdconf --uuid="$container" "$container_name" --offroot - ;; - *) - echo "unrecognized container for $dev: $container" - esac - if test -n "$dev"; then - $mdadm -A $mdconf "$dev" --offroot - else - dev=$(get_md_name "$uuid") - if test -z "$dev"; then - # mdadm will pick a device name - $mdadm -A $mdconf --uuid=$uuid --offroot - else - $mdadm -A $mdconf --uuid=$uuid "$dev" --offroot - fi - fi -} - -# run any degraded arrays assembled incrementally -wait_for_events -$mdadm --incremental --run --scan --offroot -md_assemble "$resumedev" -md_assemble "$rootdev" -if [ -n "$md_dev" ] ; then - md_assemble "$md_dev" -fi -# assemble any md devices seen by setup-md.sh at initrd build time -for dev in $md_devs; do - md_assemble "$dev" -done - -wait_for_events ++++++ mkinitrd-setup.sh ++++++ --- /var/tmp/diff_new_pack.c0FGNc/_old 2013-09-13 14:45:23.000000000 +0200 +++ /var/tmp/diff_new_pack.c0FGNc/_new 2013-09-13 14:45:23.000000000 +0200 @@ -16,12 +16,12 @@ for bd in $blockdev ; do is_part_dev=false case $bd in - /dev/md[0-9]*p[0-9]*) + /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]*) + /dev/md[0-9_]*) ;; *) mdblockdev="$mdblockdev $bd" @@ -95,12 +95,6 @@ echo -e "${md_conf["$md"]}" >> $tmp_mnt/etc/mdadm.conf done fi -# Remember which arrays are needed for the root or swap device and assemble -# them all during boot. The root= or resume= option might not directly refer to -# the array. -if test -n "$md_devs"; then - md_devs=$(printf '/dev/%s ' $md_devs) -fi if [ "x$need_mdadm" = "x1" ] ; then for rule in \ @@ -115,4 +109,3 @@ fi save_var need_mdadm -save_var md_devs -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
