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