Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751345AbbEFPzX (ORCPT ); Wed, 6 May 2015 11:55:23 -0400 Received: from mailrelay118.isp.belgacom.be ([195.238.20.145]:4612 "EHLO mailrelay118.isp.belgacom.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751041AbbEFPzV (ORCPT ); Wed, 6 May 2015 11:55:21 -0400 X-Belgacom-Dynamic: yes X-Cloudmark-SP-Filtered: true X-Cloudmark-SP-Result: v=1.1 cv=yz6z4UlqfYe1Iv9USMliYggvHmbgQ4ACOrhY3D/q6Wc= c=1 sm=2 a=Z4Rwk6OoAAAA:8 a=drOt6m5kAAAA:8 a=Mcz0kZ35bc32j7w89CkA:9 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A2A2DwAFOEpV/0VfQ1dcgwyBL7NwAQEBAwUBgQKQb4dbgSc6EwEBAQEBAQGBCkEFhAgvI4EaN4gwAcVTLIYXiicdhBcFkX+KfoEkjVWHPyNgZgGCMDwxgkUBAQE From: Fabian Frederick To: linux-kernel@vger.kernel.org Cc: Fabian Frederick , Andrew Morton , Alexander Viro , Jan Kara Subject: [PATCH V2 1/2 linux-next] affs: mark new inode before hashtable insertion Date: Wed, 6 May 2015 17:54:52 +0200 Message-Id: <1430927693-19280-1-git-send-email-fabf@skynet.be> X-Mailer: git-send-email 2.4.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2230 Lines: 85 AFFS didn't mark new inode to I_NEW state like other FS using insert_inode_locked() during creation. This patch also unlocks inode when setup is complete or operation failed. Problem appeared when trying to add tmpfile support. Cc: Andrew Morton Cc: Alexander Viro Cc: Jan Kara Suggested-by: Jan Kara Signed-off-by: Fabian Frederick --- V2: -remove insert_inode_hash() to avoid double insert -update patch subject fs/affs/inode.c | 4 ++-- fs/affs/namei.c | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fs/affs/inode.c b/fs/affs/inode.c index 1734950..a9dbb41 100644 --- a/fs/affs/inode.c +++ b/fs/affs/inode.c @@ -323,8 +323,8 @@ affs_new_inode(struct inode *dir) AFFS_I(inode)->i_pa_cnt = 0; AFFS_I(inode)->i_extcnt = 1; AFFS_I(inode)->i_ext_last = ~1; - - insert_inode_hash(inode); + if (insert_inode_locked(inode) < 0) + goto err_inode; return inode; diff --git a/fs/affs/namei.c b/fs/affs/namei.c index 181e05b..b183540 100644 --- a/fs/affs/namei.c +++ b/fs/affs/namei.c @@ -281,9 +281,11 @@ affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) error = affs_add_entry(dir, inode, dentry, ST_FILE); if (error) { clear_nlink(inode); + unlock_new_inode(inode); iput(inode); return error; } + unlock_new_inode(inode); return 0; } @@ -310,9 +312,11 @@ affs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) if (error) { clear_nlink(inode); mark_inode_dirty(inode); + unlock_new_inode(inode); iput(inode); return error; } + unlock_new_inode(inode); return 0; } @@ -391,11 +395,13 @@ affs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) if (error) goto err; + unlock_new_inode(inode); return 0; err: clear_nlink(inode); mark_inode_dirty(inode); + unlock_new_inode(inode); iput(inode); return error; } -- 2.4.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/