linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] xfs: fix reporting supported extra file attributes for statx()
@ 2017-10-31 22:13 Luis R. Rodriguez
  2017-10-31 22:27 ` Darrick J. Wong
  2019-03-01 16:53 ` Darrick J. Wong
  0 siblings, 2 replies; 5+ messages in thread
From: Luis R. Rodriguez @ 2017-10-31 22:13 UTC (permalink / raw)
  To: darrick.wong; +Cc: dhowells, linux-xfs, linux-kernel, Luis R. Rodriguez

statx(2) notes that any attribute that is not indicated as supported by
stx_attributes_mask has no usable value. Commit 5f955f26f3d42d ("xfs: report
crtime and attribute flags to statx") added support for informing userspace
of extra file attributes but forgot to list these flags as supported
making reporting them rather useless for the pedantic userspace author.

$ git describe --contains 5f955f26f3d42d04aba65590a32eb70eedb7f37d
v4.11-rc6~5^2^2~2

Fixes: 5f955f26f3d42d ("xfs: report crtime and attribute flags to statx")
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---

Its unclear why David left these out or if it was just a mistake, I checked
the original patch thread [0] but it was not clear in the end. David?

Also, I posted a patch to add support to clearing these flags through
xfs_repair on symlinks [1] due to the pain this can cause as you have no option
but to use xfs_db to fix these otherwise. Since we *didn't* list these extra
file attributes as supported, it begs the question if instead we should only
set them *and* this mask if !S_ISLNK(inode->i_mode)).

If so, that also begs the question if we should add further sanity check
on the xfs setattr to ensure these are never set on symbolic links, despite the
fact that FS_IOC_FSSETXATTR ioctl won't be able to set them...

A long shot question in terms of semantics is if all the above is rather
generic for Linux, is if the VFS should even be checking for immutable or
append flags on unlink for symbolic links.

[0] https://patchwork.kernel.org/patch/9607879/
[1] https://lkml.kernel.org/r/20171031215156.12544-1-mcgrof@kernel.org

 fs/xfs/xfs_iops.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 17081c77ef86..6b7d293a4aab 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -531,6 +531,10 @@ xfs_vn_getattr(
 	if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP)
 		stat->attributes |= STATX_ATTR_NODUMP;
 
