btrfs-progs: enforce block count on all devices in mkfs
authorJosef Bacik <josef@redhat.com>
Wed, 28 Mar 2012 18:20:52 +0000 (14:20 -0400)
committerChris Mason <chris.mason@fusionio.com>
Tue, 3 Jul 2012 20:27:46 +0000 (16:27 -0400)
I had a test that creates a 7gig raid1 device but it was ending up wonky
because the second device that gets added is the full size of the disk
instead of the limited size.  So enforce the limited size on all disks
passed in at mkfs time, otherwise our threshold calculations end up wonky
when doing chunk allocations.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
mkfs.c
utils.c

diff --git a/mkfs.c b/mkfs.c
index aa50819..99fd7d4 100644 (file)
--- a/mkfs.c
+++ b/mkfs.c
@@ -1407,6 +1407,7 @@ int main(int ac, char **av)
                        close(fd);
                        continue;
                }
+               dev_block_count = block_count;
                ret = btrfs_prepare_device(fd, file, zero_end,
                                           &dev_block_count, &mixed);
                mixed = old_mixed;
diff --git a/utils.c b/utils.c
index 492c439..5833030 100644 (file)
--- a/utils.c
+++ b/utils.c
@@ -555,6 +555,8 @@ int btrfs_prepare_device(int fd, char *file, int zero_end, u64 *block_count_ret,
                fprintf(stderr, "unable to find %s size\n", file);
                exit(1);
        }
+       if (*block_count_ret)
+               block_count = min(block_count, *block_count_ret);
        zero_end = 1;
 
        if (block_count < 1024 * 1024 * 1024 && !(*mixed)) {