Index: mythtv/libs/libmyth/mythmedia.h
===================================================================
--- mythtv/libs/libmyth/mythmedia.h	(revision 18258)
+++ mythtv/libs/libmyth/mythmedia.h	(working copy)
@@ -86,7 +86,7 @@
 
     MediaType getMediaType() const { return m_MediaType; }
 
-    bool isSuperMount() const { return m_SuperMount; }
+    bool isSuperMount()      const { return m_SuperMount; }
 
     virtual MediaError  testMedia() { return MEDIAERR_UNSUPPORTED; }
     virtual bool openDevice();
@@ -99,10 +99,12 @@
     virtual MediaError unlock();
     virtual bool performMountCmd( bool DoMount );
 
-    bool mount() {  return performMountCmd(true); }
+    bool mount()   { return performMountCmd(true);  }
     bool unmount() { return performMountCmd(false); }
-    bool isMounted(bool bVerify = false);
 
+    bool isMounted(bool bVerify = true);
+    bool findMountPath();
+
     void RegisterMediaExtensions(uint mediatype,
                                  const QString& extensions);
 
Index: mythplugins/mythgallery/mythgallery/iconview.cpp
===================================================================
--- mythplugins/mythgallery/mythgallery/iconview.cpp	(revision 18235)
+++ mythplugins/mythgallery/mythgallery/iconview.cpp	(working copy)
@@ -317,7 +317,7 @@
     MediaMonitor *mon = MediaMonitor::GetMediaMonitor();
     if (m_currDevice && mon && mon->ValidateAndLock(m_currDevice))
     {
-        bool mounted = m_currDevice->isMounted(true);
+        bool mounted = m_currDevice->isMounted();
         if (!mounted)
             mounted = m_currDevice->mount();
 
@@ -460,7 +460,7 @@
     {
         m_currDevice = item->GetMediaDevice();
 
-        if (!m_currDevice->isMounted())
+        if (!m_currDevice->isMounted(false))
             m_currDevice->mount();
 
         item->SetPath(m_currDevice->getMountPath(), true);
Index: mythtv/libs/libmyth/mediamonitor-unix.cpp
===================================================================
--- mythtv/libs/libmyth/mediamonitor-unix.cpp	(revision 18258)
+++ mythtv/libs/libmyth/mediamonitor-unix.cpp	(working copy)
@@ -161,9 +161,8 @@
         sysfs.cd(*it);
 
         QFile removable(sysfs.absFilePath("removable"));
-        if (removable.exists())
+        if (removable.exists() && removable.open(QIODevice::ReadOnly))
         {
-            removable.open(QIODevice::ReadOnly);
             int c = removable.getch();
             removable.close();
 
Index: mythtv/libs/libmyth/mythcdrom-freebsd.cpp
===================================================================
--- mythtv/libs/libmyth/mythcdrom-freebsd.cpp	(revision 18258)
+++ mythtv/libs/libmyth/mythcdrom-freebsd.cpp	(working copy)
@@ -54,7 +54,7 @@
             if (errno == EBUSY)
             {
                 //cout << "errno == EBUSY" << endl;
-                return isMounted(true) ? MEDIAERR_OK : MEDIAERR_FAILED;
+                return isMounted() ? MEDIAERR_OK : MEDIAERR_FAILED;
             } 
             else 
             { 
Index: mythtv/libs/libmyth/mythcdrom-linux.cpp
===================================================================
--- mythtv/libs/libmyth/mythcdrom-linux.cpp	(revision 18258)
+++ mythtv/libs/libmyth/mythcdrom-linux.cpp	(working copy)
@@ -327,7 +327,7 @@
             VERBOSE(VB_MEDIA+VB_EXTRA, LOC + ":testMedia - failed to open "
                                            + getDevicePath() + ENO);
             if (errno == EBUSY)
-                return isMounted(true) ? MEDIAERR_OK : MEDIAERR_FAILED;
+                return isMounted() ? MEDIAERR_OK : MEDIAERR_FAILED;
             else
                 return MEDIAERR_FAILED;
         }
@@ -387,7 +387,7 @@
                     return m_Status;
                 // If the disc is ok and we already know it's mediatype
                 // returns MOUNTED.
-                if (isMounted(true))
+                if (isMounted())
                     return setStatus(MEDIASTAT_MOUNTED, OpenedHere);
                 break;
             case CDS_TRAY_OPEN:
@@ -448,7 +448,7 @@
 
                         // the base class's onDeviceMounted will do fine
                         // grained detection of the type of data on this disc
-                        if (isMounted(true))
+                        if (isMounted())
                             onDeviceMounted();
                         else
                             if (mount())
@@ -456,7 +456,7 @@
                             else
                                 return setStatus(MEDIASTAT_ERROR, OpenedHere);
 
-                        if (isMounted(true))
+                        if (isMounted())
                         {
                             // pretend we're NOTMOUNTED so setStatus emits
                             // a signal
@@ -488,7 +488,7 @@
                             return setStatus(MEDIASTAT_USEABLE, OpenedHere);
                         #else
                             mount();
-                            if (isMounted(true))
+                            if (isMounted())
                             {
                                 // pretend we're NOTMOUNTED so setStatus
                                 // emits a signal
@@ -528,7 +528,7 @@
                 VERBOSE(VB_MEDIA, QString("Current status == ") +
                         MythMediaDevice::MediaStatusStrings[m_Status]);
                 VERBOSE(VB_MEDIA, "Setting status to not mounted?");
-                if (isMounted(true))
+                if (isMounted())
                     setStatus(MEDIASTAT_MOUNTED, OpenedHere);
                 else
                     setStatus(MEDIASTAT_NOTMOUNTED, OpenedHere);
Index: mythtv/libs/libmyth/mythhdd.cpp
===================================================================
--- mythtv/libs/libmyth/mythhdd.cpp	(revision 18258)
+++ mythtv/libs/libmyth/mythhdd.cpp	(working copy)
@@ -31,7 +31,7 @@
  */
 MediaStatus MythHDD::checkMedia(void)
 {
-    if (isMounted(true))
+    if (isMounted())
     {
         // A lazy way to present volume name for the user to eject.
         // Hotplug devices are usually something like /media/VOLUME
@@ -46,7 +46,7 @@
     {
         // a removable device was just plugged in try to mount it.
         mount();
-        if (isMounted(true))
+        if (isMounted())
         {
             m_Status = MEDIASTAT_NOTMOUNTED;
             return setStatus(MEDIASTAT_MOUNTED);
Index: mythtv/libs/libmyth/mythmedia.cpp
===================================================================
--- mythtv/libs/libmyth/mythmedia.cpp	(revision 18258)
+++ mythtv/libs/libmyth/mythmedia.cpp	(working copy)
@@ -22,9 +22,7 @@
 #   define O_NONBLOCK 0
 #endif
 
-#define LOC      QString("MythMediaDevice:")
-#define LOC_WARN QString("MythMediaDevice, Warning: ")
-#define LOC_ERR  QString("MythMediaDevice, Error: ")
+#define LOC QString("MythMediaDevice:")
 
 static const QString PATHTO_PMOUNT("/usr/bin/pmount");
 static const QString PATHTO_PUMOUNT("/usr/bin/pumount");
@@ -101,7 +99,7 @@
 
 bool MythMediaDevice::performMountCmd(bool DoMount)
 {
-    if (DoMount && isMounted(true))
+    if (DoMount && isMounted())
     {
         VERBOSE(VB_MEDIA, "MythMediaDevice::performMountCmd(true)"
                           " - Logic Error? Device already mounted.");
@@ -133,7 +131,12 @@
             {
                 // we cannot tell beforehand what the pmount mount point is
                 // so verify the mount status of the device
-                isMounted(true);
+                if (!findMountPath())
+                {
+                    VERBOSE(VB_MEDIA, "performMountCmd() attempted to"
+                                      + " mount media, but failed?");
+                    return false;
+                }
                 m_Status = MEDIASTAT_MOUNTED;
                 onDeviceMounted();
                 VERBOSE(VB_GENERAL,
@@ -141,13 +144,12 @@
             }
             else
                 onDeviceUnmounted();
+
             return true;
         }
         else
-        {
             VERBOSE(VB_GENERAL, QString("Failed to mount %1.")
                                        .arg(m_DevicePath));
-        }
     } 
     else 
     {
@@ -163,6 +165,7 @@
         }
         else
             onDeviceUnmounted();
+
         return true;
     }
     return false;
@@ -322,12 +325,19 @@
 /// \brief Tells us if m_DevicePath is a mounted device.
 bool MythMediaDevice::isMounted(bool Verify)
 {
-    if (!Verify)
+    if (Verify)
+        return findMountPath();
+    else
         return (m_Status == MEDIASTAT_MOUNTED);
+}
 
+/// \brief Try to find a mount of m_DevicePath in the mounts file.
+bool MythMediaDevice::findMountPath()
+{
     if (m_DevicePath.isEmpty())
     {
-        VERBOSE(VB_MEDIA, LOC + ":isMounted() - logic error, no device path");
+        VERBOSE(VB_MEDIA,
+                LOC + ":findMountPath() - logic error, no device path");
         return false;
     }
 
@@ -398,7 +408,7 @@
 
     if (print_verbose_messages & VB_MEDIA)
     {
-        debug = LOC + ":isMounted() - mount of '"
+        debug = LOC + ":findMountPath() - mount of '"
                 + m_DevicePath + "' not found.\n"
                 + "                 Device name/type | Current mountpoint\n"
                 + "                 -----------------+-------------------\n"
@@ -427,7 +437,7 @@
             case MEDIASTAT_OPEN:
             case MEDIASTAT_NODISK:
             case MEDIASTAT_NOTMOUNTED:
-                if (isMounted(true))
+                if (isMounted())
                     unmount();
                 break;
             case MEDIASTAT_UNKNOWN:
Index: mythtv/libs/libmyth/mythmediamonitor.cpp
===================================================================
--- mythtv/libs/libmyth/mythmediamonitor.cpp	(revision 18258)
+++ mythtv/libs/libmyth/mythmediamonitor.cpp	(working copy)
@@ -125,7 +125,7 @@
         // Caller can also request mounted drives to be listed (e.g. USB flash)
 
         if (QString(typeid(**it).name()).contains("MythCDROM") ||
-               (showMounted && (*it)->isMounted()))
+               (showMounted && (*it)->isMounted(false)))
             drives.append(*it);
     }
 
@@ -228,12 +228,12 @@
         return;
     }
 
-    if (device->isMounted(true))
+    if (device->isMounted())
     {
         VERBOSE(VB_MEDIA, QString("Disk %1 is mounted? Unmounting").arg(dev));
         device->unmount();
 
-        if (device->isMounted(true))
+        if (device->isMounted())
         {
             ShowOkPopup(tr("Failed to unmount %1").arg(dev));
             return;
