enter_chroot: avoid multiple readlink calls on mount point
We call `readlink -f` on the chroot mount point to resolve any symlinks
in the path (since that is what `mount` records). But the only paths
that can have symlinks are in the base chroot mount. Everything below
that we know are not going to be symlinks (since we've set up the paths
ourselves). So process the chroot mount point with readlink once and
reuse that value everywhere else.
BUG=None
TEST=`cros_sdk --enter true` still mounts & unmounts properly
Change-Id: Id1e734d20c0cb766f5490583b793930af77b3b14
Reviewed-on: http://gerrit.chromium.org/gerrit/8645
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/sdk_lib/enter_chroot.sh b/sdk_lib/enter_chroot.sh
index afcd96f..a017285 100755
--- a/sdk_lib/enter_chroot.sh
+++ b/sdk_lib/enter_chroot.sh
@@ -86,6 +86,7 @@
SYNCERPIDFILE="${FLAGS_chroot}/var/tmp/enter_chroot_sync.pid"
+MOUNTED_PATH=$(readlink -f "$FLAGS_chroot")
function ensure_mounted {
# If necessary, mount $source in the host FS at $target inside the
# chroot directory with $mount_args.
@@ -94,7 +95,7 @@
local target="$3"
local warn="$4"
- local mounted_path="$(readlink -f "${FLAGS_chroot}/$target")"
+ local mounted_path="${MOUNTED_PATH}$target"
case ${MOUNT_CACHE} in
*" on ${mounted_path} "*)
@@ -420,7 +421,6 @@
sudo rm -f "${SYNCERPIDFILE}" || \
debug "Unable to clean up syncer process.";
- MOUNTED_PATH=$(readlink -f "$FLAGS_chroot")
debug "Unmounting chroot environment."
safe_umount_tree "${MOUNTED_PATH}/"
fi