linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Liu <jeff.liu@oracle.com>
To: Stefan Behrens <sbehrens@giantdisaster.de>
Cc: linux-btrfs@vger.kernel.org, dsterba@suse.cz,
	Gene Czarcinski <gene@czarc.net>
Subject: Re: [PATCH 2/2] btrfs-progs: remove btrfslabel.[c|h]
Date: Tue, 29 Jan 2013 18:28:53 +0800	[thread overview]
Message-ID: <5107A465.9020807@oracle.com> (raw)
In-Reply-To: <5107A3B8.6090401@giantdisaster.de>

On 01/29/2013 06:26 PM, Stefan Behrens wrote:
> On Tue, 29 Jan 2013 14:24:13 +0800, Jeff Liu wrote:
>> Clean btrfslabel.[c|h] out of the source tree and move those related
>> functions to utils.[c|h].
>>
>> Signed-off-by: Jie Liu <jeff.liu@oracle.com>
>> CC: David Sterba <dsterba@suse.cz>
>> CC: Gene Czarcinski <gene@czarc.net>
>> ---
>>  Makefile          |    4 +-
>>  btrfslabel.c      |  178 -----------------------------------------------------
>>  btrfslabel.h      |    5 --
>>  cmds-filesystem.c |    1 -
>>  utils.c           |  129 ++++++++++++++++++++++++++++++++++++++
>>  utils.h           |    2 +
>>  6 files changed, 133 insertions(+), 186 deletions(-)
>>  delete mode 100644 btrfslabel.c
>>  delete mode 100644 btrfslabel.h
>>
>> diff --git a/Makefile b/Makefile
>> index 4894903..e54b21e 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -4,8 +4,8 @@ CFLAGS = -g -O1
>>  objects = ctree.o disk-io.o radix-tree.o extent-tree.o print-tree.o \
>>  	  root-tree.o dir-item.o file-item.o inode-item.o \
>>  	  inode-map.o crc32c.o rbtree.o extent-cache.o extent_io.o \
>> -	  volumes.o utils.o btrfs-list.o btrfslabel.o repair.o \
>> -	  send-stream.o send-utils.o qgroup.o
>> +	  volumes.o utils.o btrfs-list.o repair.o send-stream.o \
>> +	  send-utils.o qgroup.o
>>  cmds_objects = cmds-subvolume.o cmds-filesystem.o cmds-device.o cmds-scrub.o \
>>  	       cmds-inspect.o cmds-balance.o cmds-send.o cmds-receive.o \
>>  	       cmds-quota.o cmds-qgroup.o
>> diff --git a/btrfslabel.c b/btrfslabel.c
>> deleted file mode 100644
>> index 2826050..0000000
>> --- a/btrfslabel.c
>> +++ /dev/null
>> @@ -1,178 +0,0 @@
>> -/*
>> - * Copyright (C) 2008 Morey Roof.   All rights reserved.
>> - *
>> - * This program is free software; you can redistribute it and/or
>> - * modify it under the terms of the GNU General Public
>> - * License v2 as published by the Free Software Foundation.
>> - *
>> - * This program is distributed in the hope that it will be useful,
>> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> - * General Public License for more details.
>> - *
>> - * You should have received a copy of the GNU General Public
>> - * License along with this program; if not, write to the
>> - * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
>> - * Boston, MA 021110-1307, USA.
>> - */
>> -
>> -#define _GNU_SOURCE
>> -
>> -#ifndef __CHECKER__
>> -#include <sys/ioctl.h>
>> -#include <sys/mount.h>
>> -#include "ioctl.h"
>> -#endif /* __CHECKER__ */
>> -
>> -#include <stdio.h>
>> -#include <stdlib.h>
>> -#include <sys/types.h>
>> -#include <sys/stat.h>
>> -#include <dirent.h>
>> -#include <fcntl.h>
>> -#include <unistd.h>
>> -#include <linux/fs.h>
>> -#include <linux/limits.h>
>> -#include <ctype.h>
>> -#include "kerncompat.h"
>> -#include "ctree.h"
>> -#include "utils.h"
>> -#include "version.h"
>> -#include "disk-io.h"
>> -#include "transaction.h"
>> -
>> -#define MOUNTED                        1
>> -#define UNMOUNTED                      2
>> -#define GET_LABEL                      3
>> -#define SET_LABEL                      4
>> -
>> -static int set_label_unmounted(const char *dev, const char *label)
>> -{
>> -	struct btrfs_trans_handle *trans;
>> -	struct btrfs_root *root;
>> -	int ret;
>> -
>> -	ret = check_mounted(dev);
>> -	if (ret < 0) {
>> -	       fprintf(stderr, "FATAL: error checking %s mount status\n", dev);
>> -	       return -1;
>> -	}
>> -	if (ret > 0) {
>> -		fprintf(stderr, "ERROR: dev %s is mounted, use mount point\n",
>> -			dev);
>> -		return -1;
>> -	}
>> -
>> -	if (strlen(label) > BTRFS_LABEL_SIZE - 1) {
>> -		fprintf(stderr, "ERROR: Label %s is too long (max %d)\n",
>> -			label, BTRFS_LABEL_SIZE - 1);
>> -		return -1;
>> -	}
>> -
>> -	/* Open the super_block at the default location
>> -	 * and as read-write.
>> -	 */
>> -	root = open_ctree(dev, 0, 1);
>> -	if (!root) /* errors are printed by open_ctree() */
>> -		return -1;
>> -
>> -	trans = btrfs_start_transaction(root, 1);
>> -	snprintf(root->fs_info->super_copy.label, BTRFS_LABEL_SIZE, "%s",
>> -		 label);
>> -	btrfs_commit_transaction(trans, root);
>> -
>> -	/* Now we close it since we are done. */
>> -	close_ctree(root);
>> -	return 0;
>> -}
>> -
>> -static int set_label_mounted(const char *mount_path, const char *label)
>> -{
>> -	int fd;
>> -
>> -	fd = open(mount_path, O_RDONLY | O_NOATIME);
>> -	if (fd < 0) {
>> -		fprintf(stderr, "ERROR: unable access to '%s'\n", mount_path);
>> -		return -1;
>> -	}
>> -
>> -	if (ioctl(fd, BTRFS_IOC_SET_FSLABEL, label) < 0) {
>> -		fprintf(stderr, "ERROR: unable to set label %s\n",
>> -			strerror(errno));
>> -		close(fd);
>> -		return -1;
>> -	}
>> -
>> -	return 0;
>> -}
>> -
>> -static int get_label_unmounted(const char *dev)
>> -{
>> -	struct btrfs_root *root;
>> -	int ret;
>> -
>> -	ret = check_mounted(dev);
>> -	if (ret < 0) {
>> -	       fprintf(stderr, "FATAL: error checking %s mount status\n", dev);
>> -	       return -1;
>> -	}
>> -	if (ret > 0) {
>> -		fprintf(stderr, "ERROR: dev %s is mounted, use mount point\n",
>> -			dev);
>> -		return -1;
>> -	}
>> -
>> -	/* Open the super_block at the default location
>> -	 * and as read-only.
>> -	 */
>> -	root = open_ctree(dev, 0, 0);
>> -	if(!root)
>> -		return -1;
>> -
>> -	fprintf(stdout, "%s\n", root->fs_info->super_copy.label);
>> -
>> -	/* Now we close it since we are done. */
>> -	close_ctree(root);
>> -	return 0;
>> -}
>> -
>> -/*
>> - * If a partition is mounted, try to get the filesystem label via its
>> - * mounted path rather than device.  Return the corresponding error
>> - * the user specified the device path.
>> - */
>> -static int get_label_mounted(const char *mount_path)
>> -{
>> -	char label[BTRFS_LABEL_SIZE];
>> -	int fd;
>> -
>> -	fd = open(mount_path, O_RDONLY | O_NOATIME);
>> -	if (fd < 0) {
>> -		fprintf(stderr, "ERROR: unable access to '%s'\n", mount_path);
>> -		return -1;
>> -	}
>> -
>> -	memset(label, '\0', sizeof(label));
>> -	if (ioctl(fd, BTRFS_IOC_GET_FSLABEL, label) < 0) {
>> -		fprintf(stderr, "ERROR: unable get label %s\n", strerror(errno));
>> -		close(fd);
>> -		return -1;
>> -	}
>> -
>> -	fprintf(stdout, "%s\n", label);
>> -	return 0;
>> -}
>> -
>> -int get_label(const char *btrfs_dev)
>> -{
>> -	return is_existing_blk_or_reg_file(btrfs_dev) ?
>> -		get_label_unmounted(btrfs_dev) :
>> -		get_label_mounted(btrfs_dev);
>> -}
>> -
>> -int set_label(char *btrfs_dev, char *label)
>> -{
>> -	return is_existing_blk_or_reg_file(btrfs_dev) ?
>> -		set_label_unmounted(btrfs_dev, label) :
>> -		set_label_mounted(btrfs_dev, label);
>> -}
>> diff --git a/btrfslabel.h b/btrfslabel.h
>> deleted file mode 100644
>> index abf43ad..0000000
>> --- a/btrfslabel.h
>> +++ /dev/null
>> @@ -1,5 +0,0 @@
>> -/* btrflabel.h */
>> -
>> -
>> -int get_label(char *btrfs_dev);
>> -int set_label(char *btrfs_dev, char *nLabel);
>> \ No newline at end of file
>> diff --git a/cmds-filesystem.c b/cmds-filesystem.c
>> index 5770d8b..3752703 100644
>> --- a/cmds-filesystem.c
>> +++ b/cmds-filesystem.c
>> @@ -32,7 +32,6 @@
>>  #include "version.h"
>>  
>>  #include "commands.h"
>> -#include "btrfslabel.h"
>>  
>>  static const char * const filesystem_cmd_group_usage[] = {
>>  	"btrfs filesystem [<group>] <command> [<args>]",
>> diff --git a/utils.c b/utils.c
>> index 034da8f..d65bc35 100644
>> --- a/utils.c
>> +++ b/utils.c
>> @@ -16,6 +16,7 @@
>>   * Boston, MA 021110-1307, USA.
>>   */
>>  
>> +#define _GNU_SOURCE
>>  #define _XOPEN_SOURCE 600
>>  #define __USE_XOPEN2K
>>  #include <stdio.h>
>> @@ -1144,6 +1145,134 @@ static int check_label(char *input)
>>         return 0;
>>  }
>>  
>> +static int set_label_unmounted(const char *dev, const char *label)
>> +{
>> +	struct btrfs_trans_handle *trans;
>> +	struct btrfs_root *root;
>> +	int ret;
>> +
>> +	ret = check_mounted(dev);
>> +	if (ret < 0) {
>> +	       fprintf(stderr, "FATAL: error checking %s mount status\n", dev);
>> +	       return -1;
>> +	}
>> +	if (ret > 0) {
>> +		fprintf(stderr, "ERROR: dev %s is mounted, use mount point\n",
>> +			dev);
>> +		return -1;
>> +	}
>> +
>> +	/* Open the super_block at the default location
>> +	 * and as read-write.
>> +	 */
>> +	root = open_ctree(dev, 0, 1);
>> +	if (!root) /* errors are printed by open_ctree() */
>> +		return -1;
>> +
>> +	trans = btrfs_start_transaction(root, 1);
>> +	snprintf(root->fs_info->super_copy.label, BTRFS_LABEL_SIZE, "%s",
>> +		 label);
>> +	btrfs_commit_transaction(trans, root);
>> +
>> +	/* Now we close it since we are done. */
>> +	close_ctree(root);
>> +	return 0;
>> +}
>> +
>> +static int set_label_mounted(const char *mount_path, const char *label)
>> +{
>> +	int fd;
>> +
>> +	fd = open(mount_path, O_RDONLY | O_NOATIME);
>> +	if (fd < 0) {
>> +		fprintf(stderr, "ERROR: unable access to '%s'\n", mount_path);
>> +		return -1;
>> +	}
>> +
>> +	if (ioctl(fd, BTRFS_IOC_SET_FSLABEL, label) < 0) {
>> +		fprintf(stderr, "ERROR: unable to set label %s\n",
>> +			strerror(errno));
>> +		close(fd);
>> +		return -1;
>> +	}
>> +
>> +	return 0;
>> +}
>> +
>> +static int get_label_unmounted(const char *dev)
>> +{
>> +	struct btrfs_root *root;
>> +	int ret;
>> +
>> +	ret = check_mounted(dev);
>> +	if (ret < 0) {
>> +	       fprintf(stderr, "FATAL: error checking %s mount status\n", dev);
>> +	       return -1;
>> +	}
>> +	if (ret > 0) {
>> +		fprintf(stderr, "ERROR: dev %s is mounted, use mount point\n",
>> +			dev);
>> +		return -1;
>> +	}
>> +
>> +	/* Open the super_block at the default location
>> +	 * and as read-only.
>> +	 */
>> +	root = open_ctree(dev, 0, 0);
>> +	if(!root)
>> +		return -1;
>> +
>> +	fprintf(stdout, "%s\n", root->fs_info->super_copy.label);
>> +
>> +	/* Now we close it since we are done. */
>> +	close_ctree(root);
>> +	return 0;
>> +}
>> +
>> +/*
>> + * If a partition is mounted, try to get the filesystem label via its
>> + * mounted path rather than device.  Return the corresponding error
>> + * the user specified the device path.
>> + */
>> +static int get_label_mounted(const char *mount_path)
>> +{
>> +	char label[BTRFS_LABEL_SIZE];
>> +	int fd;
>> +
>> +	fd = open(mount_path, O_RDONLY | O_NOATIME);
>> +	if (fd < 0) {
>> +		fprintf(stderr, "ERROR: unable access to '%s'\n", mount_path);
>> +		return -1;
>> +	}
>> +
>> +	memset(label, '\0', sizeof(label));
>> +	if (ioctl(fd, BTRFS_IOC_GET_FSLABEL, label) < 0) {
>> +		fprintf(stderr, "ERROR: unable get label %s\n", strerror(errno));
>> +		close(fd);
>> +		return -1;
>> +	}
>> +
>> +	fprintf(stdout, "%s\n", label);
>> +	return 0;
>> +}
>> +
>> +int get_label(const char *btrfs_dev)
>> +{
>> +	return is_existing_blk_or_reg_file(btrfs_dev) ?
>> +		get_label_unmounted(btrfs_dev) :
>> +		get_label_mounted(btrfs_dev);
>> +}
>> +
>> +int set_label(const char *btrfs_dev, const char *label)
>> +{
>> +	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);
>> +}
>> +
>>  int btrfs_scan_block_devices(int run_ioctl)
>>  {
>>  
>> diff --git a/utils.h b/utils.h
>> index a0b782b..632b01c 100644
>> --- a/utils.h
>> +++ b/utils.h
>> @@ -46,4 +46,6 @@ int get_mountpt(char *dev, char *mntpt, size_t size);
>>  
>>  int btrfs_scan_block_devices(int run_ioctl);
>>  int is_existing_blk_or_reg_file(const char* filename);
>> +int get_label(const char *btrfs_dev);
>> +int set_label(const char *btrfs_dev, const char *label);
>>  #endif
>>
> 
> Jeff, You moved everything except for the copyright text and finally
> deleted the file with the copyright text.
> Shouldn't you add this text to util.c as well?
Sure, thanks for your reminder. :)

-Jeff
> 
> Something like this (the Oracle text was already present in utils.c, and
> the Morey Roof text is taken from utils.c, the license was equal in both
> files):
> /*
>  * Copyright (C) 2007 Oracle.  All rights reserved.
>  * Copyright (C) 2008 Morey Roof.   All rights reserved.
>  *
>  * This program is free software; you can redistribute it and/or
> ...
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


      reply	other threads:[~2013-01-29 10:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-29  6:24 [PATCH 0/2] btrfs-progs: btrfslabel source code consolidation Jeff Liu
2013-01-29  6:24 ` [PATCH 1/2] btrfs-progs: refactor check_label() Jeff Liu
2013-01-29 15:19   ` David Sterba
2013-01-29 16:52     ` Jeff Liu
2013-01-29  6:24 ` [PATCH 2/2] btrfs-progs: remove btrfslabel.[c|h] Jeff Liu
2013-01-29 10:26   ` Stefan Behrens
2013-01-29 10:28     ` Jeff Liu [this message]

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=5107A465.9020807@oracle.com \
    --to=jeff.liu@oracle.com \
    --cc=dsterba@suse.cz \
    --cc=gene@czarc.net \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=sbehrens@giantdisaster.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).