summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Lei <zhaolei@cn.fujitsu.com>2015-08-24 16:45:03 +0800
committerDavid Sterba <dsterba@suse.com>2015-08-31 19:25:13 +0200
commitec1fc69d3945f67684a2c15969dfb309ed967168 (patch)
tree478a9c43eec1586aca8cf9c04ae86c9ec4a047c6
parentb0f760c91aa9de9a853545f36dc063f6ef5e9008 (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.c1
-rw-r--r--cmds-device.c4
-rw-r--r--cmds-replace.c2
-rw-r--r--mkfs.c1
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;
}
diff --git a/mkfs.c b/mkfs.c
index 7d635dc2..3e609652 100644
--- a/mkfs.c
+++ b/mkfs.c
@@ -1843,6 +1843,7 @@ raid_groups:
out:
ret = close_ctree(root);
BUG_ON(ret);
+ btrfs_close_all_devices();
free(label);
return 0;
}