+	stat->attributes_mask |= (STATX_ATTR_IMMUTABLE |
+				  STATX_ATTR_APPEND |
+				  STATX_ATTR_NODUMP);
+
 	switch (inode->i_mode & S_IFMT) {
 	case S_IFBLK:
 	case S_IFCHR:
-- 
2.14.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [RFC] xfs: fix reporting supported extra file attributes for statx()
  2017-10-31 22:13 [RFC] xfs: fix reporting supported extra file attributes for statx() Luis R. Rodriguez
@ 2017-10-31 22:27 ` Darrick J. Wong
  2017-10-31 22:38   ` Luis R. Rodriguez
  2019-03-01 16:53 ` Darrick J. Wong
  1 sibling, 1 reply; 5+ messages in thread
From: Darrick J. Wong @ 2017-10-31 22:27 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: dhowells, linux-xfs, linux-kernel

On Tue, Oct 31, 2017 at 03:13:05PM -0700, Luis R. Rodriguez wrote:
> statx(2) notes that any attribute that is not indicated as supported by
> stx_attributes_mask has no usable value. Commit 5f955f26f3d42d ("xfs: report
> crtime and attribute flags to statx") added support for informing userspace
> of extra file attributes but forgot to list these flags as supported
> making reporting them rather useless for the pedantic userspace author.

Maybe the vfs should WARN_ON(stat->attributes & ~stat->attributes_mask); to
prevent us from screwing this up further?

> $ git describe --contains 5f955f26f3d42d04aba65590a32eb70eedb7f37d
> v4.11-rc6~5^2^2~2
> 
> Fixes: 5f955f26f3d42d ("xfs: report crtime and attribute flags to statx")
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> ---
> 
> Its unclear why David left these out or if it was just a mistake, I checked
> the original patch thread [0] but it was not clear in the end. David?
> 
> Also, I posted a patch to add support to clearing these flags through
> xfs_repair on symlinks [1] due to the pain this can cause as you have no option
> but to use xfs_db to fix these otherwise. Since we *didn't* list these extra
> file attributes as supported, it begs the question if instead we should only
> set them *and* this mask if !S_ISLNK(inode->i_mode)).
> 
> If so, that also begs the question if we should add further sanity check
> on the xfs setattr to ensure these are never set on symbolic links, despite the
> fact that FS_IOC_FSSETXATTR ioctl won't be able to set them...

Sure.

--D

> A long shot question in terms of semantics is if all the above is rather
> generic for Linux, is if the VFS should even be checking for immutable or
> append flags on unlink for symbolic links.
> 
> [0] https://patchwork.kernel.org/patch/9607879/
> [1] https://lkml.kernel.org/r/20171031215156.12544-1-mcgrof@kernel.org
> 
>  fs/xfs/xfs_iops.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
> index 17081c77ef86..6b7d293a4aab 100644
> --- a/fs/xfs/xfs_iops.c
> +++ b/fs/xfs/xfs_iops.c
> @@ -531,6 +531,10 @@ xfs_vn_getattr(
>  	if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP)
>  		stat->attributes |= STATX_ATTR_NODUMP;
>  
> +	stat->attributes_mask |= (STATX_ATTR_IMMUTABLE |
> +				  STATX_ATTR_APPEND |
> +				  STATX_ATTR_NODUMP);
> +
>  	switch (inode->i_mode & S_IFMT) {
>  	case S_IFBLK:
>  	case S_IFCHR:
> -- 
> 2.14.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] xfs: fix reporting supported extra file attributes for statx()
  2017-10-31 22:27 ` Darrick J. Wong
@ 2017-10-31 22:38   ` Luis R. Rodriguez
  2017-10-31 22:47     ` Darrick J. Wong
  0 siblings, 1 reply; 5+ messages in thread
From: Luis R. Rodriguez @ 2017-10-31 22:38 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: David Howells, xfs, linux-kernel, Luis R. Rodriguez

On Tue, Oct 31, 2017 at 3:27 PM, Darrick J. Wong
<darrick.wong@oracle.com> wrote:
> On Tue, Oct 31, 2017 at 03:13:05PM -0700, Luis R. Rodriguez wrote:
>> statx(2) notes that any attribute that is not indicated as supported by
>> stx_attributes_mask has no usable value. Commit 5f955f26f3d42d ("xfs: report
>> crtime and attribute flags to statx") added support for informing userspace
>> of extra file attributes but forgot to list these flags as supported
>> making reporting them rather useless for the pedantic userspace author.
>
> Maybe the vfs should WARN_ON(stat->attributes & ~stat->attributes_mask); to
> prevent us from screwing this up further?

Its unclear, what was the mask devised for then, was it envisioned
that there will be filesystems that will set some values but yet
purposely list them as unsupported?

>> $ git describe --contains 5f955f26f3d42d04aba65590a32eb70eedb7f37d
>> v4.11-rc6~5^2^2~2
>>
>> Fixes: 5f955f26f3d42d ("xfs: report crtime and attribute flags to statx")
>> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
>> ---
>>
>> Its unclear why David left these out or if it was just a mistake, I checked
>> the original patch thread [0] but it was not clear in the end. David?
>>
>> Also, I posted a patch to add support to clearing these flags through
>> xfs_repair on symlinks [1] due to the pain this can cause as you have no option
>> but to use xfs_db to fix these otherwise. Since we *didn't* list these extra
>> file attributes as supported, it begs the question if instead we should only
>> set them *and* this mask if !S_ISLNK(inode->i_mode)).
>>
>> If so, that also begs the question if we should add further sanity check
>> on the xfs setattr to ensure these are never set on symbolic links, despite the
>> fact that FS_IOC_FSSETXATTR ioctl won't be able to set them...
>
> Sure.

Alright, I'll let things wind down and if I don't hear otherwise back
will make the change.

  Luis

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] xfs: fix reporting supported extra file attributes for statx()
  2017-10-31 22:38   ` Luis R. Rodriguez
@ 2017-10-31 22:47     ` Darrick J. Wong
  0 siblings, 0 replies; 5+ messages in thread
From: Darrick J. Wong @ 2017-10-31 22:47 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: David Howells, xfs, linux-kernel

