diff options
| author | Linus Torvalds | 2013-02-08 02:06:46 +0100 |
|---|---|---|
| committer | Linus Torvalds | 2013-02-08 02:06:46 +0100 |
| commit | 8d19514fade54798106a60059c539501eda31b47 (patch) | |
| tree | 737e9fc90b37bec251cfb2bf36bf056200d6e596 /fs/btrfs/ioctl.c | |
| parent | Merge tag 'pinctrl-for-v3.8-late' of git://git.kernel.org/pub/scm/linux/kerne... (diff) | |
| parent | Btrfs: move d_instantiate outside the transaction during mksubvol (diff) | |
| download | kernel-qcow2-linux-8d19514fade54798106a60059c539501eda31b47.tar.gz kernel-qcow2-linux-8d19514fade54798106a60059c539501eda31b47.tar.xz kernel-qcow2-linux-8d19514fade54798106a60059c539501eda31b47.zip | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
Pull btrfs fixes from Chris Mason:
"We've got corner cases for updating i_size that ceph was hitting,
error handling for quotas when we run out of space, a very subtle
snapshot deletion race, a crash while removing devices, and one
deadlock between subvolume creation and the sb_internal code (thanks
lockdep)."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
Btrfs: move d_instantiate outside the transaction during mksubvol
Btrfs: fix EDQUOT handling in btrfs_delalloc_reserve_metadata
Btrfs: fix possible stale data exposure
Btrfs: fix missing i_size update
Btrfs: fix race between snapshot deletion and getting inode
Btrfs: fix missing release of the space/qgroup reservation in start_transaction()
Btrfs: fix wrong sync_writers decrement in btrfs_file_aio_write()
Btrfs: do not merge logged extents if we've removed them from the tree
btrfs: don't try to notify udev about missing devices
Diffstat (limited to 'fs/btrfs/ioctl.c')
| -rw-r--r-- | fs/btrfs/ioctl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 5b22d45d3c6a..338f2597bf7f 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -515,7 +515,6 @@ static noinline int create_subvol(struct btrfs_root *root, BUG_ON(ret); - d_instantiate(dentry, btrfs_lookup_dentry(dir, dentry)); fail: if (async_transid) { *async_transid = trans->transid; @@ -525,6 +524,10 @@ fail: } if (err && !ret) ret = err; + + if (!ret) + d_instantiate(dentry, btrfs_lookup_dentry(dir, dentry)); + return ret; } |
