diff options
author | Kenny Root <kroot@google.com> | 2012-05-10 23:32:27 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-05-10 23:32:27 -0700 |
commit | 760cec444b0f3c8a243d100cd5f5520af7531d17 (patch) | |
tree | c1e71b6eebef7f49ca4dd3c2e50193a6730e835a | |
parent | 9688165c81a1ab4c2ce08fc831030eebcf2ecc6f (diff) | |
parent | 418367112c96f6ce45aa142d613a575046b7f65f (diff) | |
download | android_system_vold-760cec444b0f3c8a243d100cd5f5520af7531d17.tar.gz android_system_vold-760cec444b0f3c8a243d100cd5f5520af7531d17.tar.bz2 android_system_vold-760cec444b0f3c8a243d100cd5f5520af7531d17.zip |
am 41836711: Merge "Sleep to wait for dm to create node" into jb-dev
* commit '418367112c96f6ce45aa142d613a575046b7f65f':
Sleep to wait for dm to create node
-rw-r--r-- | VolumeManager.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/VolumeManager.cpp b/VolumeManager.cpp index 4c1621b..f5c254f 100644 --- a/VolumeManager.cpp +++ b/VolumeManager.cpp @@ -948,6 +948,19 @@ int VolumeManager::mountAsec(const char *id, const char *key, int ownerUid) { } } + /* + * The device mapper node needs to be created. Sometimes it takes a + * while. Wait for up to 1 second. We could also inspect incoming uevents, + * but that would take more effort. + */ + int tries = 25; + while (tries--) { + if (!access(dmDevice, F_OK) || errno != ENOENT) { + break; + } + usleep(40 * 1000); + } + int result; if (sb.c_opts & ASEC_SB_C_OPTS_EXT4) { result = Ext4::doMount(dmDevice, mountPoint, true, false, true); |