Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 11 Aug 2014 18:44:11 +0000 (11:44 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 11 Aug 2014 18:44:11 +0000 (11:44 -0700)
Pull vfs updates from Al Viro:
 "Stuff in here:

   - acct.c fixes and general rework of mnt_pin mechanism.  That allows
     to go for delayed-mntput stuff, which will permit mntput() on deep
     stack without worrying about stack overflows - fs shutdown will
     happen on shallow stack.  IOW, we can do Eric's umount-on-rmdir
     series without introducing tons of stack overflows on new mntput()
     call chains it introduces.
   - Bruce's d_splice_alias() patches
   - more Miklos' rename() stuff.
   - a couple of regression fixes (stable fodder, in the end of branch)
     and a fix for API idiocy in iov_iter.c.

  There definitely will be another pile, maybe even two.  I'd like to
  get Eric's series in this time, but even if we miss it, it'll go right
  in the beginning of for-next in the next cycle - the tricky part of
  prereqs is in this pile"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (40 commits)
  fix copy_tree() regression
  __generic_file_write_iter(): fix handling of sync error after DIO
  switch iov_iter_get_pages() to passing maximal number of pages
  fs: mark __d_obtain_alias static
  dcache: d_splice_alias should detect loops
  exportfs: update Exporting documentation
  dcache: d_find_alias needn't recheck IS_ROOT && DCACHE_DISCONNECTED
  dcache: remove unused d_find_alias parameter
  dcache: d_obtain_alias callers don't all want DISCONNECTED
  dcache: d_splice_alias should ignore DCACHE_DISCONNECTED
  dcache: d_splice_alias mustn't create directory aliases
  dcache: close d_move race in d_splice_alias
  dcache: move d_splice_alias
  namei: trivial fix to vfs_rename_dir comment
  VFS: allow ->d_manage() to declare -EISDIR in rcu_walk mode.
  cifs: support RENAME_NOREPLACE
  hostfs: support rename flags
  shmem: support RENAME_EXCHANGE
  shmem: support RENAME_NOREPLACE
  btrfs: add RENAME_NOREPLACE
  ...

1  2 
fs/cifs/cifsfs.h
fs/cifs/inode.c
fs/namespace.c
fs/nilfs2/super.c
include/linux/fs.h
include/linux/mount.h
mm/filemap.c
mm/shmem.c

Simple merge
diff --cc fs/cifs/inode.c
Simple merge
diff --cc fs/namespace.c
index 0acabea583191aaa427fab317429210756e1a643,be3f6f23a47dc0650747e8cc6ad851c22eff56c0..a01c7730e9af3ad07f3e993d2f7f27f04f615604
@@@ -779,6 -778,20 +778,20 @@@ static void attach_mnt(struct mount *mn
        list_add_tail(&mnt->mnt_child, &parent->mnt_mounts);
  }
  
 -              hlist_add_after_rcu(&shadows->mnt_hash, &mnt->mnt_hash);
+ static void attach_shadowed(struct mount *mnt,
+                       struct mount *parent,
+                       struct mount *shadows)
+ {
+       if (shadows) {
++              hlist_add_behind_rcu(&mnt->mnt_hash, &shadows->mnt_hash);
+               list_add(&mnt->mnt_child, &shadows->mnt_child);
+       } else {
+               hlist_add_head_rcu(&mnt->mnt_hash,
+                               m_hash(&parent->mnt, mnt->mnt_mountpoint));
+               list_add_tail(&mnt->mnt_child, &parent->mnt_mounts);
+       }
+ }
  /*
   * vfsmount lock must be held for write
   */
Simple merge
Simple merge
Simple merge
diff --cc mm/filemap.c
Simple merge
diff --cc mm/shmem.c
Simple merge