2009-01-19 12:58:13

by Cong Wang

[permalink] [raw]
Subject: [Patch] Btrfs: use BTRFS_VOL_NAME_MAX for struct btrfs_ioctl_vol_args


I found userspace tool, btrfsctl, uses BTRFS_VOL_NAME_MAX, and
it also looks that this one is more proper.

Kill BTRFS_PATH_NAME_MAX since no one will use it.

Signed-off-by: WANG Cong <[email protected]>
Cc: Chris Mason <[email protected]>

---
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index c2aa33e..f229950 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -472,7 +472,7 @@ static int btrfs_ioctl_resize(struct btrfs_root *root, void __user *arg)
goto out;
}

- vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
+ vol_args->name[BTRFS_VOL_NAME_MAX] = '\0';
namelen = strlen(vol_args->name);

mutex_lock(&root->fs_info->volume_mutex);
@@ -576,7 +576,7 @@ static noinline int btrfs_ioctl_snap_create(struct file *file,
goto out;
}

- vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
+ vol_args->name[BTRFS_VOL_NAME_MAX] = '\0';
namelen = strlen(vol_args->name);
if (strchr(vol_args->name, '/')) {
ret = -EINVAL;
@@ -685,7 +685,7 @@ static long btrfs_ioctl_add_dev(struct btrfs_root *root, void __user *arg)
ret = -EFAULT;
goto out;
}
- vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
+ vol_args->name[BTRFS_VOL_NAME_MAX] = '\0';
ret = btrfs_init_new_device(root, vol_args->name);

out:
@@ -713,7 +713,7 @@ static long btrfs_ioctl_rm_dev(struct btrfs_root *root, void __user *arg)
ret = -EFAULT;
goto out;
}
- vol_args->name[BTRFS_PATH_NAME_MAX] = '\0';
+ vol_args->name[BTRFS_VOL_NAME_MAX] = '\0';
ret = btrfs_rm_device(root, vol_args->name);

out:
diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h
index b320b10..f5d182a 100644
--- a/fs/btrfs/ioctl.h
+++ b/fs/btrfs/ioctl.h
@@ -22,12 +22,10 @@

#define BTRFS_IOCTL_MAGIC 0x94
#define BTRFS_VOL_NAME_MAX 255
-#define BTRFS_PATH_NAME_MAX 4087

-/* this should be 4k */
struct btrfs_ioctl_vol_args {
__s64 fd;
- char name[BTRFS_PATH_NAME_MAX + 1];
+ char name[BTRFS_VOL_NAME_MAX + 1];
};

struct btrfs_ioctl_clone_range_args {
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index db9fb3b..5facdbf 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -593,7 +593,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
ret = -EFAULT;
goto out;
}
- len = strnlen(vol->name, BTRFS_PATH_NAME_MAX);
+ len = strnlen(vol->name, BTRFS_VOL_NAME_MAX);

switch (cmd) {
case BTRFS_IOC_SCAN_DEV:


2009-01-19 13:06:36

by Josef Bacik

[permalink] [raw]
Subject: Re: [Patch] Btrfs: use BTRFS_VOL_NAME_MAX for struct btrfs_ioctl_vol_args

On Mon, Jan 19, 2009 at 08:57:32PM +0800, Am?rico Wang wrote:
>
> I found userspace tool, btrfsctl, uses BTRFS_VOL_NAME_MAX, and
> it also looks that this one is more proper.
>
> Kill BTRFS_PATH_NAME_MAX since no one will use it.
>

Nope, BTRFS_PATH_NAME_MAX is specifically used for the ioctl stuff, makes the
arguments 4k aligned, this patch is incorrect. Thanks,

Josef

2009-01-19 13:12:57

by Cong Wang

[permalink] [raw]
Subject: Re: [Patch] Btrfs: use BTRFS_VOL_NAME_MAX for struct btrfs_ioctl_vol_args

On Mon, Jan 19, 2009 at 08:03:37AM -0500, Josef Bacik wrote:
>On Mon, Jan 19, 2009 at 08:57:32PM +0800, Américo Wang wrote:
>>
>> I found userspace tool, btrfsctl, uses BTRFS_VOL_NAME_MAX, and
>> it also looks that this one is more proper.
>>
>> Kill BTRFS_PATH_NAME_MAX since no one will use it.
>>
>
>Nope, BTRFS_PATH_NAME_MAX is specifically used for the ioctl stuff, makes the
>arguments 4k aligned, this patch is incorrect. Thanks,

Ok, then what is BTRFS_VOL_NAME_MAX? :)


--
"Against stupidity, the gods themselves, contend in vain."

2009-01-21 15:05:45

by Chris Mason

[permalink] [raw]
Subject: Re: [Patch] Btrfs: use BTRFS_VOL_NAME_MAX for struct btrfs_ioctl_vol_args

On Mon, 2009-01-19 at 21:12 +0800, Américo Wang wrote:
> On Mon, Jan 19, 2009 at 08:03:37AM -0500, Josef Bacik wrote:
> >On Mon, Jan 19, 2009 at 08:57:32PM +0800, Américo Wang wrote:
> >>
> >> I found userspace tool, btrfsctl, uses BTRFS_VOL_NAME_MAX, and
> >> it also looks that this one is more proper.
> >>
> >> Kill BTRFS_PATH_NAME_MAX since no one will use it.
> >>
> >
> >Nope, BTRFS_PATH_NAME_MAX is specifically used for the ioctl stuff, makes the
> >arguments 4k aligned, this patch is incorrect. Thanks,
>
> Ok, then what is BTRFS_VOL_NAME_MAX? :)

Right now it is only used in the progs. The disk format doesn't really
have a max there, it is just to keep names usable. But, we should add a
check in the kernel ioctl side, are you interested in sending a patch
for it?

-chris

2009-01-22 16:11:26

by Cong Wang

[permalink] [raw]
Subject: Re: [Patch] Btrfs: use BTRFS_VOL_NAME_MAX for struct btrfs_ioctl_vol_args

On Wed, Jan 21, 2009 at 10:04:08AM -0500, Chris Mason wrote:
>On Mon, 2009-01-19 at 21:12 +0800, Américo Wang wrote:
>> On Mon, Jan 19, 2009 at 08:03:37AM -0500, Josef Bacik wrote:
>> >On Mon, Jan 19, 2009 at 08:57:32PM +0800, Américo Wang wrote:
>> >>
>> >> I found userspace tool, btrfsctl, uses BTRFS_VOL_NAME_MAX, and
>> >> it also looks that this one is more proper.
>> >>
>> >> Kill BTRFS_PATH_NAME_MAX since no one will use it.
>> >>
>> >
>> >Nope, BTRFS_PATH_NAME_MAX is specifically used for the ioctl stuff, makes the
>> >arguments 4k aligned, this patch is incorrect. Thanks,
>>
>> Ok, then what is BTRFS_VOL_NAME_MAX? :)
>
>Right now it is only used in the progs. The disk format doesn't really
>have a max there, it is just to keep names usable. But, we should add a
>check in the kernel ioctl side, are you interested in sending a patch
>for it?
>

Yup, I will do.

Thanks.

--
"Against stupidity, the gods themselves, contend in vain."