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.