All of lore.kernel.org
 help / color / mirror / Atom feed
From: Goffredo Baroncelli <kreijack@gmail.com>
To: Jeff Liu <jeff.liu@oracle.com>
Cc: linux-btrfs@vger.kernel.org, anand.jain@oracle.com,
	miaox@cn.fujitsu.com, dsterba@suse.cz
Subject: Re: [RFC PATCH v9 1/2] Btrfs: Add a new ioctl to get the label of a mounted file system
Date: Sun, 06 Jan 2013 19:44:39 +0100	[thread overview]
Message-ID: <50E9C617.7010303@gmail.com> (raw)
In-Reply-To: <50E79461.3090802@oracle.com>

Hi Jeff,

On 01/05/2013 03:48 AM, Jeff Liu wrote:
> Add a new ioctl(2) BTRFS_IOC_GET_FSLABLE, so that we can get the label upon a mounted filesystem.
> 
> Signed-off-by: Jie Liu <jeff.liu@oracle.com>
> Signed-off-by: Anand Jain <anand.jain@oracle.com>
> Cc: Miao Xie <miaox@cn.fujitsu.com>
> Cc: Goffredo Baroncelli <kreijack@inwind.it>
> Cc: David Sterba <dsterba@suse.cz>
> 
> ---
>  fs/btrfs/ioctl.c |   21 +++++++++++++++++++++
>  fs/btrfs/ioctl.h |    2 ++
>  2 files changed, 23 insertions(+)
> 
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index 8fcf9a5..ef2f55a 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -3699,6 +3699,25 @@ out:
>  	return ret;
>  }
>  

May be that it was already discussed, and I am missing something, but if
we check the label length we should terminate the string with a zero in
case this is too long...

However this is a minor bug, please push this patch forward..


> +static int btrfs_ioctl_get_fslabel(struct file *file, void __user *arg)
> +{
> +	struct btrfs_root *root = BTRFS_I(fdentry(file)->d_inode)->root;
> +	const char *label = root->fs_info->super_copy->label;
> +	size_t len = strnlen(label, BTRFS_LABEL_SIZE);
> +	int ret;
+       int label_is_too_long = 0;
> +
> +	if (len == BTRFS_LABEL_SIZE) {
> +		pr_warn("btrfs: label is too long, return the first %zu bytes\n",
> +			--len);

+               label_is_too_long = 1;
> +	}
> +
> +	mutex_lock(&root->fs_info->volume_mutex);
> +	ret = copy_to_user(arg, label, len);
+	if (!ret && label_is_too_long)
+     		ret = copy_to_user(arg+BTRFS_LABEL_SIZE, "", 1);
> +	mutex_unlock(&root->fs_info->volume_mutex);
> +
> +	return ret ? -EFAULT : 0;
> +}
> +
>  long btrfs_ioctl(struct file *file, unsigned int
>  		cmd, unsigned long arg)
>  {
> @@ -3797,6 +3816,8 @@ long btrfs_ioctl(struct file *file, unsigned int
>  		return btrfs_ioctl_qgroup_create(root, argp);
>  	case BTRFS_IOC_QGROUP_LIMIT:
>  		return btrfs_ioctl_qgroup_limit(root, argp);
> +	case BTRFS_IOC_GET_FSLABEL:
> +		return btrfs_ioctl_get_fslabel(file, argp);
>  	}
>  
>  	return -ENOTTY;
> diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h
> index 731e287..5b2cbef 100644
> --- a/fs/btrfs/ioctl.h
> +++ b/fs/btrfs/ioctl.h
> @@ -451,6 +451,8 @@ struct btrfs_ioctl_send_args {
>  			       struct btrfs_ioctl_qgroup_create_args)
>  #define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, \
>  			       struct btrfs_ioctl_qgroup_limit_args)
> +#define BTRFS_IOC_GET_FSLABEL _IOR(BTRFS_IOCTL_MAGIC, 49, \
> +				   char[BTRFS_LABEL_SIZE])
>  #define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, \
>  				      struct btrfs_ioctl_get_dev_stats)
>  #endif


-- 
gpg @keyserver.linux.it: Goffredo Baroncelli (kreijackATinwind.it>
Key fingerprint BBF5 1610 0B64 DAC6 5F7D  17B2 0EDA 9B37 8B82 E0B5

  reply	other threads:[~2013-01-06 18:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-05  2:47 [RFC PATCH v9 0/2] Btrfs: get/set label for a mounted file system Jeff Liu
2013-01-05  2:48 ` [RFC PATCH v9 1/2] Btrfs: Add a new ioctl to get the label of " Jeff Liu
2013-01-06 18:44   ` Goffredo Baroncelli [this message]
2013-01-07  6:24     ` Jeff Liu
2013-01-07 17:32       ` Goffredo Baroncelli
2013-01-08  7:58         ` Jeff Liu
2013-01-05  2:48 ` [RFC PATCH v9 2/2] Btrfs: set/change " Jeff Liu
2013-01-06 18:32   ` Goffredo Baroncelli

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=50E9C617.7010303@gmail.com \
    --to=kreijack@gmail.com \
    --cc=anand.jain@oracle.com \
    --cc=dsterba@suse.cz \
    --cc=jeff.liu@oracle.com \
    --cc=kreijack@inwind.it \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=miaox@cn.fujitsu.com \
    /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.