Stop the automounting daemon whenever we're inside the chroot.

If automounting is enabled while we're inside the chroot, simple mount /
unmount commands will fail, causing image building commands to fail flakily.

This allows for quick mount / unmount.

BUG=chromium-os:23443
TEST='cros_sdk true' works now and does not print warnings on systems that
     previously had race conditions in this case.

Change-Id: I18d725324cc42ab7c527d3b52479b6a90bc4172c
Reviewed-on: https://gerrit.chromium.org/gerrit/25166
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: David James <davidjames@chromium.org>
Commit-Ready: David James <davidjames@chromium.org>
This commit is contained in:
David James 2012-06-12 11:04:34 -07:00 committed by Gerrit
parent 334050f24e
commit fae0a59e8b

View File

@ -380,21 +380,11 @@ setup_env() {
warn "-- Note: modprobe fuse failed. gmergefs will not work" warn "-- Note: modprobe fuse failed. gmergefs will not work"
fi fi
# Turn off automounting of external media when we enter the # Turn off automounting of external media when we enter the chroot by
# chroot; thus we don't have to worry about being able to unmount # stopping the gvfs-gdu-volume-monitor. This is currently the most
# from inside. # reliable way to disable automounting.
if SAVED_PREF=$(gconftool-2 -g ${AUTOMOUNT_PREF} 2>/dev/null); then # See https://bugzilla.gnome.org/show_bug.cgi?id=677648
if [ "${SAVED_PREF}" != "false" ]; then sudo killall -STOP gvfs-gdu-volume-monitor 2>/dev/null || true
if [ $(gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} false) ]; then
warn "-- Note: USB sticks may be automounted by your host OS."
warn "-- Note: If you plan to burn bootable media, you may need to"
warn "-- Note: unmount these devices manually, or run image_to_usb.sh"
warn "-- Note: outside the chroot."
fi
fi
fi
# Always write the temp file so we can read it when exiting
echo "${SAVED_PREF:-false}" > "${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}"
# Configure committer username and email in chroot .gitconfig. Change # Configure committer username and email in chroot .gitconfig. Change
# to the root directory first so that random $PWD/.git/config settings # to the root directory first so that random $PWD/.git/config settings
@ -497,12 +487,6 @@ teardown_env() {
# Remove any dups from lock file while installing new one # Remove any dups from lock file while installing new one
sort -u -n "$TMP_LOCKFILE" > "$LOCKFILE" sort -u -n "$TMP_LOCKFILE" > "$LOCKFILE"
SAVED_PREF=$(<"${FLAGS_chroot}${SAVED_AUTOMOUNT_PREF_FILE}")
if [ "${SAVED_PREF}" != "false" ]; then
gconftool-2 -s --type=boolean ${AUTOMOUNT_PREF} ${SAVED_PREF} || \
warn "could not re-set your automount preference."
fi
if [ -s "$LOCKFILE" ]; then if [ -s "$LOCKFILE" ]; then
debug "At least one other pid is running in the chroot, so not" debug "At least one other pid is running in the chroot, so not"
debug "tearing down env." debug "tearing down env."
@ -529,6 +513,9 @@ teardown_env() {
debug "Unmounting chroot environment." debug "Unmounting chroot environment."
safe_umount_tree "${MOUNTED_PATH}/" safe_umount_tree "${MOUNTED_PATH}/"
# Now that we've exited the chroot, allow automounting again.
sudo killall -CONT gvfs-gdu-volume-monitor 2>/dev/null || true
fi fi
) 200>>"$LOCKFILE" || die "teardown_env failed" ) 200>>"$LOCKFILE" || die "teardown_env failed"
} }