diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-08-13 23:25:58 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-08-13 23:25:58 -0400 |
| commit | 0ea97a2d61df729ccce75b00a2fa37d39a508ab6 (patch) | |
| tree | 953c13d8309938b93af2c257de8f7b84004ae748 /fs/ext2 | |
| parent | a66b4cd1e7163adb327838a3c81faaf6a9330d5a (diff) | |
| parent | c7b15a8657da7f8d11269c7cc3d8beef10d26b43 (diff) | |
Merge branch 'work.mkdir' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs icache updates from Al Viro:
- NFS mkdir/open_by_handle race fix
- analogous solution for FUSE, replacing the one currently in mainline
- new primitive to be used when discarding halfway set up inodes on
failed object creation; gives sane warranties re icache lookups not
returning such doomed by still not freed inodes. A bunch of
filesystems switched to that animal.
- Miklos' fix for last cycle regression in iget5_locked(); -stable will
need a slightly different variant, unfortunately.
- misc bits and pieces around things icache-related (in adfs and jfs).
* 'work.mkdir' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
jfs: don't bother with make_bad_inode() in ialloc()
adfs: don't put inodes into icache
new helper: inode_fake_hash()
vfs: don't evict uninitialized inode
jfs: switch to discard_new_inode()
ext2: make sure that partially set up inodes won't be returned by ext2_iget()
udf: switch to discard_new_inode()
ufs: switch to discard_new_inode()
btrfs: switch to discard_new_inode()
new primitive: discard_new_inode()
kill d_instantiate_no_diralias()
nfs_instantiate(): prevent multiple aliases for directory inode
Diffstat (limited to 'fs/ext2')
| -rw-r--r-- | fs/ext2/ialloc.c | 3 | ||||
| -rw-r--r-- | fs/ext2/namei.c | 9 |
2 files changed, 4 insertions, 8 deletions
diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c index 6484199b35d1..5c3d7b7e4975 100644 --- a/fs/ext2/ialloc.c +++ b/fs/ext2/ialloc.c | |||
| @@ -611,8 +611,7 @@ fail_drop: | |||
| 611 | dquot_drop(inode); | 611 | dquot_drop(inode); |
| 612 | inode->i_flags |= S_NOQUOTA; | 612 | inode->i_flags |= S_NOQUOTA; |
| 613 | clear_nlink(inode); | 613 | clear_nlink(inode); |
| 614 | unlock_new_inode(inode); | 614 | discard_new_inode(inode); |
| 615 | iput(inode); | ||
| 616 | return ERR_PTR(err); | 615 | return ERR_PTR(err); |
| 617 | 616 | ||
| 618 | fail: | 617 | fail: |
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c index 152453a91877..0c26dcc5d850 100644 --- a/fs/ext2/namei.c +++ b/fs/ext2/namei.c | |||
| @@ -45,8 +45,7 @@ static inline int ext2_add_nondir(struct dentry *dentry, struct inode *inode) | |||
| 45 | return 0; | 45 | return 0; |
| 46 | } | 46 | } |
| 47 | inode_dec_link_count(inode); | 47 | inode_dec_link_count(inode); |
| 48 | unlock_new_inode(inode); | 48 | discard_new_inode(inode); |
| 49 | iput(inode); | ||
| 50 | return err; | 49 | return err; |
| 51 | } | 50 | } |
| 52 | 51 | ||
| @@ -192,8 +191,7 @@ out: | |||
| 192 | 191 | ||
| 193 | out_fail: | 192 | out_fail: |
| 194 | inode_dec_link_count(inode); | 193 | inode_dec_link_count(inode); |
| 195 | unlock_new_inode(inode); | 194 | discard_new_inode(inode); |
| 196 | iput (inode); | ||
| 197 | goto out; | 195 | goto out; |
| 198 | } | 196 | } |
| 199 | 197 | ||
| @@ -261,8 +259,7 @@ out: | |||
| 261 | out_fail: | 259 | out_fail: |
| 262 | inode_dec_link_count(inode); | 260 | inode_dec_link_count(inode); |
| 263 | inode_dec_link_count(inode); | 261 | inode_dec_link_count(inode); |
| 264 | unlock_new_inode(inode); | 262 | discard_new_inode(inode); |
| 265 | iput(inode); | ||
| 266 | out_dir: | 263 | out_dir: |
| 267 | inode_dec_link_count(dir); | 264 | inode_dec_link_count(dir); |
| 268 | goto out; | 265 | goto out; |
