All of lore.kernel.org
 help / color / mirror / Atom feed
From: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
To: <kreijack@inwind.it>,
	"linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH][BTRFS-PROGS][CLEANUP] Remove gotos
Date: Wed, 24 Dec 2014 12:04:27 +0900	[thread overview]
Message-ID: <549A2D3B.4090306@jp.fujitsu.com> (raw)
In-Reply-To: <54986BEA.60707@gmail.com>

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


  reply	other threads:[~2014-12-24  3:04 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-21 18:07 [BTRFS-PROGS][PATCH][CLEANUP] Remove some gotos Goffredo Baroncelli
2014-12-21 18:07 ` [PATCH][BTRFS-PROGS][CLEANUP] Remove gotos Goffredo Baroncelli
2014-12-22 11:34   ` Satoru Takeuchi
2014-12-22 19:07     ` Goffredo Baroncelli
2014-12-24  3:04       ` Satoru Takeuchi [this message]
2014-12-22 17:32   ` David Sterba
2014-12-22  2:29 ` [BTRFS-PROGS][PATCH][CLEANUP] Remove some gotos Wang Shilong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=549A2D3B.4090306@jp.fujitsu.com \
    --to=takeuchi_satoru@jp.fujitsu.com \
    --cc=kreijack@inwind.it \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.