Skip to content

Commit

Permalink
Add backwards compatibility for old labels: live-{rw,sn} and home-rw.
Browse files Browse the repository at this point in the history
For home-rw we create a live.persist file which make old volumes
completely compatible with the custom mounts system.
  • Loading branch information
Tails developers authored and daniel-baumann committed Apr 5, 2012
1 parent bfec46c commit b78990c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 3 deletions.
11 changes: 8 additions & 3 deletions scripts/live
Expand Up @@ -1001,7 +1001,7 @@ setup_unionfs ()

if echo ${PERSISTENT_METHOD} | grep -qe "\<overlay\>"
then
overlays="${root_overlay_label} ${custom_overlay_label}"
overlays="${root_overlay_label} ${old_root_overlay_label} ${old_home_overlay_label} ${custom_overlay_label}"
fi

if echo ${PERSISTENT_METHOD} | grep -qe "\<snapshot\>"
Expand All @@ -1017,7 +1017,7 @@ setup_unionfs ()
do
media="$(echo ${media} | tr ":" " ")"
case ${media} in
${root_snapshot_label}=*)
${root_snapshot_label}=*|${old_root_snapshot_label}=*)
if [ -z "${root_snapdata}" ]
then
root_snapdata="${media#*=}"
Expand All @@ -1032,13 +1032,18 @@ setup_unionfs ()
home_snapdata="${media#*=}"
fi
;;
${root_overlay_label}=*)
${root_overlay_label}=*|${old_root_overlay_label}=*)
if [ -z "${root_overlay_device}" ]
then
device="${media#*=}"
root_overlay_device="${device}"
fi
;;
${old_home_overlay_label}=*)
device="${media#*=}"
fix_home_rw_compatibility ${device}
overlay_devices="${overlay_devices} ${device}"
;;
${custom_overlay_label}=*)
device="${media#*=}"
overlay_devices="${overlay_devices} ${device}"
Expand Down
35 changes: 35 additions & 0 deletions scripts/live-helpers
Expand Up @@ -16,8 +16,11 @@ else
fi

root_overlay_label="full-ov"
old_root_overlay_label="live-rw"
old_home_overlay_label="home-rw"
custom_overlay_label="custom-ov"
root_snapshot_label="live-sn"
old_root_snapshot_label="live-sn"
home_snapshot_label="home-sn"
persistence_list="live.persist"

Expand Down Expand Up @@ -254,8 +257,11 @@ Arguments ()

persistent-subtext=*)
root_overlay_label="${root_overlay_label}-${ARGUMENT#persistent-subtext=}"
old_root_overlay_label="${old_root_overlay_label}-${ARGUMENT#persistent-subtext=}"
old_home_overlay_label="${old_home_overlay_label}-${ARGUMENT#persistent-subtext=}"
custom_overlay_label="${custom_overlay_label}-${ARGUMENT#persistent-subtext=}"
root_snapshot_label="${root_snapshot_label}-${ARGUMENT#persistent-subtext=}"
old_root_snapshot_label="${root_snapshot_label}-${ARGUMENT#persistent-subtext=}"
home_snapshot_label="${home_snapshot_label}-${ARGUMENT#persistent-subtext=}"
;;

Expand Down Expand Up @@ -1405,3 +1411,32 @@ do_custom_mounts () {
export PERSISTENCE_IS_ON
done < ${custom_mounts}
}

fix_home_rw_compatibility ()
{
local device=${1}

if [ -n "${PERSISTENT_READONLY}" ]
then
return
fi

local backing="$(where_is_mounted ${device})"
if [ -z "${backing}" ]
then
backing="${rootmnt}/live/persistent/$(basename ${device})"
mkdir -p "${backing}"
local device_fstype="$(get_fstype ${device})"
local device_mount_opts="rw,noatime"
if ! mount -t "${device_fstype}" -o "${device_mount_opts}" "${device}" "${backing}" >/dev/null 2>&1
then
return
fi

local include_list="${backing}/${persistence_list}"
if [ ! -r "${include_list}" ]
then
echo "# home-rw backwards compatibility:
. /home" > "${include_list}"
fi
}

0 comments on commit b78990c

Please sign in to comment.