aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext2
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-08-13 23:25:58 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-08-13 23:25:58 -0400
commit0ea97a2d61df729ccce75b00a2fa37d39a508ab6 (patch)
tree953c13d8309938b93af2c257de8f7b84004ae748 /fs/ext2
parenta66b4cd1e7163adb327838a3c81faaf6a9330d5a (diff)
parentc7b15a8657da7f8d11269c7cc3d8beef10d26b43 (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.c3
-rw-r--r--fs/ext2/namei.c9
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
618fail: 617fail:
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
193out_fail: 192out_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:
261out_fail: 259out_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);
266out_dir: 263out_dir:
267 inode_dec_link_count(dir); 264 inode_dec_link_count(dir);
268 goto out; 265 goto out;