• C
    quota: port quota helpers mount ids · 71e7b535
    Christian Brauner 提交于
    Port the is_quota_modification() and dqout_transfer() helper to type
    safe vfs{g,u}id_t. Since these helpers are only called by a few
    filesystems don't introduce a new helper but simply extend the existing
    helpers to pass down the mount's idmapping.
    
    Note, that this is a non-functional change, i.e. nothing will have
    happened here or at the end of this series to how quota are done! This
    a change necessary because we will at the end of this series make
    ownership changes easier to reason about by keeping the original value
    in struct iattr for both non-idmapped and idmapped mounts.
    
    For now we always pass the initial idmapping which makes the idmapping
    functions these helpers call nops.
    
    This is done because we currently always pass the actual value to be
    written to i_{g,u}id via struct iattr. While this allowed us to treat
    the {g,u}id values in struct iattr as values that can be directly
    written to inode->i_{g,u}id it also increases the potential for
    confusion for filesystems.
    
    Now that we are have dedicated types to prevent this confusion we will
    ultimately only map the value from the idmapped mount into a filesystem
    value that can be written to inode->i_{g,u}id when the filesystem
    actually updates the inode. So pass down the initial idmapping until we
    finished that conversion at which point we pass down the mount's
    idmapping.
    
    Since struct iattr uses an anonymous union with overlapping types as
    supported by the C standard, filesystems that haven't converted to
    ia_vfs{g,u}id won't see any difference and things will continue to work
    as before. In other words, no functional changes intended with this
    change.
    
    Link: https://lore.kernel.org/r/20220621141454.2914719-7-brauner@kernel.org
    Cc: Seth Forshee <sforshee@digitalocean.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    CC: linux-fsdevel@vger.kernel.org
    Reviewed-by: NJan Kara <jack@suse.cz>
    Reviewed-by: NSeth Forshee <sforshee@digitalocean.com>
    Signed-off-by: NChristian Brauner (Microsoft) <brauner@kernel.org>
    71e7b535
super.c 50.3 KB