]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: use insert_inode_locked4 for inode creation
authorChris Mason <clm@fb.com>
Mon, 8 Sep 2014 20:08:51 +0000 (13:08 -0700)
committerChris Mason <clm@fb.com>
Mon, 8 Sep 2014 20:56:45 +0000 (13:56 -0700)
commitf8bca27fc44430d775f43c291373270c97bbf84a
tree0245a9bf559bfab38f9a2812d3aebb252a81cebb
parent12bd706b552f61889c1f07c1dd65ca0d272cada9
Btrfs: use insert_inode_locked4 for inode creation

Btrfs was inserting inodes into the hash table before we had fully
set the inode up on disk.  This leaves us open to rare races that allow
two different inodes in memory for the same [root, inode] pair.

This patch fixes things by using insert_inode_locked4 to insert an I_NEW
inode and unlock_new_inode when we're ready for the rest of the kernel
to use the inode.

It also makes sure to init the operations pointers on the inode before
going into the error handling paths.

Signed-off-by: Chris Mason <clm@fb.com>
Reported-by: Al Viro <viro@zeniv.linux.org.uk>
fs/btrfs/inode.c