[PATCH 04/13] btrfs-progs: mkfs: do not scan partially initialized devices
From: David Sterba <dsterba@suse.com>
Date: 2016-08-23 10:43:43
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: David Sterba <dsterba@suse.com>
Date: 2016-08-23 10:43:43
Subsystem:
the rest · Maintainer:
Linus Torvalds
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> --- mkfs.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/mkfs.c b/mkfs.c
index 1f209b54ff79..0b081dd44457 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 @@ int main(int argc, char **argv) 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;
--
2.7.1