Re: [PATCH][BTRFS-PROGS][CLEANUP] Remove gotos

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2014/12/22 3:07, Goffredo Baroncelli wrote:
> Change a spagetti-style code (there are some "interlaced" gotos) to
> a more modern style...
> 
> This patch removes also some #define from utils.h, which define
> constants used only in cmds-filesystems.c . Instead an enum
> is used locally in cmds-filesystems.c .

I'm happy if you have a regression test for this patch
since such kind of change often cause regression.

Thanks,
Satoru

> ---
>   cmds-filesystem.c | 106 ++++++++++++++++++++++++++++--------------------------
>   utils.h           |   3 --
>   2 files changed, 55 insertions(+), 54 deletions(-)
> 
> diff --git a/cmds-filesystem.c b/cmds-filesystem.c
> index 7eaccb9..08ddb5d 100644
> --- a/cmds-filesystem.c
> +++ b/cmds-filesystem.c
> @@ -40,6 +40,11 @@
>   #include "list_sort.h"
>   #include "disk-io.h"
>   
> +enum filesystem_show_scan_method {
> +	BTRFS_SCAN_ANY,
> +	BTRFS_SCAN_MOUNTED,
> +	BTRFS_SCAN_LBLKID
> +};
>   
>   /*
>    * for btrfs fi show, we maintain a hash of fsids we've already printed.
> @@ -853,7 +858,7 @@ static int cmd_show(int argc, char **argv)
>   	char *search = NULL;
>   	int ret;
>   	/* default, search both kernel and udev */
> -	int where = -1;
> +	int where = BTRFS_SCAN_ANY;
>   	int type = 0;
>   	char mp[BTRFS_PATH_NAME_MAX + 1];
>   	char path[PATH_MAX];
> @@ -930,61 +935,60 @@ static int cmd_show(int argc, char **argv)
>   				uuid_unparse(fsid, uuid_buf);
>   				search = uuid_buf;
>   				type = BTRFS_ARG_UUID;
> -				goto devs_only;
> +				where = BTRFS_SCAN_LBLKID;
>   			}
>   		}
>   	}
>   
> -	if (where == BTRFS_SCAN_LBLKID)
> -		goto devs_only;
> -
> -	/* show mounted btrfs */
> -	ret = btrfs_scan_kernel(search);
> -	if (search && !ret) {
> -		/* since search is found we are done */
> -		goto out;
> -	}
> -
> -	/* shows mounted only */
> -	if (where == BTRFS_SCAN_MOUNTED)
> -		goto out;
> -
> -devs_only:
> -	ret = btrfs_scan_lblkid();
> -
> -	if (ret) {
> -		fprintf(stderr, "ERROR: %d while scanning\n", ret);
> -		return 1;
> -	}
> -
> -	found = search_umounted_fs_uuids(&all_uuids, search);
> -	if (found < 0) {
> -		fprintf(stderr,
> -			"ERROR: %d while searching target device\n", ret);
> -		return 1;
> -	}
> -
> -	/*
> -	 * The seed/sprout mapping are not detected yet,
> -	 * do mapping build for all umounted fs
> -	 */
> -	ret = map_seed_devices(&all_uuids);
> -	if (ret) {
> -		fprintf(stderr,
> -			"ERROR: %d while mapping seed devices\n", ret);
> -		return 1;
> +	if (where == BTRFS_SCAN_MOUNTED || where == BTRFS_SCAN_ANY) {
> +	
> +		/* show mounted btrfs */
> +		ret = btrfs_scan_kernel(search);
> +		if (search && !ret) {
> +			/* since search is found we are done */
> +			goto out;
> +		}
> +	
>   	}
> -
> -	list_for_each_entry(fs_devices, &all_uuids, list)
> -		print_one_uuid(fs_devices);
> -
> -	if (search && !found)
> -		ret = 1;
> -
> -	while (!list_empty(&all_uuids)) {
> -		fs_devices = list_entry(all_uuids.next,
> -					struct btrfs_fs_devices, list);
> -		free_fs_devices(fs_devices);
> +	
> +	if (where == BTRFS_SCAN_LBLKID || where == BTRFS_SCAN_ANY) {
> +		
> +		ret = btrfs_scan_lblkid();
> +	
> +		if (ret) {
> +			fprintf(stderr, "ERROR: %d while scanning\n", ret);
> +			return 1;
> +		}
> +	
> +		found = search_umounted_fs_uuids(&all_uuids, search);
> +		if (found < 0) {
> +			fprintf(stderr,
> +				"ERROR: %d while searching target device\n", ret);
> +			return 1;
> +		}
> +	
> +		/*
> +		 * The seed/sprout mapping are not detected yet,
> +		 * do mapping build for all umounted fs
> +		 */
> +		ret = map_seed_devices(&all_uuids);
> +		if (ret) {
> +			fprintf(stderr,
> +				"ERROR: %d while mapping seed devices\n", ret);
> +			return 1;
> +		}
> +	
> +		list_for_each_entry(fs_devices, &all_uuids, list)
> +			print_one_uuid(fs_devices);
> +	
> +		if (search && !found)
> +			ret = 1;
> +	
> +		while (!list_empty(&all_uuids)) {
> +			fs_devices = list_entry(all_uuids.next,
> +						struct btrfs_fs_devices, list);
> +			free_fs_devices(fs_devices);
> +		}
>   	}
>   out:
>   	printf("%s\n", BTRFS_BUILD_VERSION);
> diff --git a/utils.h b/utils.h
> index 0464c2d..603cdfb 100644
> --- a/utils.h
> +++ b/utils.h
> @@ -26,9 +26,6 @@
>   #define BTRFS_MKFS_SYSTEM_GROUP_SIZE (4 * 1024 * 1024)
>   #define BTRFS_MKFS_SMALL_VOLUME_SIZE (1024 * 1024 * 1024)
>   
> -#define BTRFS_SCAN_MOUNTED	(1ULL << 0)
> -#define BTRFS_SCAN_LBLKID	(1ULL << 1)
> -
>   #define BTRFS_UPDATE_KERNEL	1
>   
>   #define BTRFS_ARG_UNKNOWN	0
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux