]> git.sur5r.net Git - bacula/bacula/commitdiff
Tweaks to htable code to improved debugging and make names
authorKern Sibbald <kern@sibbald.com>
Tue, 16 Sep 2008 08:40:35 +0000 (08:40 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 16 Sep 2008 08:40:35 +0000 (08:40 +0000)
     a bit more meaningful.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7599 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/fd_cmds.c
bacula/src/filed/accurate.c
bacula/src/filed/job.c
bacula/src/lib/htable.c
bacula/src/lib/htable.h
bacula/src/version.h
bacula/technotes-2.5

index 90a151d8e9463da798ed31d4bf8d1b1ba9429340..99b123b38fe6bfcb86873f46b3aedf64b02de3c5 100644 (file)
@@ -261,8 +261,8 @@ static void send_since_time(JCR *jcr)
 bool send_level_command(JCR *jcr)
 {
    BSOCK   *fd = jcr->file_bsock;
-   const char *accurate=jcr->job->accurate?"accurate_":"";
-   const char *not_accurate="";
+   const char *accurate = jcr->job->accurate?"accurate_":"";
+   const char *not_accurate = "";
    /*
     * Send Level command to File daemon
     */
index fd396c251e2bbab6894446a682e2248729f215dc..3f6059ea5da85617b343dcecb8afb173823d8b7c 100644 (file)
@@ -26,7 +26,7 @@
    Switzerland, email:ftf@fsfeurope.org.
 */
 /*
- *   Version $Id$
+ *   Version $Id $
  *
  */
 
@@ -216,7 +216,7 @@ static bool accurate_lookup(JCR *jcr, char *fname, CurFile *ret)
 
 static bool accurate_init(JCR *jcr, int nbfile)
 {
-   CurFile *elt=NULL;
+   CurFile *elt = NULL;
    jcr->file_list = (htable *)malloc(sizeof(htable));
    jcr->file_list->init(elt, &elt->link, nbfile);
    return true;
@@ -243,7 +243,7 @@ bool accurate_send_deleted_list(JCR *jcr)
    ff_pkt = init_find_files();
    ff_pkt->type = FT_DELETED;
 
-   foreach_htable (elt, jcr->file_list) {
+   foreach_htable(elt, jcr->file_list) {
       if (!elt->seen) { /* already seen */
          Dmsg2(dbglvl, "deleted fname=%s seen=%i\n", elt->fname, elt->seen);
          ff_pkt->fname = elt->fname;
@@ -352,7 +352,7 @@ bail_out:
 }
 
 /* 
- * TODO: use bigbuffer from htable
+ * TODO: use big buffer from htable
  */
 int accurate_cmd(JCR *jcr)
 {
@@ -393,7 +393,6 @@ int accurate_cmd(JCR *jcr)
          edit_uint64_with_commas(sm_max_bytes, b3),
          edit_uint64_with_commas(sm_buffers, b4),
          edit_uint64_with_commas(sm_max_buffers, b5));
-
 #endif
 
    return true;
index b685a971d4dfab67be9f145005cfaa301a3ba5d0..0c21ffe5582a23d2f22de434a4d49d73d85ab8f9 100644 (file)
@@ -107,7 +107,7 @@ static struct s_cmds cmds[] = {
    {"RunBeforeJob", runbefore_cmd, 0},
    {"RunAfterJob",  runafter_cmd,  0},
    {"Run",          runscript_cmd, 0},
-   {"accurate",     accurate_cmd, 0},
+   {"accurate",     accurate_cmd,  0},
    {NULL,       NULL}                  /* list terminator */
 };
 
@@ -1226,7 +1226,7 @@ static int level_cmd(JCR *jcr)
    int mtime_only;
 
    level = get_memory(dir->msglen+1);
-   Dmsg1(110, "level_cmd: %s", dir->msg);
+   Dmsg1(100, "level_cmd: %s", dir->msg);
    if (strstr(dir->msg, "accurate")) {
       jcr->accurate = true;
    }
index 121c4c513d4a8e2b82fedd4c9d5c55e4e5e2853c..d2877d43f01f036bc92f2a2a2fd8f2814de2a537 100644 (file)
 /*
  * This subroutine gets a big buffer.
  */
-void htable::malloc_buf(int size)
+void htable::malloc_big_buf(int size)
 {
    struct h_mem *hmem;
 
    hmem = (struct h_mem *)malloc(size);
    total_size += size;
    blocks++;
-   hmem->next = this->mem;
-   this->mem = hmem;
-   hmem->mem = mem->first;
+   hmem->next = mem_block;
+   mem_block = hmem;
+   hmem->mem = mem_block->first;
    hmem->rem = (char *)hmem + size - hmem->mem;
-   Dmsg2(200, "malloc buf size=%d rem=%d\n", size, hmem->rem);
+   Dmsg3(100, "malloc buf=%p size=%d rem=%d\n", hmem, size, hmem->rem);
 }
 
 /* This routine frees the whole tree */
-void htable::hash_free()
+void htable::hash_big_free()
 {
    struct h_mem *hmem, *rel;
 
-   for (hmem=mem; hmem; ) {
+   for (hmem=mem_block; hmem; ) {
       rel = hmem;
       hmem = hmem->next;
+      Dmsg1(100, "free malloc buf=%p\n", rel);
       free(rel);
    }
 }
 
 #endif
 
+/*
+ * Normal hash malloc routine that gets a 
+ *  "small" buffer from the big buffer
+ */
 char *htable::hash_malloc(int size)
 {
 #ifdef BIG_MALLOC
    char *buf;
    int asize = BALIGN(size);
 
-   if (mem->rem < asize) {
+   if (mem_block->rem < asize) {
       uint32_t mb_size;
       if (total_size >= 1000000) {
          mb_size = 1000000;
       } else {
          mb_size = 100000;
       }
-      malloc_buf(mb_size);
+      malloc_big_buf(mb_size);
    }
-   mem->rem -= asize;
-   buf = mem->mem;
-   mem->mem += asize;
+   mem_block->rem -= asize;
+   buf = mem_block->mem;
+   mem_block->mem += asize;
    return buf;
 #else 
    total_size += size;
@@ -147,6 +152,7 @@ void htable::init(void *item, void *link, int tsize)
 {
    int pwr;
 
+   memset(this, 0, sizeof(htable));
    if (tsize < 31) {
       tsize = 31;
    }
@@ -157,18 +163,12 @@ void htable::init(void *item, void *link, int tsize)
    loffset = (char *)link - (char *)item;
    mask = ~((~0)<<pwr);               /* 3 bits => table size = 8 */
    rshift = 30 - pwr;                 /* start using bits 28, 29, 30 */
-   num_items = 0;                     /* number of entries in table */
    buckets = 1<<pwr;                  /* hash table size -- power of two */
    max_items = buckets * 4;           /* allow average 4 entries per chain */
    table = (hlink **)malloc(buckets * sizeof(hlink *));
    memset(table, 0, buckets * sizeof(hlink *));
-   walkptr = NULL;
-   walk_index = 0;
-   total_size = 0;
-   blocks = 0;
 #ifdef BIG_MALLOC
-   mem = NULL;
-   malloc_buf(1000000);   /* ***FIXME*** need variable or some estimate */
+   malloc_big_buf(1000000);   /* ***FIXME*** need variable or some estimate */
 #endif
 }
 
@@ -352,7 +352,7 @@ void *htable::first()
 void htable::destroy()
 {
 #ifdef BIG_MALLOC
-   hash_free();
+   hash_big_free();
 #else
    void *ni;
    void *li = first();
index 3fe645f40c5a5d57338f7a8f51e5127c90fc4590..1341a7a2ce497cb5c8d9bf12755766b761e1af9e 100644 (file)
@@ -68,7 +68,7 @@ struct hlink {
 
 struct h_mem {
    struct h_mem *next;                /* next buffer */
-   int rem;                           /* remaining bytes */
+   int32_t rem;                       /* remaining bytes in big_buffer */
    char *mem;                         /* memory pointer */
    char first[1];                     /* first byte */
 };
@@ -88,8 +88,8 @@ class htable : public SMARTALLOC {
    uint32_t total_size;               /* total bytes malloced */
    uint32_t blocks;                   /* blocks malloced */
 #ifdef BIG_MALLOC
-   struct h_mem *mem;                 /* malloced memory blocks */
-   void malloc_buf(int size);         /* Get a bit buffer */
+   struct h_mem *mem_block;           /* malloc'ed memory block chain */
+   void malloc_big_buf(int size);     /* Get a big buffer */
 #endif
    void hash_index(char *key);        /* produce hash key,index */
    void grow_table();                 /* grow the table */
@@ -107,6 +107,6 @@ public:
    uint32_t size();                   /* return size of table */
    char *hash_malloc(int size);       /* malloc bytes for a hash entry */
 #ifdef BIG_MALLOC
-   void hash_free();                  /* free all hash allocated bytes */
+   void hash_big_free();              /* free all hash allocated big buffers */
 #endif
 };
index ec0aea08fd5ae255ffc275b7fb114a4e2f89b3e6..58a4e9c6a3f5af4a329c8b6b1f3ce9d04e56833c 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "2.5.3"
-#define BDATE   "14 September 2008"
-#define LSMDATE "14Sep08"
+#define BDATE   "16 September 2008"
+#define LSMDATE "16Sep08"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2008 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2008"       /* year for copyright messages in progs */
index 2c071dcd0f58931aa35d555f62a13eb7402c70a3..86cc37cce18747919330c3a54866fba789c2f8b4 100644 (file)
@@ -18,6 +18,9 @@ dbdriver
 remove reader/writer in FOPTS????
 
 General:
+16Sep08
+kes  Tweaks to htable code to improved debugging and make names
+     a bit more meaningful.
 15Sep08
 ebl  Remove time_t from update_stats()
 14Sep08