]> Zhao Yanbai Git Server - minix.git/commitdiff
improve FS process bookkeeping; fixes bug where vfs tries to e.g. send
authorBen Gras <ben@minix3.org>
Thu, 31 May 2007 12:20:09 +0000 (12:20 +0000)
committerBen Gras <ben@minix3.org>
Thu, 31 May 2007 12:20:09 +0000 (12:20 +0000)
stime messages to NONE of an unmounted filesystem.

servers/vfs/main.c
servers/vfs/time.c
servers/vfs/vmnt.c

index 47018444c12437727fc1d1e1c2618d3c1e7c4b76..5c9746864ef59d89c44c0f1041351ce78bf531d9 100644 (file)
@@ -319,8 +319,10 @@ PRIVATE void init_root()
   last_login_fs_e = NONE;
   
   /* Initialize vmnt table */
-  for (vmp = &vmnt[0]; vmp < &vmnt[NR_MNTS]; ++vmp)
+  for (vmp = &vmnt[0]; vmp < &vmnt[NR_MNTS]; ++vmp) {
       vmp->m_dev = NO_DEV;
+      vmp->m_fs_e = NONE;
+  }
   
   vmp = &vmnt[0];
  
@@ -411,7 +413,7 @@ PRIVATE void service_pm()
                        
                         /* Send new time for all FS processes */
                         for (vmp = &vmnt[0]; vmp < &vmnt[NR_MNTS]; ++vmp) { 
-                            if (vmp->m_fs_e)
+                            if (vmp->m_fs_e != NONE)
                                 req_stime(vmp->m_fs_e, boottime);
                         }
                        /* No need to report status to PM */
index 806fee9a24e6b99c5106b75376934272c4b6a19c..2799e0fbe8edbed74b20965cceb10bf0efab5696 100644 (file)
@@ -72,7 +72,7 @@ PUBLIC int do_stime()
     
   /* Send new time for all FS processes */
   for (vmp = &vmnt[0]; vmp < &vmnt[NR_MNTS]; ++vmp) { 
-      if (vmp->m_fs_e) req_stime(vmp->m_fs_e, boottime);
+      if (vmp->m_fs_e != NONE) req_stime(vmp->m_fs_e, boottime);
   }
 
   return OK;
index 9b92743b083eca54b62d6ff5a2d065bfb4b8320e..868d53d850bac73e06746305ea472cd4dace9f3a 100644 (file)
@@ -3,6 +3,8 @@
  *   Jul 2006 (Balazs Gerofi)
  */
 
+#include <minix/com.h>
+
 #include "fs.h"
 #include "vmnt.h"
 
@@ -27,6 +29,8 @@ PUBLIC struct vmnt *get_free_vmnt(short *index)
 PUBLIC struct vmnt *find_vmnt(int fs_e) 
 {
   struct vmnt *vp;
+  if(fs_e == NONE)
+       panic(__FILE__, "find_vmnt: find for NONE", NO_NUM);
   for (vp = &vmnt[0]; vp < &vmnt[NR_MNTS]; ++vp) {
       if (vp->m_fs_e == fs_e) return vp;
   }