summaryrefslogtreecommitdiffstats
path: root/modules.d/dnbd3-rootfs/hooks/s3-mount-root.sh
blob: 11ea46e30c68fdb33c5d9ff38f206c6ef2e0ddfb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh

source "/etc/openslx"

cnt=0
while ! [ -b "$SLX_DNBD3_DEVICE_COW" ] \
		|| ! [ "$( blockdev --getsize64 "$SLX_DNBD3_DEVICE_COW" 2> /dev/null )" -gt 0 ]; do
	(( ++cnt > 20 )) && break
	(( cnt % 5 == 0 )) && echo "Waiting for block device...."
	usleep 100000
	(( cnt > 10 )) && udevadm trigger && udevadm settle
done

ret=99
if [ -n "$SLX_MOUNT_ROOT_OPTIONS" ]; then
	# Always prefer mount options mandated by server
	mount "$SLX_DNBD3_DEVICE_COW" "$NEWROOT" $SLX_MOUNT_ROOT_OPTIONS
	ret=$?
else
	# Let's guess it's ext4, tune for maximum performance as we don't care about recoverability
	mount "$SLX_DNBD3_DEVICE_COW" "$NEWROOT" -o data=writeback,barrier=0,commit=60,noinit_itable,discard,noatime
	ret=$?
	if (( ret != 0 )); then
		# Just try with no options and hope for the best...
		mount "$SLX_DNBD3_DEVICE_COW" "$NEWROOT"
		ret=$?
	fi
fi

(( ret != 0 )) && exit $ret

if [ -n "$SLX_GENERATE_FSTAB_SCRIPT" ]; then
	eval "$SLX_GENERATE_FSTAB_SCRIPT"
else
	echo "" > "$NEWROOT/etc/fstab"
fi
true