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 <dsterba@suse.com>
master
David Sterba 2016-08-22 16:31:11 +02:00
parent 3c350dec06
commit 974cfeeebb
1 changed files with 9 additions and 6 deletions

15
mkfs.c
View File

@ -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;