]> mj.ucw.cz Git - libucw.git/commitdiff
Sorter buckets now use the parametrized fastbuf interface, too.
authorMartin Mares <mj@ucw.cz>
Tue, 29 May 2007 20:38:45 +0000 (22:38 +0200)
committerMartin Mares <mj@ucw.cz>
Tue, 29 May 2007 20:38:45 +0000 (22:38 +0200)
lib/sorter/common.h
lib/sorter/config.c
lib/sorter/sbuck.c
lib/sorter/sorter.h

index f5fc917ab430ebd0924c7a4c9d7b97f13ce1627a..60c6db98ceb8c63185df0922b25faacbedede4fd 100644 (file)
@@ -16,6 +16,7 @@
 extern uns sorter_trace, sorter_presort_bufsize, sorter_stream_bufsize;
 extern uns sorter_debug, sorter_min_radix_bits, sorter_max_radix_bits;
 extern u64 sorter_bufsize;
+extern struct fb_params sorter_fb_params;
 
 #define SORT_TRACE(x...) do { if (sorter_trace) log(L_DEBUG, x); } while(0)
 #define SORT_XTRACE(level, x...) do { if (sorter_trace >= level) log(L_DEBUG, x); } while(0)
index 60dca3dae6507923b10b57dfb29f2c04af84142c..8708f7e457eb1df0669c6bdba8d411e3bca9032c 100644 (file)
 #include "lib/sorter/common.h"
 
 uns sorter_trace;
-uns sorter_presort_bufsize = 65536;
+uns sorter_presort_bufsize = 65536;            /* FIXME: kill after removing the old sorter */
 uns sorter_stream_bufsize = 65536;
 u64 sorter_bufsize = 65536;
 uns sorter_debug;
 uns sorter_min_radix_bits;
 uns sorter_max_radix_bits;
+struct fb_params sorter_fb_params;
 
 static struct cf_section sorter_config = {
   CF_ITEMS {
     CF_UNS("Trace", &sorter_trace),
     CF_UNS("PresortBuffer", &sorter_presort_bufsize),
     CF_UNS("StreamBuffer", &sorter_stream_bufsize),
+    CF_SECTION("FileAccess", &sorter_fb_params, &fbpar_cf),
     CF_U64("SortBuffer", &sorter_bufsize),
     CF_UNS("Debug", &sorter_debug),
     CF_UNS("MinRadixBits", &sorter_min_radix_bits),
index 4d9bb91b64cf55493ed0273dad15987683a73e3e..e506e3189161d905ca4a1408df789f799b4c86bc 100644 (file)
@@ -69,10 +69,7 @@ sbuck_swap_in(struct sort_bucket *b)
 {
   if (b->flags & SBF_SWAPPED_OUT)
     {
-      if (sorter_stream_bufsize)       /* FIXME: Needs better configuration, probably semi-automatic one */
-       b->fb = bopen(b->filename, O_RDWR, sorter_stream_bufsize);
-      else
-       b->fb = fbdir_open(b->filename, O_RDWR, NULL);
+      b->fb = bopen_file(b->filename, O_RDWR, &sorter_fb_params);      /* FIXME: Something different for small buckets? */
       if (b->flags & SBF_OPEN_WRITE)
        bseek(b->fb, 0, SEEK_END);
       bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 1);
@@ -107,10 +104,7 @@ sbuck_write(struct sort_bucket *b)
   else
     {
       ASSERT(!(b->flags & (SBF_OPEN_READ | SBF_DESTROYED)));
-      if (sorter_stream_bufsize)
-       b->fb = bopen_tmp(sorter_stream_bufsize);
-      else
-       b->fb = fbdir_open_tmp(NULL);
+      b->fb = bopen_tmp_file(&sorter_fb_params);
       if (sorter_debug & SORT_DEBUG_KEEP_BUCKETS)
        bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 0);
       b->flags |= SBF_OPEN_WRITE;
index 83d3e7dcacf32203528e634190914dd69780354b..d17f4197d89177f22f4be41971ce3f215306323e 100644 (file)
@@ -225,7 +225,7 @@ static struct fastbuf *P(sort)(
   bzero(&ctx, sizeof(ctx));
 
 #ifdef SORT_INPUT_FILE
-  ctx.in_fb = bopen(in, O_RDONLY, sorter_stream_bufsize);
+  ctx.in_fb = bopen_file(in, O_RDONLY, &sorter_fb_params);
   ctx.in_size = bfilesize(ctx.in_fb);
 #elif defined(SORT_INPUT_FB)
   ctx.in_fb = in;