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;
     }