diff --git a/borg/_hashindex.c b/borg/_hashindex.c index b4db4fdaf..6dde62fe3 100644 --- a/borg/_hashindex.c +++ b/borg/_hashindex.c @@ -145,6 +145,53 @@ hashindex_resize(HashIndex *index, int capacity) return 1; } +int get_lower_limit(int num_buckets){ + int min_buckets = hash_sizes[0]; + if (num_buckets <= min_buckets) + return 0; + return (int)(num_buckets * HASH_MIN_LOAD); +} + +int get_upper_limit(int num_buckets){ + int max_buckets = hash_sizes[NELEMS(hash_sizes) - 1]; + if (num_buckets >= max_buckets) + return max_buckets; + return (int)(num_buckets * HASH_MAX_LOAD); +} + +int size_idx(int size){ + /* find the hash_sizes index with entry >= size */ + int elems = NELEMS(hash_sizes); + int entry, i=0; + do{ + entry = hash_sizes[i++]; + }while((entry < size) && (i < elems)); + if (i >= elems) + return elems - 1; + i--; + return i; +} + +int fit_size(int current){ + int i = size_idx(current); + return hash_sizes[i]; +} + +int grow_size(int current){ + int i = size_idx(current) + 1; + int elems = NELEMS(hash_sizes); + if (i >= elems) + return hash_sizes[elems - 1]; + return hash_sizes[i]; +} + +int shrink_size(int current){ + int i = size_idx(current) - 1; + if (i < 0) + return hash_sizes[0]; + return hash_sizes[i]; +} + /* Public API */ static HashIndex * hashindex_read(const char *path) @@ -231,53 +278,6 @@ fail: return index; } -int get_lower_limit(int num_buckets){ - int min_buckets = hash_sizes[0]; - if (num_buckets <= min_buckets) - return 0; - return (int)(num_buckets * HASH_MIN_LOAD); -} - -int get_upper_limit(int num_buckets){ - int max_buckets = hash_sizes[NELEMS(hash_sizes) - 1]; - if (num_buckets >= max_buckets) - return max_buckets; - return (int)(num_buckets * HASH_MAX_LOAD); -} - -int size_idx(int size){ - /* find the hash_sizes index with entry >= size */ - int elems = NELEMS(hash_sizes); - int entry, i=0; - do{ - entry = hash_sizes[i++]; - }while((entry < size) && (i < elems)); - if (i >= elems) - return elems - 1; - i--; - return i; -} - -int fit_size(int current){ - int i = size_idx(current); - return hash_sizes[i]; -} - -int grow_size(int current){ - int i = size_idx(current) + 1; - int elems = NELEMS(hash_sizes); - if (i >= elems) - return hash_sizes[elems - 1]; - return hash_sizes[i]; -} - -int shrink_size(int current){ - int i = size_idx(current) - 1; - if (i < 0) - return hash_sizes[0]; - return hash_sizes[i]; -} - static HashIndex * hashindex_init(int capacity, int key_size, int value_size) {