Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

jfs: switch to discard_new_inode()

we don't want open-by-handle to pick an in-core inode that
has failed setup halfway through.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro a6cbedfa 2e5afe54

+8 -12
+4 -4
fs/jfs/jfs_inode.c
··· 61 61 inode = new_inode(sb); 62 62 if (!inode) { 63 63 jfs_warn("ialloc: new_inode returned NULL!"); 64 - rc = -ENOMEM; 65 - goto fail; 64 + return ERR_PTR(-ENOMEM); 66 65 } 67 66 68 67 jfs_inode = JFS_IP(inode); ··· 140 141 dquot_drop(inode); 141 142 inode->i_flags |= S_NOQUOTA; 142 143 clear_nlink(inode); 143 - unlock_new_inode(inode); 144 + discard_new_inode(inode); 145 + return ERR_PTR(rc); 146 + 144 147 fail_put: 145 148 iput(inode); 146 - fail: 147 149 return ERR_PTR(rc); 148 150 }
+4 -8
fs/jfs/namei.c
··· 175 175 if (rc) { 176 176 free_ea_wmap(ip); 177 177 clear_nlink(ip); 178 - unlock_new_inode(ip); 179 - iput(ip); 178 + discard_new_inode(ip); 180 179 } else { 181 180 d_instantiate_new(dentry, ip); 182 181 } ··· 308 309 if (rc) { 309 310 free_ea_wmap(ip); 310 311 clear_nlink(ip); 311 - unlock_new_inode(ip); 312 - iput(ip); 312 + discard_new_inode(ip); 313 313 } else { 314 314 d_instantiate_new(dentry, ip); 315 315 } ··· 1052 1054 if (rc) { 1053 1055 free_ea_wmap(ip); 1054 1056 clear_nlink(ip); 1055 - unlock_new_inode(ip); 1056 - iput(ip); 1057 + discard_new_inode(ip); 1057 1058 } else { 1058 1059 d_instantiate_new(dentry, ip); 1059 1060 } ··· 1438 1441 if (rc) { 1439 1442 free_ea_wmap(ip); 1440 1443 clear_nlink(ip); 1441 - unlock_new_inode(ip); 1442 - iput(ip); 1444 + discard_new_inode(ip); 1443 1445 } else { 1444 1446 d_instantiate_new(dentry, ip); 1445 1447 }