]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
bcacheadm: increase btree node size for large buckets
authorJacob Malevich <jam@daterainc.com>
Tue, 6 Jan 2015 19:10:20 +0000 (11:10 -0800)
committerJacob Malevich <jam@daterainc.com>
Tue, 6 Jan 2015 19:10:20 +0000 (11:10 -0800)
buckets over 512k were causing deadlocks when the btree node
size was smaller than the bucket size.

Change-Id: Icb278d75c241e9643ab1355620e3d656df52c4ee
Signed-off-by: Jacob Malevich <jam@daterainc.com>
bcache.c

index a69a46fb0ad6dacd37fd141d6568b311aaf0d2c5..2bc32c035a20efb55cebbd4945178d869bd0f235 100644 (file)
--- a/bcache.c
+++ b/bcache.c
@@ -559,16 +559,6 @@ static unsigned min_bucket_size(int num_bucket_sizes, unsigned *bucket_sizes)
        return min;
 }
 
-static unsigned node_size(unsigned bucket_size) {
-
-       if (bucket_size <= 256)
-               return bucket_size;
-       else if (bucket_size <= 512)
-               return bucket_size / 2;
-       else
-               return bucket_size / 4;
-}
-
 void write_cache_sbs(int *fds, struct cache_sb *sb,
                            unsigned block_size, unsigned *bucket_sizes,
                                int num_bucket_sizes)
@@ -596,7 +586,8 @@ void write_cache_sbs(int *fds, struct cache_sb *sb,
                        sb->bucket_size = bucket_sizes[0];
                else
                        sb->bucket_size = bucket_sizes[i];
-               SET_CACHE_BTREE_NODE_SIZE(sb, node_size(min_size));
+               SET_CACHE_BTREE_NODE_SIZE(sb, min_size);
+
 
                sb->uuid = m->uuid;
                sb->nbuckets            = getblocks(fds[i]) / sb->bucket_size;