• Linus Torvalds's avatar
    Merge branch 'cross-rename' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs · 7df93452
    Linus Torvalds authored
    Pull renameat2 system call from Miklos Szeredi:
     "This adds a new syscall, renameat2(), which is the same as renameat()
      but with a flags argument.
    
      The purpose of extending rename is to add cross-rename, a symmetric
      variant of rename, which exchanges the two files.  This allows
      interesting things, which were not possible before, for example
      atomically replacing a directory tree with a symlink, etc...  This
      also allows overlayfs and friends to operate on whiteouts atomically.
    
      Andy Lutomirski also suggested a "noreplace" flag, which disables the
      overwriting behavior of rename.
    
      These two flags, RENAME_EXCHANGE and RENAME_NOREPLACE are only
      implemented for ext4 as an example and for testing"
    
    * 'cross-rename' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs:
      ext4: add cross rename support
      ext4: rename: split out helper functions
      ext4: rename: move EMLINK check up
      ext4: rename: create ext4_renament structure for local vars
      vfs: add cross-rename
      vfs: lock_two_nondirectories: allow directory args
      security: add flags to rename hooks
      vfs: add RENAME_NOREPLACE flag
      vfs: add renameat2 syscall
      vfs: rename: use common code for dir and non-dir
      vfs: rename: move d_move() up
      vfs: add d_is_dir()
    7df93452
inode.c 48.7 KB