On Tue, Oct 31, 2017 at 03:38:32PM -0700, Luis R. Rodriguez wrote:
> On Tue, Oct 31, 2017 at 3:27 PM, Darrick J. Wong
> <darrick.wong@oracle.com> wrote:
> > On Tue, Oct 31, 2017 at 03:13:05PM -0700, Luis R. Rodriguez wrote:
> >> statx(2) notes that any attribute that is not indicated as supported by
> >> stx_attributes_mask has no usable value. Commit 5f955f26f3d42d ("xfs: report
> >> crtime and attribute flags to statx") added support for informing userspace
> >> of extra file attributes but forgot to list these flags as supported
> >> making reporting them rather useless for the pedantic userspace author.
> >
> > Maybe the vfs should WARN_ON(stat->attributes & ~stat->attributes_mask); to
> > prevent us from screwing this up further?
> 
> Its unclear, what was the mask devised for then, was it envisioned
> that there will be filesystems that will set some values but yet
> purposely list them as unsupported?

It's for flags like ENCRYPTED so userspace can distinguish between the
bit being unset meaning that the file is plaintext vs. the filesystem
not knowing what encrypted files are at all.

(Well ok it'd probably be more useful for a NOCOW bit so that you can
distinguish a COW file vs. a filesystem that doesn't COW at all, but
evidently that isn't wired up.)

--D

> >> $ git describe --contains 5f955f26f3d42d04aba65590a32eb70eedb7f37d
> >> v4.11-rc6~5^2^2~2
> >>
> >> Fixes: 5f955f26f3d42d ("xfs: report crtime and attribute flags to statx")
> >> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> >> ---
> >>
> >> Its unclear why David left these out or if it was just a mistake, I checked
> >> the original patch thread [0] but it was not clear in the end. David?
> >>
> >> Also, I posted a patch to add support to clearing these flags through
> >> xfs_repair on symlinks [1] due to the pain this can cause as you have no option
> >> but to use xfs_db to fix these otherwise. Since we *didn't* list these extra
> >> file attributes as supported, it begs the question if instead we should only
> >> set them *and* this mask if !S_ISLNK(inode->i_mode)).
> >>
> >> If so, that also begs the question if we should add further sanity check
> >> on the xfs setattr to ensure these are never set on symbolic links, despite the
> >> fact that FS_IOC_FSSETXATTR ioctl won't be able to set them...
> >
> > Sure.
> 
> Alright, I'll let things wind down and if I don't hear otherwise back
> will make the change.
> 
>   Luis
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] xfs: fix reporting supported extra file attributes for statx()
  2017-10-31 22:13 [RFC] xfs: fix reporting supported extra file attributes for statx() Luis R. Rodriguez
  2017-10-31 22:27 ` Darrick J. Wong
@ 2019-03-01 16:53 ` Darrick J. Wong
  1 sibling, 0 replies; 5+ messages in thread
From: Darrick J. Wong @ 2019-03-01 16:53 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: dhowells, linux-xfs, linux-kernel

On Tue, Oct 31, 2017 at 03:13:05PM -0700, Luis R. Rodriguez wrote:
> statx(2) notes that any attribute that is not indicated as supported by
> stx_attributes_mask has no usable value. Commit 5f955f26f3d42d ("xfs: report
> crtime and attribute flags to statx") added support for informing userspace
> of extra file attributes but forgot to list these flags as supported
> making reporting them rather useless for the pedantic userspace author.
> 
> $ git describe --contains 5f955f26f3d42d04aba65590a32eb70eedb7f37d
> v4.11-rc6~5^2^2~2
> 
> Fixes: 5f955f26f3d42d ("xfs: report crtime and attribute flags to statx")
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> ---
> 
> Its unclear why David left these out or if it was just a mistake, I checked
> the original patch thread [0] but it was not clear in the end. David?
> 
> Also, I posted a patch to add support to clearing these flags through
> xfs_repair on symlinks [1] due to the pain this can cause as you have no option
> but to use xfs_db to fix these otherwise. Since we *didn't* list these extra
> file attributes as supported, it begs the question if instead we should only
> set them *and* this mask if !S_ISLNK(inode->i_mode)).
> 
> If so, that also begs the question if we should add further sanity check
> on the xfs setattr to ensure these are never set on symbolic links, despite the
> fact that FS_IOC_FSSETXATTR ioctl won't be able to set them...
> 
> A long shot question in terms of semantics is if all the above is rather
> generic for Linux, is if the VFS should even be checking for immutable or
> append flags on unlink for symbolic links.
> 
> [0] https://patchwork.kernel.org/patch/9607879/
> [1] https://lkml.kernel.org/r/20171031215156.12544-1-mcgrof@kernel.org
> 
>  fs/xfs/xfs_iops.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
> index 17081c77ef86..6b7d293a4aab 100644
> --- a/fs/xfs/xfs_iops.c
> +++ b/fs/xfs/xfs_iops.c
> @@ -531,6 +531,10 @@ xfs_vn_getattr(
>  	if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP)
>  		stat->attributes |= STATX_ATTR_NODUMP;
>  
> +	stat->attributes_mask |= (STATX_ATTR_IMMUTABLE |
> +				  STATX_ATTR_APPEND |
> +				  STATX_ATTR_NODUMP);
> +

Heh, I just posted the same diff as a patch, having forgotten that this
existed.  I'll ... just take this one instead.

Sorry for whiffing on this for a year and a half(!!)

--D

>  	switch (inode->i_mode & S_IFMT) {
>  	case S_IFBLK:
>  	case S_IFCHR:
> -- 
> 2.14.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-03-01 16:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-31 22:13 [RFC] xfs: fix reporting supported extra file attributes for statx() Luis R. Rodriguez
2017-10-31 22:27 ` Darrick J. Wong
2017-10-31 22:38   ` Luis R. Rodriguez
2017-10-31 22:47     ` Darrick J. Wong
2019-03-01 16:53 ` Darrick J. Wong

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