]> mj.ucw.cz Git - libucw.git/commitdiff
Added "keep buckets" debug option and fixed some bugs.
authorMartin Mares <mj@ucw.cz>
Fri, 9 Feb 2007 17:46:47 +0000 (18:46 +0100)
committerMartin Mares <mj@ucw.cz>
Fri, 9 Feb 2007 17:46:47 +0000 (18:46 +0100)
lib/sorter/common.h
lib/sorter/sbuck.c
lib/sorter/sorter.h

index 8affa6300c34a8504e7c3016360bd05feba97bbf..99bc6a5f7e68497bfac047bdfddc010ecbcab6ef 100644 (file)
@@ -23,6 +23,7 @@ extern u64 sorter_bufsize;
 enum sort_debug {
   SORT_DEBUG_NO_PRESORT = 1,
   SORT_DEBUG_NO_JOIN = 2,
+  SORT_DEBUG_KEEP_BUCKETS = 4,
 };
 
 struct sort_bucket;
index 0895840112644e1149364af4741f3c94e2890c5c..aecf0dade9bc6c7acb3fbd2b215d1d27fe8c4b20 100644 (file)
@@ -71,7 +71,7 @@ sbuck_swap_in(struct sort_bucket *b)
       b->fb = bopen(b->filename, O_RDWR, sorter_stream_bufsize);
       if (b->flags & SBF_OPEN_WRITE)
        bseek(b->fb, 0, SEEK_END);
-      bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 1);
+      bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 1); /* FIXME: Was it always so? */
       b->flags &= ~SBF_SWAPPED_OUT;
       SORT_XTRACE("Swapped in %s", b->filename);
     }
@@ -104,6 +104,8 @@ sbuck_write(struct sort_bucket *b)
     {
       ASSERT(!(b->flags & (SBF_OPEN_READ | SBF_DESTROYED)));
       b->fb = bopen_tmp(sorter_stream_bufsize);
+      if (sorter_debug & SORT_DEBUG_KEEP_BUCKETS)
+       bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 0);
       b->flags |= SBF_OPEN_WRITE;
       b->filename = mp_strdup(b->ctx->pool, b->fb->name);
     }
index 56ccec55df53104f0e1d600815eb574492779f9f..367f36115e1556884ccab7984404cd97a5eb8994 100644 (file)
@@ -168,7 +168,7 @@ static inline int P(hash) (P(key) *x)
 
 static inline void P(copy_data)(P(key) *key, struct fastbuf *in, struct fastbuf *out)
 {
-  bwrite(out, key, sizeof(P(key)));
+  P(write_key)(out, key);
 #ifdef SORT_VAR_DATA
   bbcopy(in, out, SORT_DATA_SIZE(*key));
 #else