Merge "Unmount public sdcard filesystems before killing the fuse process." into nyc-dev

am: a4330be

* commit 'a4330beb482c3b5decf6a6fc966e5589210130eb':
  Unmount public sdcard filesystems before killing the fuse process.

Change-Id: I294d46bb27fb6d8ac83f1041e849fd366134b6ee
This commit is contained in:
John Cormie 2016-04-25 23:57:06 +00:00 committed by android-build-merger
commit a54cd8739c

View file

@ -194,12 +194,10 @@ status_t PublicVolume::doMount() {
}
status_t PublicVolume::doUnmount() {
if (mFusePid > 0) {
kill(mFusePid, SIGTERM);
TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, 0));
mFusePid = 0;
}
// Unmount the storage before we kill the FUSE process. If we kill
// the FUSE process first, most file system operations will return
// ENOTCONN until the unmount completes. This is an exotic and unusual
// error code and might cause broken behaviour in applications.
KillProcessesUsingPath(getPath());
ForceUnmount(kAsecPath);
@ -209,6 +207,12 @@ status_t PublicVolume::doUnmount() {
ForceUnmount(mFuseWrite);
ForceUnmount(mRawPath);
if (mFusePid > 0) {
kill(mFusePid, SIGTERM);
TEMP_FAILURE_RETRY(waitpid(mFusePid, nullptr, 0));
mFusePid = 0;
}
rmdir(mFuseDefault.c_str());
rmdir(mFuseRead.c_str());
rmdir(mFuseWrite.c_str());