Re: [PATCH v2 2/4] fs: add FS_IOC_FSSETXATTRAT and FS_IOC_FSGETXATTRAT

Jan Kara
2024-05-22T10:00:10Z

Hello!

On Mon 20-05-24 18:46:21, Andrey Albershteyn wrote:
> XFS has project quotas which could be attached to a directory. All
> new inodes in these directories inherit project ID set on parent
> directory.
>
> The project is created from userspace by opening and calling
> FS_IOC_FSSETXATTR on each inode. This is not possible for special
> files such as FIFO, SOCK, BLK etc. as opening them returns a special
> inode from VFS. Therefore, some inodes are left with empty project
> ID. Those inodes then are not shown in the quota accounting but
> still exist in the directory.
>
> This patch adds two new ioctls which allows userspace, such as
> xfs_quota, to set project ID on special files by using parent
> directory to open FS inode. This will let xfs_quota set ID on all
> inodes and also reset it when project is removed. Also, as
> vfs_fileattr_set() is now will called on special files too, let's
> forbid any other attributes except projid and nextents (symlink can
> have one).
>
> Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>

I'd like to understand one thing. Is it practically useful to set project
IDs for special inodes? There is no significant disk space usage associated
with them so wrt quotas we are speaking only about the inode itself. So is
the concern that user could escape inode project quota accounting and
perform some DoS? Or why do we bother with two new somewhat hairy ioctls
for something that seems as a small corner case to me?

Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR