• Chao Yu's avatar
    f2fs: support RENAME_WHITEOUT · 7e01e7ad
    Chao Yu authored
    As the description of rename in manual, RENAME_WHITEOUT is a special operation
    that only makes sense for overlay/union type filesystem.
    
    When performing rename with RENAME_WHITEOUT, dst will be replace with src, and
    meanwhile, a 'whiteout' will be create with name of src.
    
    A "whiteout" is designed to be a char device with 0,0 device number, it has
    specially meaning for stackable filesystem. In these filesystems, there are
    multiple layers exist, and only top of these can be modified. So a whiteout
    in top layer is used to hide a corresponding file in lower layer, as well
    removal of whiteout will make the file appear.
    
    Now in overlayfs, when we rename a file which is exist in lower layer, it
    will be copied up to upper if it is not on upper layer yet, and then rename
    it on upper layer, source file will be whiteouted to hide corresponding file
    in lower layer at the same time.
    
    So in upper layer filesystem, implementation of RENAME_WHITEOUT provide a
    atomic operation for stackable filesystem to support rename operation.
    
    There are multiple ways to implement RENAME_WHITEOUT in log of this commit:
    7dcf5c3e ("xfs: add RENAME_WHITEOUT support") which pointed out by
    Dave Chinner.
    
    For now, we just try to follow the way that xfs/ext4 use.
    Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    7e01e7ad
namei.c 23.7 KB