]> Zhao Yanbai Git Server - minix.git/commitdiff
VFS: panic when unmount_all fails
authorThomas Veerman <thomas@minix3.org>
Tue, 4 Sep 2012 12:11:54 +0000 (12:11 +0000)
committerThomas Veerman <thomas@minix3.org>
Mon, 17 Sep 2012 11:01:46 +0000 (11:01 +0000)
servers/vfs/mount.c

index 93b2b664b7053778f1cdec6fc3b090feb26bf363..217dba891622f761f3ac1243097a702534eef0e6 100644 (file)
@@ -453,7 +453,7 @@ int do_umount(void)
 
 
 /*===========================================================================*
- *                              unmount                                      *
+ *                              unmount                                             *
  *===========================================================================*/
 int unmount(
   dev_t dev,                   /* block-special device */
@@ -551,10 +551,20 @@ void unmount_all(void)
                        unmount(vmp->m_dev, NULL);
        }
   }
+
+  /* Verify nothing is locked anymore */
   check_vnode_locks();
   check_vmnt_locks();
   check_filp_locks();
   check_bsf_lock();
+
+  /* Verify we succesfully unmounted all file systems */
+  for (vmp = &vmnt[0]; vmp < &vmnt[NR_MNTS]; vmp++) {
+       if (vmp->m_dev != NO_DEV) {
+               panic("vmp still mounted: %s %d %d\n", vmp->m_label,
+                       vmp->m_fs_e, vmp->m_dev);
+       }
+  }
 }
 
 /*===========================================================================*