after 250df6ed274d767da844a5d9f05720b804240197 (fs: protect inode->i_state with inode->i_lock), insert_inode_locked() no longer returns the inode with I_NEW set on failure. However, the error handler still calls unlock_new_inode() on failure, which does a WARN_ON if I_NEW is not set, so any failure spews a lot of warnings. (We also were doing dquot_drop, etc before we had initialized the quota, that gets skipped as well) Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> --- V2: don't rearrange clear_nlink, and edit commit message. diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c index c4e81df..06cbc22 100644 --- a/fs/ext2/ialloc.c +++ b/fs/ext2/ialloc.c @@ -574,7 +574,7 @@ got: spin_unlock(&sbi->s_next_gen_lock); if (insert_inode_locked(inode) < 0) { err = -EINVAL; - goto fail_drop; + goto fail_put; } dquot_initialize(inode); @@ -603,6 +603,7 @@ fail_drop: inode->i_flags |= S_NOQUOTA; clear_nlink(inode); unlock_new_inode(inode); +fail_put: iput(inode); return ERR_PTR(err); -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html