• Javier Martinez Canillas's avatar
    fat: add a vfat_rename2() and make existing .rename callback a helper · 019a0c9e
    Javier Martinez Canillas authored
    Patch series "fat: add support for the renameat2 RENAME_EXCHANGE flag", v6.
    
    The series adds support for the renameat2 system call RENAME_EXCHANGE flag
    (which allows to atomically replace two paths) to the vfat filesystem
    code.
    
    There are many use cases for this, but we are particularly interested in
    making possible for vfat filesystems to be part of OSTree [0] deployments.
    
    Currently OSTree relies on symbolic links to make the deployment updates
    an atomic transactional operation.  But RENAME_EXCHANGE could be used [1]
    to achieve a similar level of robustness when using a vfat filesystem.
    
    Patch #1 is just a preparatory patch to introduce the RENAME_EXCHANGE
    support, patch #2 moves some code blocks in vfat_rename() to a set of
    helper functions, that can be reused by tvfat_rename_exchange() that's
    added by patch #3 and finally patch #4 adds some kselftests to test it.
    
    
    This patch (of 4):
    
    Currently vfat only supports the RENAME_NOREPLACE flag which is handled by
    the virtual file system layer but doesn't support the RENAME_EXCHANGE
    flag.
    
    Add a vfat_rename2() function to be used as the .rename callback and move
    the current vfat_rename() handler to a helper.  This is in preparation for
    implementing the RENAME_NOREPLACE flag using a different helper function.
    
    Link: https://lkml.kernel.org/r/20220610075721.1182745-1-javierm@redhat.com
    Link: https://lkml.kernel.org/r/20220610075721.1182745-2-javierm@redhat.com
    
    Signed-off-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
    Acked-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Cc: Christian Kellner <ckellner@redhat.com>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Chung-Chiang Cheng <cccheng@synology.com>
    Cc: Lennart Poettering <lennart@poettering.net>
    Cc: Alexander Larsson <alexl@redhat.com>
    Cc: Colin Walters <walters@verbum.org>
    Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    019a0c9e
namei_vfat.c 25.6 KB