Re: [RFC PATCH v2 1/7] statx: add I/O alignment information

From: Christoph Hellwig
Date: Thu Jun 16 2022 - 02:29:56 EST


On Wed, Jun 15, 2022 at 11:19:32PM -0700, Eric Biggers wrote:
> Yes I know that. The issue is that the inode that statx() is operating on is
> the device node, so *all* the other statx fields come from that inode. Size,
> nlink, uid, gid, mode, timestamps (including btime if the filesystem supports
> it), inode number, device number of the containing filesystem, mount ID, etc.
> If we were to randomly grab one field from the underlying block device instead,
> that would be inconsistent with everything else.

At least on XFS we have a magic hardcoded st_blksize for block devices,
but it seems like the generic doesn't do that.

But I'm really much more worried about an inconsistency where we get
usefull information or some special files rather than where we acquire
this information from. So I think going to the block device inode, and
also going to it for stx_blksize is the right thing as it actually
makes the interface useful. We just need a good helper that all
getattr implementations can use to be consistent and/or override these
fields after the call to ->getattr.