Fix docache (bug #397309)
authorSebastian Pipping <sebastian@pipping.org>
Sat, 17 Mar 2012 01:23:43 +0000 (02:23 +0100)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 17 Mar 2012 01:23:43 +0000 (02:23 +0100)
ChangeLog
defaults/initrd.scripts
defaults/linuxrc

index c1f376db4acb10d99855101d05610b2f940681ec..f83809bbb04c27691a759e5051d5ef201826d9d0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@
 # Distributed under the GPL v2
 # $Id$
 
+  17 Mar 2012; Sebastian Pipping <sping@gentoo.org> defaults/initrd.scripts,
+  defaults/linuxrc:
+  Fix docache (bug #397309)
+
   16 Mar 2012; Sebastian Pipping <sping@gentoo.org> defaults/initrd.scripts,
   defaults/linuxrc:
   Drop into debug shell when squashfs could not be mounted
index 296b150fa8d73af3115d23923a8596e2abeab279..350de4a7a19e8da5adc712abbd1f8e74260b81b8 100755 (executable)
@@ -191,12 +191,11 @@ cache_cd_contents() {
                        cp -a ${CDROOT_PATH}/${LOOP} ${NEW_ROOT}/mnt/${LOOP}
                        if [ $? -ne 0 ]
                        then
-                               bad_msg "Failed to cache the loop file! Lack of space?"
+                               warn_msg "Failed to cache the loop file! Lack of RAM?"
+                               rm -rf ${NEW_ROOT}/mnt/${LOOP} 2>/dev/null
                                rm -rf ${NEW_ROOT}/mnt/livecd.* 2>/dev/null
                                rm -rf ${NEW_ROOT}/mnt/image.* 2>/dev/null
                                rm -rf ${NEW_ROOT}/mnt/zisofs 2>/dev/null
-                       else
-                               LOOPEXT='../'
                        fi
                fi
        fi
index 5932024b0f8cc077cfd10a9885c905611c9af184..9ac2c7cca96a62f0339fcc0efde773893cd05738 100755 (executable)
@@ -627,7 +627,12 @@ then
                then
                        if [ "${USE_AUFS_NORMAL}" != '1' ]; then
                                good_msg 'Mounting squashfs filesystem'
-                               mount -t squashfs -o loop,ro "${CDROOT_PATH}/${LOOPEXT}${LOOP}" "${NEW_ROOT}/mnt/livecd" || {
+                               _CACHED_SQUASHFS_PATH="${NEW_ROOT}/mnt/${LOOP}"
+                               _squashfs_path="${CDROOT_PATH}/${LOOPEXT}${LOOP}"  # Default to uncached
+                               # Upgrade to cached version if possible
+                               [ "${DO_cache}" -a -f "${_CACHED_SQUASHFS_PATH}" ] \
+                                               && _squashfs_path=${_CACHED_SQUASHFS_PATH}
+                               mount -t squashfs -o loop,ro "${_squashfs_path}" "${NEW_ROOT}/mnt/livecd" || {
                                        bad_msg "Squashfs filesystem could not be mounted, dropping into shell."
                                        if [ -e /proc/filesystems ]; then
                                                fgrep -q squashfs /proc/filesystems || \