]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
bcache: writes correct superblock for multiple cache devs
authorNicholas Swenson <nks@daterainc.com>
Thu, 31 Oct 2013 23:15:49 +0000 (16:15 -0700)
committerNicholas Swenson <nks@daterainc.com>
Thu, 31 Oct 2013 23:15:49 +0000 (16:15 -0700)
Signed-off-by: Nicholas Swenson <nks@daterainc.com>
make-bcache.c

index 9c038a8958dfc6cc8f6bbce9059c1a8e94e3ddbd..30b49638aed831e0c97dde2ca2b69933a7a2853e 100644 (file)
@@ -169,7 +169,8 @@ static void write_sb(char *dev, unsigned block_size, unsigned bucket_size,
                     bool writeback, bool discard,
                     unsigned cache_replacement_policy,
                     uint64_t data_offset,
-                    uuid_t set_uuid, bool bdev)
+                    uuid_t set_uuid, bool bdev,
+                    uint16_t nr_in_set, uint16_t nr_this_dev)
 {
        int fd;
        char uuid_str[40], set_uuid_str[40];
@@ -217,7 +218,8 @@ static void write_sb(char *dev, unsigned block_size, unsigned bucket_size,
                       data_offset);
        } else {
                sb.nbuckets             = getblocks(fd) / sb.bucket_size;
-               sb.nr_in_set            = 1;
+               sb.nr_in_set            = nr_in_set;
+               sb.nr_this_dev          = nr_this_dev;
                sb.first_bucket         = (23 / sb.bucket_size) + 1;
 
                if (sb.nbuckets < 1 << 7) {
@@ -413,12 +415,14 @@ int main(int argc, char **argv)
        for (i = 0; i < ncache_devices; i++)
                write_sb(cache_devices[i], block_size, bucket_size,
                         writeback, discard, cache_replacement_policy,
-                        data_offset, set_uuid, false);
+                        data_offset, set_uuid, false, 
+                        ncache_devices, i);
 
        for (i = 0; i < nbacking_devices; i++)
                write_sb(backing_devices[i], block_size, bucket_size,
                         writeback, discard, cache_replacement_policy,
-                        data_offset, set_uuid, true);
+                        data_offset, set_uuid, true,
+                        nbacking_devices, i);
 
        return 0;
 }