diff options
author | Zhao Lei <zhaolei@cn.fujitsu.com> | 2015-08-24 16:45:03 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2015-08-31 19:25:13 +0200 |
commit | ec1fc69d3945f67684a2c15969dfb309ed967168 (patch) | |
tree | 478a9c43eec1586aca8cf9c04ae86c9ec4a047c6 | |
parent | b0f760c91aa9de9a853545f36dc063f6ef5e9008 (diff) |
btrfs-progs: close all fs_devices before exit in some commands
mkfs creates more than one fs_devices in fs_uuids.
1: one is for file system being created
2: others are created in test_dev_for_mkfs in order to check mount point
test_dev_for_mkfs()-> ... -> btrfs_scan_one_device()
Current code only closes 1, and this patch also closes in case 2.
Similar problem exist in other tools, eg.::
cmd-check.c: the function is:
cmd_check()->check_mounted()-> ... -> btrfs_scan_one_device()
...
Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | cmds-check.c | 1 | ||||
-rw-r--r-- | cmds-device.c | 4 | ||||
-rw-r--r-- | cmds-replace.c | 2 | ||||
-rw-r--r-- | mkfs.c | 1 |
4 files changed, 8 insertions, 0 deletions
diff --git a/cmds-check.c b/cmds-check.c index 1b3bc178..0f912601 100644 --- a/cmds-check.c +++ b/cmds-check.c @@ -9588,6 +9588,7 @@ out: free_root_recs_tree(&root_cache); close_out: close_ctree(root); + btrfs_close_all_devices(); err_out: return ret; } diff --git a/cmds-device.c b/cmds-device.c index cbb6b61d..8e69b885 100644 --- a/cmds-device.c +++ b/cmds-device.c @@ -28,6 +28,7 @@ #include "ctree.h" #include "ioctl.h" #include "utils.h" +#include "volumes.h" #include "cmds-fi-usage.h" #include "commands.h" @@ -140,6 +141,7 @@ static int cmd_device_add(int argc, char **argv) error_out: close_file_or_dir(fdmnt, dirstream); + btrfs_close_all_devices(); return !!ret; } @@ -290,6 +292,7 @@ static int cmd_device_scan(int argc, char **argv) } out: + btrfs_close_all_devices(); return !!ret; } @@ -467,6 +470,7 @@ static int cmd_device_stats(int argc, char **argv) out: free(di_args); close_file_or_dir(fdmnt, dirstream); + btrfs_close_all_devices(); return err; } diff --git a/cmds-replace.c b/cmds-replace.c index c777f1c9..a980305e 100644 --- a/cmds-replace.c +++ b/cmds-replace.c @@ -330,6 +330,7 @@ static int cmd_replace_start(int argc, char **argv) } } close_file_or_dir(fdmnt, dirstream); + btrfs_close_all_devices(); return 0; leave_with_error: @@ -339,6 +340,7 @@ leave_with_error: close(fdmnt); if (fddstdev != -1) close(fddstdev); + btrfs_close_all_devices(); return 1; } @@ -1843,6 +1843,7 @@ raid_groups: out: ret = close_ctree(root); BUG_ON(ret); + btrfs_close_all_devices(); free(label); return 0; } |