@@ -1595,22 +1595,29 @@ int get_label(const char *btrfs_dev, char *label)
{
int ret;
- if (is_existing_blk_or_reg_file(btrfs_dev))
- ret = get_label_unmounted(btrfs_dev, label);
- else
+ ret = is_existing_blk_or_reg_file(btrfs_dev);
+ if (!ret)
ret = get_label_mounted(btrfs_dev, label);
+ else if (ret > 0)
+ ret = get_label_unmounted(btrfs_dev, label);
return ret;
}
int set_label(const char *btrfs_dev, const char *label)
{
+ int ret;
+
if (check_label(label))
return -1;
- return is_existing_blk_or_reg_file(btrfs_dev) ?
- set_label_unmounted(btrfs_dev, label) :
- set_label_mounted(btrfs_dev, label);
+ ret = is_existing_blk_or_reg_file(btrfs_dev);
+ if (!ret)
+ ret = set_label_mounted(btrfs_dev, label);
+ else if (ret > 0)
+ ret = set_label_unmounted(btrfs_dev, label);
+
+ return ret;
}
int btrfs_scan_block_devices(int run_ioctl)
The function @is_existing_blk_or_reg_file has a return value of -errno, which indicate the @stat call fails with non-ENOENT errors. In this condition, we should not continue the following work. But -errno evaluates to true and will let the following work go. So we should judge more accurately whether the return value of @is_existing_blk_or_reg_file is > 0 or not to decide our behavior. Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> --- utils.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)