summaryrefslogtreecommitdiffstats
path: root/modules.d/dnbd3-rootfs/hooks/s3-mount-root.sh
blob: 78410fceb9e7a6ea1857df8352bf12b96f21214e (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
#!/bin/bash

type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh # $NEWROOT
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
	echo "Mounting with provided options: $SLX_MOUNT_ROOT_OPTIONS"
	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
	echo "Trying optimized ext4 mount options..."
	mount -t ext4 "$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...
		echo "Trying default mount with no options..."
		mount "$SLX_DNBD3_DEVICE_COW" "$NEWROOT"
		ret=$?
	fi
fi

exit $ret