summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Davidson <james.davidson@vyatta.com>2012-10-19 15:59:56 -0700
committerKim Hagen <khagen@multi-development.com>2014-04-25 20:28:18 +0200
commitb4cf6641f3402a17dc83592abd8fe5e8ff0de802 (patch)
tree3ad3f1455e4d468a6437a8e5febc108d732837e9
parent54ebd5693d7ff6f2847f6069570e3e33f90c92d4 (diff)
downloadvyatta-cfg-system-b4cf6641f3402a17dc83592abd8fe5e8ff0de802.tar.gz
vyatta-cfg-system-b4cf6641f3402a17dc83592abd8fe5e8ff0de802.zip
Support and switch to overlayfs
-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 0c2210fb..1929d1b3 100755
--- a/scripts/install/install-functions
+++ b/scripts/install/install-functions
@@ -285,7 +285,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
@@ -328,6 +328,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 2dedeb95..ac020c96 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