MountService: Fix some mountset bugs and tighten up some return values
Signed-off-by: San Mehat <san@google.com>
diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java
index 456244a..e764bbb 100644
--- a/services/java/com/android/server/MountService.java
+++ b/services/java/com/android/server/MountService.java
@@ -543,7 +543,7 @@
// call back will handle the status changes any way.
int code = e.getCode();
if (code == VoldResponseCode.OpFailedVolNotMounted) {
- return StorageResultCode.OperationFailedVolumeNotMounted;
+ return StorageResultCode.OperationFailedStorageNotMounted;
} else {
return StorageResultCode.OperationFailedInternalError;
}
@@ -826,6 +826,12 @@
} catch (NativeDaemonConnectorException e) {
rc = StorageResultCode.OperationFailedInternalError;
}
+
+ if (rc == StorageResultCode.OperationSucceeded) {
+ synchronized (mAsecMountSet) {
+ mAsecMountSet.add(id);
+ }
+ }
return rc;
}
@@ -836,6 +842,10 @@
int rc = StorageResultCode.OperationSucceeded;
try {
mConnector.doCommand(String.format("asec finalize %s", id));
+ /*
+ * Finalization does a remount, so no need
+ * to update mAsecMountSet
+ */
} catch (NativeDaemonConnectorException e) {
rc = StorageResultCode.OperationFailedInternalError;
}
@@ -853,6 +863,15 @@
} catch (NativeDaemonConnectorException e) {
rc = StorageResultCode.OperationFailedInternalError;
}
+
+ if (rc == StorageResultCode.OperationSucceeded) {
+ synchronized (mAsecMountSet) {
+ if (mAsecMountSet.contains(id)) {
+ mAsecMountSet.remove(id);
+ }
+ }
+ }
+
return rc;
}
@@ -861,6 +880,12 @@
waitForReady();
warnOnNotMounted();
+ synchronized (mAsecMountSet) {
+ if (mAsecMountSet.contains(id)) {
+ return StorageResultCode.OperationFailedStorageMounted;
+ }
+ }
+
int rc = StorageResultCode.OperationSucceeded;
String cmd = String.format("asec mount %s %s %d", id, key, ownerUid);
try {
@@ -884,7 +909,7 @@
synchronized (mAsecMountSet) {
if (!mAsecMountSet.contains(id)) {
- return StorageResultCode.OperationFailedVolumeNotMounted;
+ return StorageResultCode.OperationFailedStorageNotMounted;
}
}
@@ -919,6 +944,12 @@
waitForReady();
warnOnNotMounted();
+ synchronized (mAsecMountSet) {
+ if (mAsecMountSet.contains(oldId)) {
+ return StorageResultCode.OperationFailedStorageMounted;
+ }
+ }
+
int rc = StorageResultCode.OperationSucceeded;
String cmd = String.format("asec rename %s %s", oldId, newId);
try {
@@ -926,6 +957,7 @@
} catch (NativeDaemonConnectorException e) {
rc = StorageResultCode.OperationFailedInternalError;
}
+
return rc;
}