From: Eric Sandeen <hidden> Date: 2018-05-09 15:56:47
I'm planning to add online label set/get support to xfs, and to do so
I plan to re-use the existing btrfs ioctls, BTRFS_IOC_[SG]ET_FSLABEL
We're still working out minor details on the xfs side, but I'd like to
start the conversation regarding the new more generic interface ASAP,
so here goes - patches to move the ioctls to the vfs and document them.
(Other filesystems may wish to use this interface in the future as well)
Thanks,
-Eric
From: Eric Sandeen <hidden> Date: 2018-05-09 16:01:23
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
---
Let the bikeshedding on the exact ioctl name begin ;)
fs/btrfs/ioctl.c | 8 ++++----
include/uapi/linux/btrfs.h | 6 ++----
include/uapi/linux/fs.h | 8 ++++++--
3 files changed, 12 insertions(+), 10 deletions(-)
From: Eric Sandeen <hidden> Date: 2018-05-09 16:04:05
This documents the proposed new vfs-level ioctls which can
get or set a mounted filesytem's label.
Signed-off-by: Eric Sandeen <redacted>
---
btrfs folks, please verify that this accurately describes your
current behavior, thanks.
@@ -0,0 +1,83 @@+.\" Copyright (c) 2018, Red Hat, Inc. All rights reserved.+.\"+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)+.\" This is free documentation; you can redistribute it and/or+.\" modify it under the terms of the GNU General Public License as+.\" published by the Free Software Foundation; either version 2 of+.\" the License, or (at your option) any later version.+.\"+.\" The GNU General Public License's references to "object code"+.\" and "executables" are to be interpreted as the output of any+.\" document formatting or typesetting system, including+.\" intermediate and printed output.+.\"+.\" This manual 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 manual; if not, see+.\" <http://www.gnu.org/licenses/>.+.\" %%%LICENSE_END+.THIOCTL-FSLABEL22018-05-02"Linux""Linux Programmer's Manual"+.SHNAME+ioctl_fslabel \- get or set a filesystem label+.SHSYNOPSIS+.br+.B#include<sys/ioctl.h>+.br+.B#include<linux/fs.h>+.sp+.BI"int ioctl(int "fd", FS_IOC_GETFSLABEL, char "label[FSLABEL_MAX]);+.br+.BI"int ioctl(int "fd", FS_IOC_SETFSLABEL, char "label[FSLABEL_MAX]);+.SHDESCRIPTION+If a filesystem supports online label manipulation, these+.BRioctl(2)+operations can be used to get or set the filesystem label for the filesystem+on which+.Bfd+resides.+.SHRETURNVALUE+On success zero is returned. On error, \-1 is returned, and+.Ierrno+is set to indicate the error.+.PP+.SHERRORS+Error codes can be one of, but are not limited to, the following:+.TP+.BEINVAL+The specified label exceeds the maximum label length for the filesystem.+.TP+.BENOTTY+This can appear if the filesystem does not support online label manipulation.+.TP+.BEPERM+The calling process does not have sufficient permissions to set the label.+.TP+.BEFAULT+.Ilabel+references an inaccessible memory area.+.SHVERSIONS+These ioctl operations first appeared in Linux 4.18.+They were previously known as+.BBTRFS_IOC_GET_FSLABEL+and+.BBTRFS_IOC_SET_FSLABEL+and were private to Btrfs.+.SHCONFORMINGTO+This API is Linux-specific.+.SHNOTES+The maximum string length for this interface is+.BRFSLABEL_MAX,+including the terminating null byte (\(aq\\0\(aq).+Filesystems have differing maximum label lengths, which may or+may not include the terminating null. The string provided to+.BFS_IOC_SETFSLABEL+must always be null-terminated, and the string returned by+.BFS_IOC_GETFSLABEL+will always be null-terminated.+.SHSEEALSO+.BRioctl(2),+.BRblkid(8)
From: Darrick J. Wong <hidden> Date: 2018-05-09 16:11:07
On Wed, May 09, 2018 at 11:01:21AM -0500, Eric Sandeen wrote:
quoted hunk
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
---
Let the bikeshedding on the exact ioctl name begin ;)
fs/btrfs/ioctl.c | 8 ++++----
include/uapi/linux/btrfs.h | 6 ++----
include/uapi/linux/fs.h | 8 ++++++--
3 files changed, 12 insertions(+), 10 deletions(-)
Looks ok otherwise,
Reviewed-by: Darrick J. Wong <redacted>
--D
/*
* File system encryption support
--
1.8.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Darrick J. Wong <hidden> Date: 2018-05-09 16:15:37
On Wed, May 09, 2018 at 11:04:03AM -0500, Eric Sandeen wrote:
quoted hunk
This documents the proposed new vfs-level ioctls which can
get or set a mounted filesytem's label.
Signed-off-by: Eric Sandeen <redacted>
---
btrfs folks, please verify that this accurately describes your
current behavior, thanks.
@@ -0,0 +1,83 @@+.\" Copyright (c) 2018, Red Hat, Inc. All rights reserved.+.\"+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)+.\" This is free documentation; you can redistribute it and/or+.\" modify it under the terms of the GNU General Public License as+.\" published by the Free Software Foundation; either version 2 of+.\" the License, or (at your option) any later version.+.\"+.\" The GNU General Public License's references to "object code"+.\" and "executables" are to be interpreted as the output of any+.\" document formatting or typesetting system, including+.\" intermediate and printed output.+.\"+.\" This manual 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 manual; if not, see+.\" <http://www.gnu.org/licenses/>.+.\" %%%LICENSE_END+.THIOCTL-FSLABEL22018-05-02"Linux""Linux Programmer's Manual"+.SHNAME+ioctl_fslabel \- get or set a filesystem label+.SHSYNOPSIS+.br+.B#include<sys/ioctl.h>+.br+.B#include<linux/fs.h>+.sp+.BI"int ioctl(int "fd", FS_IOC_GETFSLABEL, char "label[FSLABEL_MAX]);+.br+.BI"int ioctl(int "fd", FS_IOC_SETFSLABEL, char "label[FSLABEL_MAX]);+.SHDESCRIPTION+If a filesystem supports online label manipulation, these+.BRioctl(2)+operations can be used to get or set the filesystem label for the filesystem+on which+.Bfd+resides.
Does the calling process need special capabilities or permissions? If
so, those should be listed here.
quoted hunk
+.SH RETURN VALUE
+On success zero is returned. On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.PP
+.SH ERRORS
+Error codes can be one of, but are not limited to, the following:
+.TP
+.B EINVAL
+The specified label exceeds the maximum label length for the filesystem.
+.TP
+.B ENOTTY
+This can appear if the filesystem does not support online label manipulation.
+.TP
+.B EPERM
+The calling process does not have sufficient permissions to set the label.
+.TP
+.B EFAULT
+.I label
+references an inaccessible memory area.
+.SH VERSIONS
+These ioctl operations first appeared in Linux 4.18.
+They were previously known as
+.B BTRFS_IOC_GET_FSLABEL
+and
+.B BTRFS_IOC_SET_FSLABEL
+and were private to Btrfs.
+.SH CONFORMING TO
+This API is Linux-specific.
+.SH NOTES
+The maximum string length for this interface is
+.BR FSLABEL_MAX ,
+including the terminating null byte (\(aq\\0\(aq).
+Filesystems have differing maximum label lengths, which may or
+may not include the terminating null. The string provided to
+.B FS_IOC_SETFSLABEL
+must always be null-terminated, and the string returned by
+.B FS_IOC_GETFSLABEL
+will always be null-terminated.
+.SH SEE ALSO
+.BR ioctl (2),
+.BR blkid (8)
Put all the manpage content into ioctl_getfslabel.2 and have
ioctl_setfslabel.2 point to it, rather than three files.
--D
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Andreas Dilger <hidden> Date: 2018-05-09 17:16:28
On May 9, 2018, at 10:10 AM, Darrick J. Wong [off-list ref] wrote:
On Wed, May 09, 2018 at 11:01:21AM -0500, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
---
Let the bikeshedding on the exact ioctl name begin ;)
fs/btrfs/ioctl.c | 8 ++++----
include/uapi/linux/btrfs.h | 6 ++----
include/uapi/linux/fs.h | 8 ++++++--
3 files changed, 12 insertions(+), 10 deletions(-)
Really? I've heard Ted complain the other way, that whitespace cleanup
by itself is useless and should only be done as part of other changes.
As long as it is not overwhelming the rest of the patch I don't see an
issue with a minor improvement being part of another patch.
Otherwise, no bikeshedding from me. Looks very reasonable, and the 256-char
limit is definitely large enough IMHO (also matches the normal filename size
limit, so if the label is used as a pathname component there are no added
restrictions).
Reviewed-by: Andreas Dilger <redacted>
Cheers, Andreas
Looks ok otherwise,
Reviewed-by: Darrick J. Wong <redacted>
--D
quoted
/*
* File system encryption support
--
1.8.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Darrick J. Wong <hidden> Date: 2018-05-09 17:26:36
On Wed, May 09, 2018 at 11:15:46AM -0600, Andreas Dilger wrote:
On May 9, 2018, at 10:10 AM, Darrick J. Wong [off-list ref] wrote:
quoted
On Wed, May 09, 2018 at 11:01:21AM -0500, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
---
Let the bikeshedding on the exact ioctl name begin ;)
fs/btrfs/ioctl.c | 8 ++++----
include/uapi/linux/btrfs.h | 6 ++----
include/uapi/linux/fs.h | 8 ++++++--
3 files changed, 12 insertions(+), 10 deletions(-)
Really? I've heard Ted complain the other way, that whitespace cleanup
by itself is useless and should only be done as part of other changes.
As long as it is not overwhelming the rest of the patch I don't see an
issue with a minor improvement being part of another patch.
I really only meant this as: put the whitespace changes in a second
patch after this one so that we don't have a patch that implements two
different changes, but fmeh, tired of discussing this.
--D
Otherwise, no bikeshedding from me. Looks very reasonable, and the 256-char
limit is definitely large enough IMHO (also matches the normal filename size
limit, so if the label is used as a pathname component there are no added
restrictions).
Reviewed-by: Andreas Dilger <redacted>
Cheers, Andreas
Looks ok otherwise,
Reviewed-by: Darrick J. Wong <redacted>
--D
quoted
/*
* File system encryption support
--
1.8.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Randy Dunlap <hidden> Date: 2018-05-09 17:35:54
On 05/09/2018 09:01 AM, Eric Sandeen wrote:
quoted hunk
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
---
Let the bikeshedding on the exact ioctl name begin ;)
fs/btrfs/ioctl.c | 8 ++++----
include/uapi/linux/btrfs.h | 6 ++----
include/uapi/linux/fs.h | 8 ++++++--
3 files changed, 12 insertions(+), 10 deletions(-)
Also update Documentation/ioctl/ioctl-number.txt, where it says that 0x94:all
are used for btrfs:
0x94 all fs/btrfs/ioctl.h
AFAICT 0x94 is now split between vfs and btrfs. Please correct me if I
misunderstand.
thanks,
--
~Randy
From: Eric Sandeen <hidden> Date: 2018-05-09 17:40:39
On 5/9/18 12:35 PM, Randy Dunlap wrote:
On 05/09/2018 09:01 AM, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
---
Let the bikeshedding on the exact ioctl name begin ;)
fs/btrfs/ioctl.c | 8 ++++----
include/uapi/linux/btrfs.h | 6 ++----
include/uapi/linux/fs.h | 8 ++++++--
3 files changed, 12 insertions(+), 10 deletions(-)
Also update Documentation/ioctl/ioctl-number.txt, where it says that 0x94:all
are used for btrfs:
0x94 all fs/btrfs/ioctl.h
AFAICT 0x94 is now split between vfs and btrfs. Please correct me if I
misunderstand.
It is split, though it has been for a while now, see also:
#define FICLONE _IOW(0x94, 9, int)
#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
#define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range)
but sure, I can send another patch for that on the next round.
Thanks,
-Eric
From: David Sterba <hidden> Date: 2018-05-09 21:37:46
On Wed, May 09, 2018 at 11:01:21AM -0500, Eric Sandeen wrote:
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
The btrfs changes and new ioctl naming looks good to me,
Reviewed-by: David Sterba <dsterba@suse.com>
From: Eric Sandeen <hidden> Date: 2018-05-10 17:29:11
This documents the proposed new vfs-level ioctls which can
get or set a mounted filesytem's label.
Signed-off-by: Eric Sandeen <redacted>
---
V2: make primary file ioctl_getfslabel, link ioctl_setfslabel to it
note that getfslabel requires CAP_SYS_ADMIN
@@ -0,0 +1,87 @@+.\" Copyright (c) 2018, Red Hat, Inc. All rights reserved.+.\"+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)+.\" This is free documentation; you can redistribute it and/or+.\" modify it under the terms of the GNU General Public License as+.\" published by the Free Software Foundation; either version 2 of+.\" the License, or (at your option) any later version.+.\"+.\" The GNU General Public License's references to "object code"+.\" and "executables" are to be interpreted as the output of any+.\" document formatting or typesetting system, including+.\" intermediate and printed output.+.\"+.\" This manual 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 manual; if not, see+.\" <http://www.gnu.org/licenses/>.+.\" %%%LICENSE_END+.THIOCTL-FSLABEL22018-05-02"Linux""Linux Programmer's Manual"+.SHNAME+ioctl_fslabel \- get or set a filesystem label+.SHSYNOPSIS+.br+.B#include<sys/ioctl.h>+.br+.B#include<linux/fs.h>+.sp+.BI"int ioctl(int "fd", FS_IOC_GETFSLABEL, char "label[FSLABEL_MAX]);+.br+.BI"int ioctl(int "fd", FS_IOC_SETFSLABEL, char "label[FSLABEL_MAX]);+.SHDESCRIPTION+If a filesystem supports online label manipulation, these+.BRioctl(2)+operations can be used to get or set the filesystem label for the filesystem+on which+.Bfd+resides.+The+.BFS_IOC_SETFSLABEL+operation requires privilege+.RB(CAP_SYS_ADMIN).+.SHRETURNVALUE+On success zero is returned. On error, \-1 is returned, and+.Ierrno+is set to indicate the error.+.PP+.SHERRORS+Error codes can be one of, but are not limited to, the following:+.TP+.BEINVAL+The specified label exceeds the maximum label length for the filesystem.+.TP+.BENOTTY+This can appear if the filesystem does not support online label manipulation.+.TP+.BEPERM+The calling process does not have sufficient permissions to set the label.+.TP+.BEFAULT+.Ilabel+references an inaccessible memory area.+.SHVERSIONS+These ioctl operations first appeared in Linux 4.18.+They were previously known as+.BBTRFS_IOC_GET_FSLABEL+and+.BBTRFS_IOC_SET_FSLABEL+and were private to Btrfs.+.SHCONFORMINGTO+This API is Linux-specific.+.SHNOTES+The maximum string length for this interface is+.BRFSLABEL_MAX,+including the terminating null byte (\(aq\\0\(aq).+Filesystems have differing maximum label lengths, which may or+may not include the terminating null. The string provided to+.BFS_IOC_SETFSLABEL+must always be null-terminated, and the string returned by+.BFS_IOC_GETFSLABEL+will always be null-terminated.+.SHSEEALSO+.BRioctl(2),+.BRblkid(8)
From: Eric Sandeen <hidden> Date: 2018-05-10 17:35:55
On 5/10/18 12:29 PM, Eric Sandeen wrote:
This documents the proposed new vfs-level ioctls which can
get or set a mounted filesytem's label.
Signed-off-by: Eric Sandeen <redacted>
---
V2: make primary file ioctl_getfslabel, link ioctl_setfslabel to it
note that getfslabel requires CAP_SYS_ADMIN
*sigh* that should say "setfslabel" - man page is correct, patch changelog
is not.
-Eric
From: Eric Sandeen <hidden> Date: 2018-05-10 18:13:59
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
Reviewed-by: Andreas Dilger <redacted>
Reviewed-by: David Sterba <dsterba@suse.com>
---
V2: note that hoisted btrfs ioctls exist in ioctl-number.txt, new since
reviews but I took a little license.
From: Al Viro <viro@ZenIV.linux.org.uk> Date: 2018-05-10 19:16:12
On Thu, May 10, 2018 at 01:13:57PM -0500, Eric Sandeen wrote:
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
Reviewed-by: Andreas Dilger <redacted>
Reviewed-by: David Sterba <dsterba@suse.com>
No objections (and it obviously ought to go through btrfs tree).
From: David Sterba <hidden> Date: 2018-05-11 14:12:57
On Thu, May 10, 2018 at 08:16:09PM +0100, Al Viro wrote:
On Thu, May 10, 2018 at 01:13:57PM -0500, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
Reviewed-by: Andreas Dilger <redacted>
Reviewed-by: David Sterba <dsterba@suse.com>
No objections (and it obviously ought to go through btrfs tree).
I can take it through my tree, but Eric mentioned that there's a patch
for xfs that depends on it. In this case it would make sense to take
both patches at once via the xfs tree. There are no pending conflicting
changes in btrfs.
From: Chris Mason <clm@fb.com> Date: 2018-05-11 14:32:32
On 11 May 2018, at 10:10, David Sterba wrote:
On Thu, May 10, 2018 at 08:16:09PM +0100, Al Viro wrote:
quoted
On Thu, May 10, 2018 at 01:13:57PM -0500, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface,
which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
Reviewed-by: Andreas Dilger <redacted>
Reviewed-by: David Sterba <dsterba@suse.com>
No objections (and it obviously ought to go through btrfs tree).
I can take it through my tree, but Eric mentioned that there's a patch
for xfs that depends on it. In this case it would make sense to take
both patches at once via the xfs tree. There are no pending
conflicting
changes in btrfs.
Probably easiest to just have a separate pull dedicated just for this
series. That way it doesn't really matter which tree it goes through.
-chris
From: Eric Sandeen <hidden> Date: 2018-05-11 14:36:11
On 5/11/18 9:32 AM, Chris Mason wrote:
On 11 May 2018, at 10:10, David Sterba wrote:
quoted
On Thu, May 10, 2018 at 08:16:09PM +0100, Al Viro wrote:
quoted
On Thu, May 10, 2018 at 01:13:57PM -0500, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
Reviewed-by: Andreas Dilger <redacted>
Reviewed-by: David Sterba <dsterba@suse.com>
No objections (and it obviously ought to go through btrfs tree).
I can take it through my tree, but Eric mentioned that there's a patch
for xfs that depends on it. In this case it would make sense to take
both patches at once via the xfs tree. There are no pending conflicting
changes in btrfs.
Probably easiest to just have a separate pull dedicated just for this series. That way it doesn't really matter which tree it goes through.
Actually, I just realized that the changes to include/uapi/linux/fs.h are completely
independent of any btrfs changes, right - there's nothing wrong w/ redefining
the common ioctl under a different name in btrfs. So the fs.h patch could go first,
through the xfs tree since it'll be using it.
Once the common ioctl definition goes in, then btrfs can change to define its ioctls to
the common ioctls, or act on them directly as my patch did, etc. Would that be
a better plan? IOWs there's no urgent need to coordinate a btrfs change.
-Eric
From: David Sterba <hidden> Date: 2018-05-11 14:44:25
On Fri, May 11, 2018 at 09:36:09AM -0500, Eric Sandeen wrote:
On 5/11/18 9:32 AM, Chris Mason wrote:
quoted
On 11 May 2018, at 10:10, David Sterba wrote:
quoted
On Thu, May 10, 2018 at 08:16:09PM +0100, Al Viro wrote:
quoted
On Thu, May 10, 2018 at 01:13:57PM -0500, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
Reviewed-by: Andreas Dilger <redacted>
Reviewed-by: David Sterba <dsterba@suse.com>
No objections (and it obviously ought to go through btrfs tree).
I can take it through my tree, but Eric mentioned that there's a patch
for xfs that depends on it. In this case it would make sense to take
both patches at once via the xfs tree. There are no pending conflicting
changes in btrfs.
Probably easiest to just have a separate pull dedicated just for this series. That way it doesn't really matter which tree it goes through.
Actually, I just realized that the changes to include/uapi/linux/fs.h are completely
independent of any btrfs changes, right - there's nothing wrong w/ redefining
the common ioctl under a different name in btrfs. So the fs.h patch could go first,
through the xfs tree since it'll be using it.
Once the common ioctl definition goes in, then btrfs can change to define its ioctls to
the common ioctls, or act on them directly as my patch did, etc. Would that be
a better plan? IOWs there's no urgent need to coordinate a btrfs change.
From: Darrick J. Wong <hidden> Date: 2018-05-12 00:21:17
On Fri, May 11, 2018 at 04:41:45PM +0200, David Sterba wrote:
On Fri, May 11, 2018 at 09:36:09AM -0500, Eric Sandeen wrote:
quoted
On 5/11/18 9:32 AM, Chris Mason wrote:
quoted
On 11 May 2018, at 10:10, David Sterba wrote:
quoted
On Thu, May 10, 2018 at 08:16:09PM +0100, Al Viro wrote:
quoted
On Thu, May 10, 2018 at 01:13:57PM -0500, Eric Sandeen wrote:
quoted
Move the btrfs label ioctls up to the vfs for general use.
This retains 256 chars as the maximum size through the interface, which
is the btrfs limit and AFAIK exceeds any other filesystem's maximum
label size.
Signed-off-by: Eric Sandeen <redacted>
Reviewed-by: Andreas Dilger <redacted>
Reviewed-by: David Sterba <dsterba@suse.com>
No objections (and it obviously ought to go through btrfs tree).
I can take it through my tree, but Eric mentioned that there's a patch
for xfs that depends on it. In this case it would make sense to take
both patches at once via the xfs tree. There are no pending conflicting
changes in btrfs.
Probably easiest to just have a separate pull dedicated just for this series. That way it doesn't really matter which tree it goes through.
Actually, I just realized that the changes to include/uapi/linux/fs.h are completely
independent of any btrfs changes, right - there's nothing wrong w/ redefining
the common ioctl under a different name in btrfs. So the fs.h patch could go first,
through the xfs tree since it'll be using it.
Once the common ioctl definition goes in, then btrfs can change to define its ioctls to
the common ioctls, or act on them directly as my patch did, etc. Would that be
a better plan? IOWs there's no urgent need to coordinate a btrfs change.
Agreed, I like that plan.
Ok, I'll await a new series with all the patches that Eric wants to
squeeze through the xfs tree. I don't mind carrying the btrfs changes
too, so long as they're one-liners and the btrfs maintainers ack/rvb it.
--D
From: Michael Kerrisk (man-pages) <hidden> Date: 2020-04-20 12:05:12
Hello Eric,
So it seems like this feature eventually got merged in Linux 4.18. Is
this page up to date with what went into the kernel?
Thanks,
Michael
On Thu, 10 May 2018 at 19:29, Eric Sandeen [off-list ref] wrote:
quoted hunk
This documents the proposed new vfs-level ioctls which can
get or set a mounted filesytem's label.
Signed-off-by: Eric Sandeen <redacted>
---
V2: make primary file ioctl_getfslabel, link ioctl_setfslabel to it
note that getfslabel requires CAP_SYS_ADMIN
@@ -0,0 +1,87 @@+.\" Copyright (c) 2018, Red Hat, Inc. All rights reserved.+.\"+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)+.\" This is free documentation; you can redistribute it and/or+.\" modify it under the terms of the GNU General Public License as+.\" published by the Free Software Foundation; either version 2 of+.\" the License, or (at your option) any later version.+.\"+.\" The GNU General Public License's references to "object code"+.\" and "executables" are to be interpreted as the output of any+.\" document formatting or typesetting system, including+.\" intermediate and printed output.+.\"+.\" This manual 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 manual; if not, see+.\" <http://www.gnu.org/licenses/>.+.\" %%%LICENSE_END+.THIOCTL-FSLABEL22018-05-02"Linux""Linux Programmer's Manual"+.SHNAME+ioctl_fslabel \- get or set a filesystem label+.SHSYNOPSIS+.br+.B#include<sys/ioctl.h>+.br+.B#include<linux/fs.h>+.sp+.BI"int ioctl(int "fd", FS_IOC_GETFSLABEL, char "label[FSLABEL_MAX]);+.br+.BI"int ioctl(int "fd", FS_IOC_SETFSLABEL, char "label[FSLABEL_MAX]);+.SHDESCRIPTION+If a filesystem supports online label manipulation, these+.BRioctl(2)+operations can be used to get or set the filesystem label for the filesystem+on which+.Bfd+resides.+The+.BFS_IOC_SETFSLABEL+operation requires privilege+.RB(CAP_SYS_ADMIN).+.SHRETURNVALUE+On success zero is returned. On error, \-1 is returned, and+.Ierrno+is set to indicate the error.+.PP+.SHERRORS+Error codes can be one of, but are not limited to, the following:+.TP+.BEINVAL+The specified label exceeds the maximum label length for the filesystem.+.TP+.BENOTTY+This can appear if the filesystem does not support online label manipulation.+.TP+.BEPERM+The calling process does not have sufficient permissions to set the label.+.TP+.BEFAULT+.Ilabel+references an inaccessible memory area.+.SHVERSIONS+These ioctl operations first appeared in Linux 4.18.+They were previously known as+.BBTRFS_IOC_GET_FSLABEL+and+.BBTRFS_IOC_SET_FSLABEL+and were private to Btrfs.+.SHCONFORMINGTO+This API is Linux-specific.+.SHNOTES+The maximum string length for this interface is+.BRFSLABEL_MAX,+including the terminating null byte (\(aq\\0\(aq).+Filesystems have differing maximum label lengths, which may or+may not include the terminating null. The string provided to+.BFS_IOC_SETFSLABEL+must always be null-terminated, and the string returned by+.BFS_IOC_GETFSLABEL+will always be null-terminated.+.SHSEEALSO+.BRioctl(2),+.BRblkid(8)
From: Eric Sandeen <hidden> Date: 2020-04-20 13:48:47
On 4/20/20 7:04 AM, Michael Kerrisk (man-pages) wrote:
Hello Eric,
So it seems like this feature eventually got merged in Linux 4.18. Is
this page up to date with what went into the kernel?
Yes, I believe that it's all still accurate.
Thanks,
-Eric
Thanks,
Michael
On Thu, 10 May 2018 at 19:29, Eric Sandeen [off-list ref] wrote:
quoted
This documents the proposed new vfs-level ioctls which can
get or set a mounted filesytem's label.
Signed-off-by: Eric Sandeen <redacted>
---
V2: make primary file ioctl_getfslabel, link ioctl_setfslabel to it
note that getfslabel requires CAP_SYS_ADMIN
@@ -0,0 +1,87 @@+.\" Copyright (c) 2018, Red Hat, Inc. All rights reserved.+.\"+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)+.\" This is free documentation; you can redistribute it and/or+.\" modify it under the terms of the GNU General Public License as+.\" published by the Free Software Foundation; either version 2 of+.\" the License, or (at your option) any later version.+.\"+.\" The GNU General Public License's references to "object code"+.\" and "executables" are to be interpreted as the output of any+.\" document formatting or typesetting system, including+.\" intermediate and printed output.+.\"+.\" This manual 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 manual; if not, see+.\" <http://www.gnu.org/licenses/>.+.\" %%%LICENSE_END+.THIOCTL-FSLABEL22018-05-02"Linux""Linux Programmer's Manual"+.SHNAME+ioctl_fslabel \- get or set a filesystem label+.SHSYNOPSIS+.br+.B#include<sys/ioctl.h>+.br+.B#include<linux/fs.h>+.sp+.BI"int ioctl(int "fd", FS_IOC_GETFSLABEL, char "label[FSLABEL_MAX]);+.br+.BI"int ioctl(int "fd", FS_IOC_SETFSLABEL, char "label[FSLABEL_MAX]);+.SHDESCRIPTION+If a filesystem supports online label manipulation, these+.BRioctl(2)+operations can be used to get or set the filesystem label for the filesystem+on which+.Bfd+resides.+The+.BFS_IOC_SETFSLABEL+operation requires privilege+.RB(CAP_SYS_ADMIN).+.SHRETURNVALUE+On success zero is returned. On error, \-1 is returned, and+.Ierrno+is set to indicate the error.+.PP+.SHERRORS+Error codes can be one of, but are not limited to, the following:+.TP+.BEINVAL+The specified label exceeds the maximum label length for the filesystem.+.TP+.BENOTTY+This can appear if the filesystem does not support online label manipulation.+.TP+.BEPERM+The calling process does not have sufficient permissions to set the label.+.TP+.BEFAULT+.Ilabel+references an inaccessible memory area.+.SHVERSIONS+These ioctl operations first appeared in Linux 4.18.+They were previously known as+.BBTRFS_IOC_GET_FSLABEL+and+.BBTRFS_IOC_SET_FSLABEL+and were private to Btrfs.+.SHCONFORMINGTO+This API is Linux-specific.+.SHNOTES+The maximum string length for this interface is+.BRFSLABEL_MAX,+including the terminating null byte (\(aq\\0\(aq).+Filesystems have differing maximum label lengths, which may or+may not include the terminating null. The string provided to+.BFS_IOC_SETFSLABEL+must always be null-terminated, and the string returned by+.BFS_IOC_GETFSLABEL+will always be null-terminated.+.SHSEEALSO+.BRioctl(2),+.BRblkid(8)