diff options
author | James Davidson <james.davidson@vyatta.com> | 2012-10-19 15:59:56 -0700 |
---|---|---|
committer | Kim Hagen <khagen@multi-development.com> | 2014-04-25 20:28:18 +0200 |
commit | b4cf6641f3402a17dc83592abd8fe5e8ff0de802 (patch) | |
tree | 3ad3f1455e4d468a6437a8e5febc108d732837e9 | |
parent | 54ebd5693d7ff6f2847f6069570e3e33f90c92d4 (diff) | |
download | vyatta-cfg-system-b4cf6641f3402a17dc83592abd8fe5e8ff0de802.tar.gz vyatta-cfg-system-b4cf6641f3402a17dc83592abd8fe5e8ff0de802.zip |
Support and switch to overlayfs
-rwxr-xr-x | scripts/install/install-functions | 20 | ||||
-rwxr-xr-x | scripts/install/install-image-existing | 3 | ||||
-rwxr-xr-x | scripts/install/install-image-new | 2 |
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 |