From 974cfeeebb42b4911737876241c13dd12685b412 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Mon, 22 Aug 2016 16:31:11 +0200 Subject: btrfs-progs: mkfs: do not scan partially initialized devices We call scan ioctl on the devices too early, when most of the filesystem structures are not yet created. Move the registration to the end, after the filesystem gets closed. Signed-off-by: David Sterba --- mkfs.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mkfs.c b/mkfs.c index 1f209b54..0b081dd4 100644 --- a/mkfs.c +++ b/mkfs.c @@ -1748,9 +1748,6 @@ int main(int argc, char **argv) exit(1); } - if (is_block_device(file) == 1) - btrfs_register_one_device(file); - if (dev_cnt == 0) goto raid_groups; @@ -1796,9 +1793,6 @@ int main(int argc, char **argv) printf("adding device %s id %llu\n", file, (unsigned long long)device->devid); } - - if (is_block_device(file) == 1) - btrfs_register_one_device(file); } raid_groups: @@ -1867,6 +1861,15 @@ raid_groups: out: ret = close_ctree(root); BUG_ON(ret); + + optind = saved_optind; + dev_cnt = argc - optind; + while (dev_cnt-- > 0) { + file = argv[optind++]; + if (is_block_device(file) == 1) + btrfs_register_one_device(file); + } + btrfs_close_all_devices(); free(label); return 0; -- cgit v1.2.3