summaryrefslogtreecommitdiffstats
path: root/remote/modules/run-virt/data/opt/openslx/scripts
diff options
context:
space:
mode:
authorSimon Rettberg2016-02-25 15:08:39 +0100
committerSimon Rettberg2016-02-25 15:08:39 +0100
commit7b6d5369e9891c06e9a0ea4935705a6834c1007b (patch)
tree3aab866fd51f7b03e853abe524a64a66bad18622 /remote/modules/run-virt/data/opt/openslx/scripts
parent[pam] Clean up pam_script_auth, don't exit on noncritical errors (diff)
downloadtm-scripts-7b6d5369e9891c06e9a0ea4935705a6834c1007b.tar.gz
tm-scripts-7b6d5369e9891c06e9a0ea4935705a6834c1007b.tar.xz
tm-scripts-7b6d5369e9891c06e9a0ea4935705a6834c1007b.zip
[run-virt] Better error checking/logging for dnbd3-fuse
Diffstat (limited to 'remote/modules/run-virt/data/opt/openslx/scripts')
-rw-r--r--remote/modules/run-virt/data/opt/openslx/scripts/includes/setup_image_access.inc26
1 files changed, 15 insertions, 11 deletions
diff --git a/remote/modules/run-virt/data/opt/openslx/scripts/includes/setup_image_access.inc b/remote/modules/run-virt/data/opt/openslx/scripts/includes/setup_image_access.inc
index e84486cf..dd408b22 100644
--- a/remote/modules/run-virt/data/opt/openslx/scripts/includes/setup_image_access.inc
+++ b/remote/modules/run-virt/data/opt/openslx/scripts/includes/setup_image_access.inc
@@ -8,6 +8,7 @@ writelog "Now in setup_image_access.inc ..."
unset vm_diskfile
unset vm_revision
unset dnbd3_fuse_mount_point
+unset dnbd3_tmplog
if ! which dnbd3-fuse; then
writelog "Can't use dnbd3 as dnbd3-fuse binary is not in PATH"
elif [ -z "$SLX_DNBD3_SERVERS" ] || [ "x$SLX_VM_DNBD3" != "xyes" ]; then
@@ -17,34 +18,37 @@ else
dnbd3_fuse_mount_point="$TMPDIR/dnbd3fuse.mnt"
mkdir -p "${dnbd3_fuse_mount_point}"
# start dnbd3-fuse in subshell
+ dnbd3_tmplog="$TMPDIR/dnbd3fuse.log"
+ dnbd3_exitflag="$TMPDIR/dnbd3exit$RANDOM"
+ rm -f -- "$dnbd3_exitflag"
(
- tmplog="$TMPDIR/dnbd3fuse.log"
- [ -z "$tmplog" ] && tmplog="/tmp/dnbd3-fuse.$$.$RANDOM.$USER"
- dnbd3-fuse -f -o allow_other,max_readahead=262144 -h "$SLX_DNBD3_SERVERS" -i "${imgrelpath}" "${dnbd3_fuse_mount_point}" > "$tmplog" 2>&1
+ dnbd3-fuse -f -o allow_other,max_readahead=262144 -h "$SLX_DNBD3_SERVERS" -i "${imgrelpath}" "${dnbd3_fuse_mount_point}" > "$dnbd3_tmplog" 2>&1
RET=$?
+ touch "$dnbd3_exitflag"
if [ "$RET" != "0" ]; then
writelog "dnbd3-fuse stopped working (Exit code $RET)"
- slxlog "virt-dnbd3-fuse" "dnbd3-fuse stopped/refused serving '${imgrelpath}' from '${SLX_DNBD3_SERVERS}' with error code: $RET" "${tmplog}"
+ slxlog "virt-dnbd3-fuse" "dnbd3-fuse stopped/refused serving '${imgrelpath}' from '${SLX_DNBD3_SERVERS}' with error code: $RET" "${dnbd3_tmplog}"
fi
- sleep 1
- rm -f -- "$tmplog"
+ sleep 2
+ rm -f -- "$dnbd3_tmplog" "$dnbd3_exitflag"
) &
# give it a bit of time
- usleep 200000
+ usleep 250000
# check if we have the image
- for TIMEOUT in 1 1; do
+ for TIMEOUT in 0.5 1 1 OUT; do
if [ -r "${dnbd3_fuse_mount_point}/img" ]; then
- vm_revision="$(grep "^Revision:" "${dnbd3_fuse_mount_point}/status" | cut -d" " -f2)"
+ vm_revision="$(grep -m 1 "^Revision:" "${dnbd3_fuse_mount_point}/status" | cut -d" " -f2)"
vm_diskfile="${dnbd3_fuse_mount_point}/img"
writelog "DNBD3: $imgrelpath on $vm_diskfile with rid $vm_revision"
vmpath="$vm_diskfile"
break
fi
- sleep $TIMEOUT
+ [ "$TIMEOUT" = "OUT" -o -e "$dnbd3_exitflag" ] && break
+ sleep "$TIMEOUT"
done
if [ -z "$vm_diskfile" ]; then
- slxlog "virt-dnbd3" "No dnbd3 server for ${imgrelpath} found, trying NFS/CIFS..."
+ slxlog "virt-dnbd3" "No dnbd3 server for ${imgrelpath} found, trying NFS/CIFS..." "$dnbd3_tmplog"
writelog "No working dnbd3 server found :-("
fi
fi