Index: mythtv/libs/libmyth/mythhdd.cpp
===================================================================
--- mythtv/libs/libmyth/mythhdd.cpp	(revision 27066)
+++ mythtv/libs/libmyth/mythhdd.cpp	(working copy)
@@ -41,9 +41,18 @@
         return setStatus(MEDIASTAT_MOUNTED);
     }
 
+    // Has device been removed?
+    if (!isDeviceOpen())
+    {
+        if (!openDevice())
+            return setStatus(MEDIASTAT_UNPLUGGED);
+        closeDevice();
+    }
+
     // device is not mounted
-    if (m_Status == MEDIASTAT_UNPLUGGED)
+    switch (m_Status)
     {
+    case MEDIASTAT_UNPLUGGED:
         // a removable device was just plugged in try to mount it.
         mount();
         if (isMounted())
@@ -51,16 +60,11 @@
             m_Status = MEDIASTAT_NOTMOUNTED;
             return setStatus(MEDIASTAT_MOUNTED);
         }
-        else
-            return setStatus(MEDIASTAT_NOTMOUNTED);
-    }
-    else if (m_Status == MEDIASTAT_MOUNTED)
-    {
+        return setStatus(MEDIASTAT_NOTMOUNTED);
+    case MEDIASTAT_MOUNTED:
         // device was mounted and someone unmounted it.
-        return m_Status = setStatus(MEDIASTAT_NOTMOUNTED);
-    }
-    else
-    {
+        return setStatus(MEDIASTAT_NOTMOUNTED);
+    default:
         // leave device state as is
         return m_Status;
     }
