diff options
| author | Marco Amadori <marco.amadori@gmail.com> | 2008-09-18 23:37:27 +0200 |
|---|---|---|
| committer | Daniel Baumann <daniel@debian.org> | 2011-03-09 17:48:02 +0100 |
| commit | 7e61a38fb7e7c6c2fdcb0b01c526b6fefc3a87e6 (patch) | |
| tree | b0958012f100531701473f6039acf095b506d0ad /scripts/live-helpers | |
| parent | 64db924e2232aa8a2bee5aa177d647fcc1589a4c (diff) | |
| download | live-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-helpers | 26 |
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 |
