[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH OSSTEST] Debian: Wait for udev devices to settle in erase-other-disks
Otherwise we, apparently, have a race between the "test -b" + dd against the sda1 device node being removed and end up creating a file called /dev/sda1 containing 32K of zeroes, which will later render mke2fs very confused. For some reason we seem to reliably loose the race on Jessie i386 host installs, but not on Wheezy or other arches on Jessie. This was tricky to diagnose because the Debian installer main-menu process appears to buffer the output of things it runs before logging them to /var/log/syslog, which means the output of "set -x" and the actual affect of the commands (e.g. in the kernel messages) can be presented in very confusing orders. Hence this patch also adds extensive use of logger(1) to record what it is actually doing at the time it does it. These logs include the pid of the command too since main-menu only logs its own pid, not that of the subcommand which gneerated the output. Lastly this patch adds an explicit test that each device it touches is actually still a block device afterwards. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- Osstest/Debian.pm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Osstest/Debian.pm b/Osstest/Debian.pm index fb2e56a..a421d74 100644 --- a/Osstest/Debian.pm +++ b/Osstest/Debian.pm @@ -975,13 +975,26 @@ END #!/bin/sh set -ex stamp=/var/erase-other-disks.stamp -if test -f \$stamp; then exit 0; fi +if test -f \$stamp; then + logger -t osstest-erase-other-disks-\$\$ "Already ran, exiting" + exit 0 +fi >\$stamp +logger -t osstest-erase-other-disks-\$\$ "Running..." zero () { if test -b \$dev; then + logger -t osstest-erase-other-disks-\$\$ "Erasing \$dev" dd if=/dev/zero of=\$dev count=64 ||: + if ! test -b \$dev; then + logger -t osstest-erase-other-disks-\$\$ "\$dev is no longer a block device!" + exit 1 + fi + else + logger -t osstest-erase-other-disks-\$\$ "\$dev does not exist or is not a block device." fi } + +udevadm settle for sd in sd hd; do for b in a b c d e f; do dev=/dev/\${sd}\${b} -- 2.5.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |