OSDN Git Service

Check if sdcard daemon exited.
authorDaniel Rosenberg <drosen@google.com>
Wed, 12 Jul 2017 00:59:55 +0000 (17:59 -0700)
committerDaniel Rosenberg <drosen@google.com>
Wed, 12 Jul 2017 01:09:15 +0000 (18:09 -0700)
If the system is using sdcardfs, the sdcard daemon exits after mounting.
If it's using FUSE, the sdcard daemon runs until we go to unmount.

Bug: 37638548
Test: Run "adb shell ps | grep -w Z" with sdcardfs enabled.
      The sdcard daemon should not be listed.
      Run again with sdcardfs disabled. The daemon should be
      running, and vold should not be stuck waiting on it.
Change-Id: I930d22b35194ec99e7a6a4a022a04d36f4f39a34

EmulatedVolume.cpp
PublicVolume.cpp

index 44ad22a..df91904 100644 (file)
@@ -103,6 +103,8 @@ status_t EmulatedVolume::doMount() {
         LOG(VERBOSE) << "Waiting for FUSE to spin up...";
         usleep(50000); // 50ms
     }
+    /* sdcardfs will have exited already. FUSE will still be running */
+    TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, WNOHANG));
 
     return OK;
 }
index 119d92c..f976c4a 100644 (file)
@@ -190,6 +190,8 @@ status_t PublicVolume::doMount() {
         LOG(VERBOSE) << "Waiting for FUSE to spin up...";
         usleep(50000); // 50ms
     }
+    /* sdcardfs will have exited already. FUSE will still be running */
+    TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, WNOHANG));
 
     return OK;
 }