summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorJames Davidson <james.davidson@vyatta.com>2012-10-19 15:59:56 -0700
committerJames Davidson <james.davidson@vyatta.com>2012-10-19 15:59:56 -0700
commit5b2bae39489a1746b0cda648aefbd2c853589b9e (patch)
tree9ed48eb555ada8bcbb119b8ab0d9c32d13a4cb5b /scripts
parent95b26e3dc49fca7724177abee881d881a257859e (diff)
downloadvyatta-cfg-system-5b2bae39489a1746b0cda648aefbd2c853589b9e.tar.gz
vyatta-cfg-system-5b2bae39489a1746b0cda648aefbd2c853589b9e.zip
Support and switch to overlayfs
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/install/install-functions20
-rwxr-xr-xscripts/install/install-image-existing3
-rwxr-xr-xscripts/install/install-image-new2
3 files changed, 21 insertions, 4 deletions
diff --git a/scripts/install/install-functions b/scripts/install/install-functions
index 34ced705..99d39dc9 100755
--- a/scripts/install/install-functions
+++ b/scripts/install/install-functions
@@ -290,7 +290,7 @@ is_union_install ()
return 1
fi
if grep -q ' /live/image [^ ]\+ rw' /proc/mounts \
- && grep -q 'unionfs / unionfs ' /proc/mounts; then
+ && egrep -q '(union|overlay)fs / (union|overlay)fs ' /proc/mounts; then
return 0
else
return 1
@@ -333,6 +333,24 @@ get_new_version ()
# couldn't find it
}
+# Generate mount options based on the type of union mount
+gen_mopts ()
+{
+ local mnttype=$1
+ local upper=$2
+ local lower=$3
+ local mntpoint=$4
+
+ case "$1" in
+ overlayfs)
+ echo "-t $mnttype -o noatime,upperdir=$upper,lowerdir=$lower $mnttype $mntpoint"
+ ;;
+ *)
+ echo "-t $mnttype -o noatime,dirs=$upper=rw:$lower=ro $mnttype $mntpoint"
+ ;;
+ esac
+}
+
# try to mount. log any errors and return the appropriate status.
# $1: arguments for mount
try_mount ()
diff --git a/scripts/install/install-image-existing b/scripts/install/install-image-existing
index 54881043..6df418ee 100755
--- a/scripts/install/install-image-existing
+++ b/scripts/install/install-image-existing
@@ -156,8 +156,7 @@ if ! try_mount "-o loop,ro $target_squash $READ_ROOT"; then
fi
# set up root for postinst
-margs="-t unionfs -o noatime,dirs=$RW_DIR=rw:$READ_ROOT=ro unionfs"
-margs="$margs $INST_ROOT"
+margs=$(gen_mopts "overlayfs" $RW_DIR $READ_ROOT $INST_ROOT)
if ! try_mount "$margs"; then
rm -rf $REL_ROOT
failure_exit 'Failed to set up root directory for postinst.'
diff --git a/scripts/install/install-image-new b/scripts/install/install-image-new
index 3097392a..5c87c1ea 100755
--- a/scripts/install/install-image-new
+++ b/scripts/install/install-image-new
@@ -94,7 +94,7 @@ if ! try_mount "-o loop,ro -t squashfs $target_squash $READ_ROOT"; then
echo 'Exiting...'
exit 1
fi
-margs="-t unionfs -o noatime,dirs=$rw_dir=rw:$READ_ROOT=ro unionfs $INST_ROOT"
+margs=$(gen_mopts "overlayfs" $rw_dir $READ_ROOT $INST_ROOT)
if ! try_mount "$margs"; then
echo 'Exiting...'
exit 1