diff --git a/VolumeBase.cpp b/VolumeBase.cpp
index 292a4cd..2590ecf 100644
--- a/VolumeBase.cpp
+++ b/VolumeBase.cpp
@@ -145,8 +145,8 @@
 }
 
 status_t VolumeBase::mount() {
-    if (mState != State::kUnmounted) {
-        LOG(WARNING) << getId() << " mount requires state unmounted";
+    if ((mState != State::kUnmounted) && (mState != State::kUnmountable)) {
+        LOG(WARNING) << getId() << " mount requires state unmounted or unmountable";
         return -EBUSY;
     }
 
@@ -155,7 +155,7 @@
     if (res == OK) {
         setState(State::kMounted);
     } else {
-        setState(State::kUnmounted);
+        setState(State::kUnmountable);
     }
 
     return res;
@@ -183,8 +183,12 @@
 }
 
 status_t VolumeBase::format() {
-    if (mState != State::kUnmounted) {
-        LOG(WARNING) << getId() << " format requires state unmounted";
+    if (mState == State::kMounted) {
+        unmount();
+    }
+
+    if ((mState != State::kUnmounted) && (mState != State::kUnmountable)) {
+        LOG(WARNING) << getId() << " format requires state unmounted or unmountable";
         return -EBUSY;
     }
 
diff --git a/VolumeBase.h b/VolumeBase.h
index e3d91ff..465fc61 100644
--- a/VolumeBase.h
+++ b/VolumeBase.h
@@ -63,11 +63,18 @@
     };
 
     enum class State {
+        /* Next states: mounting, formatting */
         kUnmounted = 0,
+        /* Next states: mounted, unmountable */
         kMounting,
+        /* Next states: unmounting */
         kMounted,
+        /* Next states: unmounted */
         kFormatting,
+        /* Next states: unmounted */
         kUnmounting,
+        /* Next states: mounting, formatting */
+        kUnmountable,
     };
 
     const std::string& getId() { return mId; }
