arc: Fix race between arc-obb-mounter and arc-boot-continue
arc-obb-mounter implicitly depends on arc-boot-continue which
bind-mounts /opt/google/containers/android/rootfs/android-data.
Remove this dependency by using /home/root/<hash>/android-data.
BUG=b:192978852
TEST=cts-tradefed run commandAndExit cts-dev -m CtsOsTestCases --test
android.os.storage.cts.StorageManagerTest
Change-Id: Ic4a510e415d947c2cb2d2ee6696cf4a2df66ff37
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3037767
Reviewed-by: Risan <risan@chromium.org>
Tested-by: Ryo Hashimoto <hashimoto@chromium.org>
Commit-Queue: Ryo Hashimoto <hashimoto@chromium.org>
(cherry picked from commit 72e56e66ccf3d2ea48f5686bd1f772379c43628b)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3041313
Auto-Submit: Ryo Hashimoto <hashimoto@chromium.org>
Reviewed-by: Yusuke Sato <yusukes@chromium.org>
Commit-Queue: Yusuke Sato <yusukes@chromium.org>
diff --git a/arc/container/obb-mounter/init/arc-obb-mounter.conf b/arc/container/obb-mounter/init/arc-obb-mounter.conf
index 55d568d..f88eb14 100644
--- a/arc/container/obb-mounter/init/arc-obb-mounter.conf
+++ b/arc/container/obb-mounter/init/arc-obb-mounter.conf
@@ -8,14 +8,22 @@
start on started arcpp-post-login-services
stop on stopped arcpp-post-login-services
-env CONTAINERDIR=/opt/google/containers/arc-obb-mounter
+# The following environment variables are passed from session_manager
+import CHROMEOS_USER
+
env ROOTFSDIR=/opt/google/containers/arc-obb-mounter/mountpoints/container-root
-env ANDROID_MUTABLE_SOURCE=/opt/google/containers/android/rootfs/android-data
script
logger -t "${UPSTART_JOB}" "Start arc-obb-mounter"
set -x
+ CRYPTOHOME_ROOT_PATH=$(cryptohome-path system "${CHROMEOS_USER}")
+ if [ ! -d "${CRYPTOHOME_ROOT_PATH}" ]; then
+ logger -t "${UPSTART_JOB}" \
+ "Cryptohome root directory ${CRYPTOHOME_ROOT_PATH} does not exist"
+ exit 1
+ fi
+
# Start constructing minijail0 args...
args="minijail0"
@@ -42,7 +50,7 @@
# /data
# 0x1000 = bind
- args="$args -k $ANDROID_MUTABLE_SOURCE/data,/data,none,0x1000"
+ args="$args -k ${CRYPTOHOME_ROOT_PATH}/android-data/data,/data,none,0x1000"
# 0x102f = bind,remount,noexec,nodev,nosuid,ro
args="$args -k none,/data,none,0x102f"
diff --git a/arc/setup/init/arcpp-post-login-services.conf b/arc/setup/init/arcpp-post-login-services.conf
index 8902c8c..88e7ef3 100644
--- a/arc/setup/init/arcpp-post-login-services.conf
+++ b/arc/setup/init/arcpp-post-login-services.conf
@@ -10,6 +10,8 @@
# The following environment variables are passed from session_manager
# and are imported from the event that starts the job.
+import CHROMEOS_USER
import CONTAINER_PID
+export CHROMEOS_USER
export CONTAINER_PID