From 0a0e6ecee3f83360ff43fc4d240a9503f52783d6 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 28 Sep 2011 11:57:21 -0400 Subject: [PATCH] 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 Commit-Ready: Mike Frysinger Tested-by: Mike Frysinger --- sdk_lib/enter_chroot.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk_lib/enter_chroot.sh b/sdk_lib/enter_chroot.sh index afcd96f44f..a017285b51 100755 --- a/sdk_lib/enter_chroot.sh +++ b/sdk_lib/enter_chroot.sh @@ -86,6 +86,7 @@ LOCKFILE="$FLAGS_chroot/var/lock/enter_chroot" 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 @@ function ensure_mounted { 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 @@ function teardown_env { 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