Re: [RFC] xfs: fix reporting supported extra file attributes for statx()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
> ---
> 
> 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@xxxxxxxxxx
> 
>  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@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux