diff --git a/Volume.cpp b/Volume.cpp
index 529975a..cce2fc1 100644
--- a/Volume.cpp
+++ b/Volume.cpp
@@ -275,7 +275,7 @@
     return -1;
 }
 
-int Volume::unmountVol() {
+int Volume::unmountVol(bool force) {
     int i, rc;
 
     if (getState() != Volume::State_Mounted) {
@@ -285,7 +285,7 @@
     }
 
     setState(Volume::State_Unmounting);
-    usleep(1000 * 200); // Give the framework some time to react
+    usleep(1000 * 1000); // Give the framework some time to react
     for (i = 1; i <= 10; i++) {
         rc = umount(getMountpoint());
         if (!rc)
@@ -299,17 +299,18 @@
         LOGW("Volume %s unmount attempt %d failed (%s)",
              getLabel(), i, strerror(errno));
 
-        int action;
+        int action = 0;
 
-        if (i > 8) {
-            action = 2; // SIGKILL
-        } else if (i > 7) {
-            action = 1; // SIGHUP
-        } else
-            action = 0; // just complain
+        if (force) {
+            if (i > 8) {
+                action = 2; // SIGKILL
+            } else if (i > 7) {
+                action = 1; // SIGHUP
+            }
+        }
 
         Process::killProcessesWithOpenFiles(getMountpoint(), action);
-        usleep(1000*250);
+        usleep(1000*1000);
     }
 
     if (!rc) {
@@ -319,6 +320,7 @@
         return 0;
     }
 
+    errno = EBUSY;
     LOGE("Volume %s failed to unmount (%s)\n", getLabel(), strerror(errno));
     setState(Volume::State_Mounted);
     return -1;
