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

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

 



Hi Goffredo,

On 2014/12/23 4:07, Goffredo Baroncelli wrote:
> On 12/22/2014 12:34 PM, Satoru Takeuchi wrote:
>> 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.
> 
> I am impressed, this is the first time that I received this kind
> of request on btrfs ml....

It's because I'd like to contribute to Btrfs not only
by submitting patches, but also by reviewing/testing
other guy's patches to improve its quality better.

> 
> In which form you want this "regression test" ? I see a
> directory tests/ under btrfs-progs; but also I saw
> reference to xfstest...

Any format is OK, for example a simple shell script.

Thanks,
Satoru

> 
> 
> 
>>
>> 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