On Tue, Jul 29, 2025 at 01:00:36PM +0200, Andrey Albershteyn wrote: > From: Andrey Albershteyn <aalbersh@xxxxxxxxxx> > > XFS does't have extended attributes manipulation ioctls for special > files. Changing or reading file extended attributes is rejected for them "extended file attributes" or "fileattrs" as Amir suggested, but never "extended attributes" because that's a separate thing. (no need to drop the rvb over this) --D > in xfs_fileattr_*et(). > > In XFS, this is necessary to work for project quota directories. > When project is set up, xfs_quota opens and calls FS_IOC_SETFSXATTR on > every inode in the directory. However, special files are skipped due to > open() returning a special inode for them. So, they don't even get to > this check. > > The recently added file_getattr/file_setattr will call xfs_fileattr_*et, > on special files. This patch allows reading/changing extended file > attributes on special files. > > Signed-off-by: Andrey Albershteyn <aalbersh@xxxxxxxxxx> > Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > fs/xfs/xfs_ioctl.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > index fe1f74a3b6a3..f3c89172cc27 100644 > --- a/fs/xfs/xfs_ioctl.c > +++ b/fs/xfs/xfs_ioctl.c > @@ -512,9 +512,6 @@ xfs_fileattr_get( > { > struct xfs_inode *ip = XFS_I(d_inode(dentry)); > > - if (d_is_special(dentry)) > - return -ENOTTY; > - > xfs_ilock(ip, XFS_ILOCK_SHARED); > xfs_fill_fsxattr(ip, XFS_DATA_FORK, fa); > xfs_iunlock(ip, XFS_ILOCK_SHARED); > @@ -736,9 +733,6 @@ xfs_fileattr_set( > > trace_xfs_ioctl_setattr(ip); > > - if (d_is_special(dentry)) > - return -ENOTTY; > - > if (!fa->fsx_valid) { > if (fa->flags & ~(FS_IMMUTABLE_FL | FS_APPEND_FL | > FS_NOATIME_FL | FS_NODUMP_FL | > > -- > 2.49.0 > >