btrfs-progs: clean up return codes and paths

Use the common patterns with one return statement at the end, pass down error

Signed-off-by: David Sterba <dsterba@suse.cz>
master
David Sterba 2014-04-28 18:55:05 +02:00
parent 4ed59c256a
commit 85a0566d4b
2 changed files with 34 additions and 32 deletions

View File

@ -469,10 +469,8 @@ static int _cmd_device_usage(int fd, char *path, int mode)
ret = load_chunk_and_device_info(fd, &chunkinfo, &chunkcount, &devinfo,
&devcount);
if (ret) {
ret = -1;
goto exit;
}
if (ret)
goto out;
for (i = 0; i < devcount; i++) {
printf("%s, ID: %llu\n", devinfo[i].path, devinfo[i].devid);
@ -482,7 +480,7 @@ static int _cmd_device_usage(int fd, char *path, int mode)
printf("\n");
}
exit:
out:
free(devinfo);
free(chunkinfo);
@ -493,6 +491,7 @@ int cmd_device_usage(int argc, char **argv)
{
int mode = UNITS_HUMAN;
int ret = 0;
int i, more_than_one = 0;
optind = 1;
@ -515,28 +514,28 @@ int cmd_device_usage(int argc, char **argv)
usage(cmd_device_usage_usage);
for (i = optind; i < argc ; i++) {
int r, fd;
int fd;
DIR *dirstream = NULL;
if (more_than_one)
printf("\n");
fd = open_file_or_dir(argv[i], &dirstream);
if (fd < 0) {
fprintf(stderr, "ERROR: can't access to '%s'\n",
fprintf(stderr, "ERROR: can't access '%s'\n",
argv[1]);
return 12;
ret = 1;
goto out;
}
r = _cmd_device_usage(fd, argv[i], mode);
ret = _cmd_device_usage(fd, argv[i], mode);
close_file_or_dir(fd, dirstream);
if (r)
return r;
if (ret)
goto out;
more_than_one = 1;
}
return 0;
out:
return !!ret;
}
const struct cmd_group device_cmd_group = {

View File

@ -68,7 +68,7 @@ static int add_info_to_list(struct chunk_info **info_ptr,
if (!res) {
free(*info_ptr);
fprintf(stderr, "ERROR: not enough memory\n");
return -1;
return -ENOMEM;
}
*info_ptr = res;
@ -163,7 +163,7 @@ static int load_chunk_info(int fd, struct chunk_info **info_ptr, int *info_count
fprintf(stderr,
"ERROR: can't perform the search - %s\n",
strerror(e));
return -99;
return ret;
}
/* the ioctl returns the number of item it found in nr_items */
@ -179,9 +179,10 @@ static int load_chunk_info(int fd, struct chunk_info **info_ptr, int *info_count
off += sizeof(*sh);
item = (struct btrfs_chunk *)(args.buf + off);
if (add_info_to_list(info_ptr, info_count, item)) {
ret = add_info_to_list(info_ptr, info_count, item);
if (ret) {
*info_ptr = 0;
return -100;
return ret;
}
off += sh->len;
@ -319,8 +320,9 @@ static int print_filesystem_usage_overall(int fd, struct chunk_info *chunkinfo,
double K;
u64 raid5_used, raid6_used;
if ((sargs = load_space_info(fd, path)) == NULL) {
ret = -1;
sargs = load_space_info(fd, path);
if (!sargs) {
ret = 1;
goto exit;
}
@ -331,7 +333,7 @@ static int print_filesystem_usage_overall(int fd, struct chunk_info *chunkinfo,
"ERROR: couldn't get space info on '%s' - %s\n",
path, strerror(e));
ret = 19;
ret = 1;
goto exit;
}
get_raid56_used(fd, chunkinfo, chunkcount, &raid5_used, &raid6_used);
@ -439,13 +441,13 @@ static int load_device_info(int fd, struct device_info **device_info_ptr,
return ret;
if (ret < 0) {
fprintf(stderr, "ERROR: cannot get filesystem info\n");
return -1;
return ret;
}
info = calloc(fi_args.num_devices, sizeof(struct device_info));
if (!info) {
fprintf(stderr, "ERROR: not enough memory\n");
return -1;
return ret;
}
for (i = 0, ndevs = 0 ; i <= fi_args.max_id ; i++) {
@ -460,7 +462,7 @@ static int load_device_info(int fd, struct device_info **device_info_ptr,
"ERROR: cannot get info about device devid=%d\n",
i);
free(info);
return -1;
return ret;
}
info[ndevs].devid = dev_info.devid;
@ -749,7 +751,7 @@ static int print_filesystem_usage_by_chunk(int fd,
sargs = load_space_info(fd, path);
if (!sargs) {
ret = 1;
goto exit;
goto out;
}
if (tabular)
@ -759,9 +761,8 @@ static int print_filesystem_usage_by_chunk(int fd,
_cmd_filesystem_usage_linear(mode, sargs, chunkinfo,
chunkcount, devinfo, devcount);
exit:
free(sargs);
out:
return ret;
}
@ -777,6 +778,7 @@ const char * const cmd_filesystem_usage_usage[] = {
int cmd_filesystem_usage(int argc, char **argv)
{
int mode = UNITS_HUMAN;
int ret = 0;
int i, more_than_one = 0;
int tabular = 0;
@ -803,7 +805,6 @@ int cmd_filesystem_usage(int argc, char **argv)
usage(cmd_filesystem_usage_usage);
for (i = optind; i < argc; i++) {
int ret;
int fd;
DIR *dirstream = NULL;
struct chunk_info *chunkinfo = NULL;
@ -813,9 +814,10 @@ int cmd_filesystem_usage(int argc, char **argv)
fd = open_file_or_dir(argv[i], &dirstream);
if (fd < 0) {
fprintf(stderr, "ERROR: can't access to '%s'\n",
fprintf(stderr, "ERROR: can't access '%s'\n",
argv[1]);
return 12;
ret = 1;
goto out;
}
if (more_than_one)
printf("\n");
@ -838,11 +840,12 @@ cleanup:
free(devinfo);
if (ret)
return ret;
goto out;
more_than_one = 1;
}
return 0;
out:
return !!ret;
}
void print_device_chunks(int fd, struct device_info *devinfo,