• Christian Brauner's avatar
    ovl: use ovl_copy_{real,upper}attr() wrappers · 2878dffc
    Christian Brauner authored
    When copying inode attributes from the upper or lower layer to ovl inodes
    we need to take the upper or lower layer's mount's idmapping into
    account. In a lot of places we call ovl_copyattr() only on upper inodes and
    in some we call it on either upper or lower inodes. Split this into two
    separate helpers.
    
    The first one should only be called on upper
    inodes and is thus called ovl_copy_upperattr(). The second one can be
    called on upper or lower inodes. We add ovl_copy_realattr() for this
    task. The new helper makes use of the previously added ovl_i_path_real()
    helper. This is needed to support idmapped base layers with overlay.
    
    When overlay copies the inode information from an upper or lower layer
    to the relevant overlay inode it will apply the idmapping of the upper
    or lower layer when doing so. The ovl inode ownership will thus always
    correctly reflect the ownership of the idmapped upper or lower layer.
    
    All idmapping helpers are nops when no idmapped base layers are used.
    
    Cc: <linux-unionfs@vger.kernel.org>
    Tested-by: default avatarGiuseppe Scrivano <gscrivan@redhat.com>
    Reviewed-by: default avatarAmir Goldstein <amir73il@gmail.com>
    Signed-off-by: default avatarChristian Brauner (Microsoft) <brauner@kernel.org>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    2878dffc
dir.c 30.2 KB