Index: kioslave/file/file.cc
===================================================================
--- kioslave/file/file.cc.orig
+++ kioslave/file/file.cc
@@ -69,6 +69,7 @@
 #include <qvaluelist.h>
 #include <qregexp.h>
 
+#include <dcopref.h>
 #include <kshred.h>
 #include <kdebug.h>
 #include <kurl.h>
@@ -1609,6 +1610,31 @@ void FileProtocol::unmount( const QStrin
 #endif /* HAVE_VOLMGT */
 
     err = testLogFile( tmp );
+
+    if (err.contains("fstab") || err.contains("root")) {
+       QString olderr;
+       err = QString::null;
+
+       DCOPRef d("kded", "mediamanager");
+       d.setDCOPClient ( dcopClient() );
+       DCOPReply reply = d.call("properties", _point);
+       QString udi;
+
+       if ( reply.isValid() ) {
+           QStringList list = reply;
+           if (list.size())
+               udi = list[0];
+       }
+
+       if (!udi.isEmpty())
+           reply = d.call("unmount", udi);
+       
+       if (udi.isEmpty() || !reply.isValid())
+         err = olderr;
+       else if (reply.isValid())
+         reply.get(err);
+    }
+
     if ( err.isEmpty() )
 	finished();
     else