• Jeff Layton's avatar
    vfs: plumb i_version handling into struct kstat · a1175d6b
    Jeff Layton authored
    The NFS server has a lot of special handling for different types of
    change attribute access, depending on the underlying filesystem. In
    most cases, it's doing a getattr anyway and then fetching that value
    after the fact.
    
    Rather that do that, add a new STATX_CHANGE_COOKIE flag that is a
    kernel-only symbol (for now). If requested and getattr can implement it,
    it can fill out this field. For IS_I_VERSION inodes, add a generic
    implementation in vfs_getattr_nosec. Take care to mask
    STATX_CHANGE_COOKIE off in requests from userland and in the result
    mask.
    
    Since not all filesystems can give the same guarantees of monotonicity,
    claim a STATX_ATTR_CHANGE_MONOTONIC flag that filesystems can set to
    indicate that they offer an i_version value that can never go backward.
    
    Eventually if we decide to make the i_version available to userland, we
    can just designate a field for it in struct statx, and move the
    STATX_CHANGE_COOKIE definition to the uapi header.
    Reviewed-by: default avatarNeilBrown <neilb@suse.de>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
    a1175d6b
stat.c 22.6 KB