| Index: src/platform/cryptohome/bin/umount
|
| diff --git a/src/platform/cryptohome/bin/umount b/src/platform/cryptohome/bin/umount
|
| deleted file mode 100755
|
| index ead6413ec9acb0ee3c0fa789307febf7ad49f662..0000000000000000000000000000000000000000
|
| --- a/src/platform/cryptohome/bin/umount
|
| +++ /dev/null
|
| @@ -1,80 +0,0 @@
|
| -#!/bin/bash
|
| -# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -set -e # exit on error
|
| -set -E # force error handler inheritance
|
| -set -u # require all variables to be defined
|
| -trap error_handler ERR;
|
| -
|
| -function error_handler() {
|
| - cryptohome::log "unmount failed: the system may be rebooted"
|
| - $sync || $true
|
| -
|
| - cryptohome::log "lsof ${DEFAULT_MOUNT_POINT}: $(lsof ${DEFAULT_MOUNT_POINT})"
|
| - cryptohome::log "current mount table: $(mount)"
|
| -
|
| - cryptohome::is_mounted && $reboot
|
| - cryptohome::log "unmount but the filesystem is no longer mounted"
|
| -
|
| - # Make sure we aren't leaving a mess or an accessible key.
|
| - if cryptohome::is_opened; then
|
| - cryptohome::log "device mapper device still present; attempting to close"
|
| - cryptohome::log \
|
| - "lsof ${DEFAULT_MAPPER_DEVICE}: $(lsof ${DEFAULT_MAPPER_DEVICE})"
|
| - cryptohome::close || $reboot
|
| - $exit 1
|
| - fi
|
| -
|
| - if cryptohome::attached; then
|
| - cryptohome::log "loop device still present; attempting to detach"
|
| - cryptohome::detach || $reboot
|
| - $exit 1
|
| - fi
|
| -
|
| - cryptohome::log "forced unmount and cleanup successful"
|
| - $exit 0
|
| -}
|
| -
|
| -function umount_main() {
|
| - # If we can't unmount, do it the hard way, for now.
|
| - local target="${1:-$DEFAULT_MOUNT_POINT}"
|
| - # Variables that define how long to wait for unmount to complete and the
|
| - # increment to check for its completion.
|
| - local max_delay=20
|
| - local current_delay=0
|
| - local increment=1
|
| -
|
| - # Loop until we've unmounted cryptohome or have reached the $max_delay.
|
| - while cryptohome::is_mounted "$target" ; do
|
| - if [ $current_delay -ge $max_delay ] ; then
|
| - # If we've reached a max_delay, abort and go through reboot logic
|
| - cryptohome::log "Unmount max delay reached. Aborting."
|
| - error_handler
|
| - fi
|
| - if ! cryptohome::unmount "$target" ; then
|
| - cryptohome::log "Unmount error, sleeping and attempting to unmount again"
|
| - $sync && $sleep $increment
|
| - current_delay=$(( current_delay + increment ))
|
| - fi
|
| - done
|
| - # is_mounted ignores incognito mounts since they diverge from
|
| - # the actual cryptohome landscape (dm, losetup).
|
| - if $mount | $grep -q "^$INCOGNITO_MOUNT_NAME "; then
|
| - # We want all processes killed that use this mountpoint, but
|
| - # we also need to ensure that the user is completely gone to
|
| - # avoid processes persisting across mounts.
|
| - cryptohome::log "unmounting incognito mount"
|
| - $pkill -9 -u ${DEFAULT_USER} && $true &> /dev/null
|
| - # Since we don't have additional work after the unmount, we can
|
| - # do it lazily.
|
| - $umount -n -l "$INCOGNITO_MOUNT_NAME"
|
| - fi
|
| -}
|
| -
|
| -if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
|
| - source "$(dirname "$0")/../lib/chromeos-cryptohome/common"
|
| - utils::declare_commands reboot exit sync
|
| - umount_main "$@"
|
| -fi
|
|
|