From 78775c3f5e38e8bee7d04b0f994766c7dd1e6578 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 29 May 2007 22:38:45 +0200 Subject: [PATCH] Sorter buckets now use the parametrized fastbuf interface, too. --- lib/sorter/common.h | 1 + lib/sorter/config.c | 4 +++- lib/sorter/sbuck.c | 10 ++-------- lib/sorter/sorter.h | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/sorter/common.h b/lib/sorter/common.h index f5fc917a..60c6db98 100644 --- a/lib/sorter/common.h +++ b/lib/sorter/common.h @@ -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) diff --git a/lib/sorter/config.c b/lib/sorter/config.c index 60dca3da..8708f7e4 100644 --- a/lib/sorter/config.c +++ b/lib/sorter/config.c @@ -13,18 +13,20 @@ #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), diff --git a/lib/sorter/sbuck.c b/lib/sorter/sbuck.c index 4d9bb91b..e506e318 100644 --- a/lib/sorter/sbuck.c +++ b/lib/sorter/sbuck.c @@ -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; diff --git a/lib/sorter/sorter.h b/lib/sorter/sorter.h index 83d3e7dc..d17f4197 100644 --- a/lib/sorter/sorter.h +++ b/lib/sorter/sorter.h @@ -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; -- 2.39.2