[BACK]Return to ufs_dirhash.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / ufs / ufs

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/ufs/ufs/ufs_dirhash.c between version 1.23.2.1 and 1.27

version 1.23.2.1, 2008/06/18 16:33:59 version 1.27, 2008/07/03 09:56:15
Line 93  static TAILQ_HEAD(, dirhash) ufsdirhash_
Line 93  static TAILQ_HEAD(, dirhash) ufsdirhash_
 /* Protects: ufsdirhash_list, `dh_list' field, ufs_dirhashmem. */  /* Protects: ufsdirhash_list, `dh_list' field, ufs_dirhashmem. */
 static kmutex_t ufsdirhash_lock;  static kmutex_t ufsdirhash_lock;
   
   static struct sysctllog *ufsdirhash_sysctl_log;
   
 /*  /*
  * Locking order:   * Locking order:
  *      ufsdirhash_lock   *      ufsdirhash_lock
Line 253  ufsdirhash_build(struct inode *ip)
Line 255  ufsdirhash_build(struct inode *ip)
         return (0);          return (0);
   
 fail:  fail:
           DIRHASH_UNLOCK(dh);
         if (dh->dh_hash != NULL) {          if (dh->dh_hash != NULL) {
                 for (i = 0; i < narrays; i++)                  for (i = 0; i < narrays; i++)
                         if (dh->dh_hash[i] != NULL)                          if (dh->dh_hash[i] != NULL)
Line 1089  ufsdirhash_recycle(int wanted)
Line 1092  ufsdirhash_recycle(int wanted)
         return (0);          return (0);
 }  }
   
 void  static void
 ufsdirhash_init()  ufsdirhash_sysctl_init(void)
 {  
   
         mutex_init(&ufsdirhash_lock, MUTEX_DEFAULT, IPL_NONE);  
         ufsdirhashblk_cache = pool_cache_init(DH_NBLKOFF * sizeof(daddr_t), 0,  
             0, 0, "dirhashblk", NULL, IPL_NONE, NULL, NULL, NULL);  
         ufsdirhash_cache = pool_cache_init(sizeof(struct dirhash), 0,  
             0, 0, "dirhash", NULL, IPL_NONE, NULL, NULL, NULL);  
         TAILQ_INIT(&ufsdirhash_list);  
 }  
   
 void  
 ufsdirhash_done(void)  
 {  
   
         KASSERT(TAILQ_EMPTY(&ufsdirhash_list));  
         pool_cache_destroy(ufsdirhashblk_cache);  
         pool_cache_destroy(ufsdirhash_cache);  
         mutex_destroy(&ufsdirhash_lock);  
 }  
   
 SYSCTL_SETUP(sysctl_vfs_ufs_setup, "sysctl vfs.ufs.dirhash subtree setup")  
 {  {
         const struct sysctlnode *rnode, *cnode;          const struct sysctlnode *rnode, *cnode;
   
         sysctl_createv(clog, 0, NULL, &rnode,          sysctl_createv(&ufsdirhash_sysctl_log, 0, NULL, &rnode,
                        CTLFLAG_PERMANENT,                         CTLFLAG_PERMANENT,
                        CTLTYPE_NODE, "vfs", NULL,                         CTLTYPE_NODE, "vfs", NULL,
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_VFS, CTL_EOL);                         CTL_VFS, CTL_EOL);
   
         sysctl_createv(clog, 0, &rnode, &rnode,          sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &rnode,
                        CTLFLAG_PERMANENT,                         CTLFLAG_PERMANENT,
                        CTLTYPE_NODE, "ufs",                         CTLTYPE_NODE, "ufs",
                        SYSCTL_DESCR("ufs"),                         SYSCTL_DESCR("ufs"),
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_CREATE, CTL_EOL);                         CTL_CREATE, CTL_EOL);
   
         sysctl_createv(clog, 0, &rnode, &rnode,          sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &rnode,
                        CTLFLAG_PERMANENT,                         CTLFLAG_PERMANENT,
                        CTLTYPE_NODE, "dirhash",                         CTLTYPE_NODE, "dirhash",
                        SYSCTL_DESCR("dirhash"),                         SYSCTL_DESCR("dirhash"),
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_CREATE, CTL_EOL);                         CTL_CREATE, CTL_EOL);
   
         sysctl_createv(clog, 0, &rnode, &cnode,          sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "minblocks",                         CTLTYPE_INT, "minblocks",
                        SYSCTL_DESCR("minimum hashed directory size in blocks"),                         SYSCTL_DESCR("minimum hashed directory size in blocks"),
                        NULL, 0, &ufs_dirhashminblks, 0,                         NULL, 0, &ufs_dirhashminblks, 0,
                        CTL_CREATE, CTL_EOL);                         CTL_CREATE, CTL_EOL);
   
         sysctl_createv(clog, 0, &rnode, &cnode,          sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "maxmem",                         CTLTYPE_INT, "maxmem",
                        SYSCTL_DESCR("maximum dirhash memory usage"),                         SYSCTL_DESCR("maximum dirhash memory usage"),
                        NULL, 0, &ufs_dirhashmaxmem, 0,                         NULL, 0, &ufs_dirhashmaxmem, 0,
                        CTL_CREATE, CTL_EOL);                         CTL_CREATE, CTL_EOL);
   
         sysctl_createv(clog, 0, &rnode, &cnode,          sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
                        CTLFLAG_PERMANENT|CTLFLAG_READONLY,                         CTLFLAG_PERMANENT|CTLFLAG_READONLY,
                        CTLTYPE_INT, "memused",                         CTLTYPE_INT, "memused",
                        SYSCTL_DESCR("current dirhash memory usage"),                         SYSCTL_DESCR("current dirhash memory usage"),
                        NULL, 0, &ufs_dirhashmem, 0,                         NULL, 0, &ufs_dirhashmem, 0,
                        CTL_CREATE, CTL_EOL);                         CTL_CREATE, CTL_EOL);
   
         sysctl_createv(clog, 0, &rnode, &cnode,          sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "docheck",                         CTLTYPE_INT, "docheck",
                        SYSCTL_DESCR("enable extra sanity checks"),                         SYSCTL_DESCR("enable extra sanity checks"),
                        NULL, 0, &ufs_dirhashcheck, 0,                         NULL, 0, &ufs_dirhashcheck, 0,
                        CTL_CREATE, CTL_EOL);                         CTL_CREATE, CTL_EOL);
 }  }
   
   void
   ufsdirhash_init()
   {
   
           mutex_init(&ufsdirhash_lock, MUTEX_DEFAULT, IPL_NONE);
           ufsdirhashblk_cache = pool_cache_init(DH_NBLKOFF * sizeof(daddr_t), 0,
               0, 0, "dirhashblk", NULL, IPL_NONE, NULL, NULL, NULL);
           ufsdirhash_cache = pool_cache_init(sizeof(struct dirhash), 0,
               0, 0, "dirhash", NULL, IPL_NONE, NULL, NULL, NULL);
           TAILQ_INIT(&ufsdirhash_list);
           ufsdirhash_sysctl_init();
   }
   
   void
   ufsdirhash_done(void)
   {
   
           KASSERT(TAILQ_EMPTY(&ufsdirhash_list));
           pool_cache_destroy(ufsdirhashblk_cache);
           pool_cache_destroy(ufsdirhash_cache);
           mutex_destroy(&ufsdirhash_lock);
           sysctl_teardown(&ufsdirhash_sysctl_log);
   }

Legend:
Removed from v.1.23.2.1  
changed lines
  Added in v.1.27

CVSweb <webmaster@jp.NetBSD.org>