summaryrefslogtreecommitdiff
path: root/scripts/live-helpers
diff options
context:
space:
mode:
authorMarco Amadori <marco.amadori@gmail.com>2008-09-18 23:37:27 +0200
committerDaniel Baumann <daniel@debian.org>2011-03-09 17:48:02 +0100
commit7e61a38fb7e7c6c2fdcb0b01c526b6fefc3a87e6 (patch)
treeb0958012f100531701473f6039acf095b506d0ad /scripts/live-helpers
parent64db924e2232aa8a2bee5aa177d647fcc1589a4c (diff)
downloadlive-boot-7e61a38fb7e7c6c2fdcb0b01c526b6fefc3a87e6.tar.gz
live-boot-7e61a38fb7e7c6c2fdcb0b01c526b6fefc3a87e6.zip
Reordered persistence lookups and boundaries (Closes: #500672).
* This finally enables "live-rw" partition persistence, yes it works, it is still ugly and slow, but make it work first and let optimize it later, hopefully in one of the next commits. To rush test it, 'mkfs.ext2 -L "live-rw" /dev/XhdX' on a qemu drive and reboot the live with "persistent" on.
Diffstat (limited to 'scripts/live-helpers')
-rw-r--r--scripts/live-helpers26
1 files changed, 23 insertions, 3 deletions
diff --git a/scripts/live-helpers b/scripts/live-helpers
index 2641487..44bb12a 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -288,8 +288,12 @@ try_mount ()
find_cow_device ()
{
+ # Returns a device containing a partition labeled "${pers_label}" or containing a file named the same way
+ # in the latter case the partition containing the file is left mounted
+ # if is not in black_listed_devices
pers_label="${1}"
cow_backing="/${pers_label}-backing"
+ black_listed_devices="${2}"
for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v fd)
do
@@ -297,6 +301,12 @@ find_cow_device ()
do
devname=$(sys2dev "${dev}")
+ if echo "${black_listed_devices}" | grep -q "${devname}"
+ then
+ # skip this device enterely
+ break
+ fi
+
if [ "$(/lib/udev/vol_id -l ${devname} 2>/dev/null)" = "${pers_label}" ]
then
echo "${devname}"
@@ -306,7 +316,10 @@ find_cow_device ()
case "$(get_fstype ${devname})" in
vfat|ext2|ext3|jffs2)
mkdir -p "${cow_backing}"
- try_mount "${devname}" "${cow_backing}" "rw"
+ if ! try_mount "${devname}" "${cow_backing}" "rw"
+ then
+ break
+ fi
if [ -f "${cow_backing}/${pers_label}" ]
then
@@ -325,11 +338,12 @@ find_cow_device ()
find_files ()
{
- # return the first of ${filenames} found on vfat and ext2/ext3 devices
+ # return the a string composed by device name, mountpoint an the first of ${filenames} found on a supported partition
# FIXME: merge with above function
filenames="${1}"
snap_backing="/snap-backing"
+ black_listed_devices="${2}"
for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v fd)
do
@@ -338,6 +352,12 @@ find_files ()
devname=$(sys2dev "${dev}")
devfstype="$(get_fstype ${devname})"
+ if echo "${black_listed_devices}" | grep -q "${devname}"
+ then
+ # skip this device enterely
+ break
+ fi
+
if is_supported_fs ${devfstype}
then
mkdir -p "${snap_backing}"
@@ -349,7 +369,7 @@ find_files ()
if [ -f "${snap_backing}/${filename}" ]
then
echo "${devname} ${snap_backing} ${filename}"
- # return without mounting, it will be umounted later
+ umount ${snap_backing}
return 0
fi
done