diff --git a/fs/inode.c b/fs/inode.c index 0f3a56ea8f48..80298f048117 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1311,12 +1311,11 @@ struct inode *inode_insert5(struct inode *inode, unsigned long hashval, spin_unlock(&inode_hash_lock); if (IS_ERR(old)) return NULL; - if (unlikely(isnew)) { + if (unlikely(isnew)) wait_on_new_inode(old); - if (unlikely(inode_unhashed(old))) { - iput(old); - goto again; - } + if (unlikely(inode_unhashed(old))) { + iput(old); + goto again; } return old; } @@ -1413,12 +1412,11 @@ struct inode *iget5_locked_rcu(struct super_block *sb, unsigned long hashval, if (inode) { if (IS_ERR(inode)) return NULL; - if (unlikely(isnew)) { + if (unlikely(isnew)) wait_on_new_inode(inode); - if (unlikely(inode_unhashed(inode))) { - iput(inode); - goto again; - } + if (unlikely(inode_unhashed(inode))) { + iput(inode); + goto again; } return inode; } @@ -1459,12 +1457,11 @@ struct inode *iget_locked(struct super_block *sb, unsigned long ino) if (inode) { if (IS_ERR(inode)) return NULL; - if (unlikely(isnew)) { + if (unlikely(isnew)) wait_on_new_inode(inode); - if (unlikely(inode_unhashed(inode))) { - iput(inode); - goto again; - } + if (unlikely(inode_unhashed(inode))) { + iput(inode); + goto again; } return inode; } @@ -1501,12 +1498,11 @@ struct inode *iget_locked(struct super_block *sb, unsigned long ino) if (IS_ERR(old)) return NULL; inode = old; - if (unlikely(isnew)) { + if (unlikely(isnew)) wait_on_new_inode(inode); - if (unlikely(inode_unhashed(inode))) { - iput(inode); - goto again; - } + if (unlikely(inode_unhashed(inode))) { + iput(inode); + goto again; } } return inode; @@ -1648,12 +1644,11 @@ struct inode *ilookup5(struct super_block *sb, unsigned long hashval, again: inode = ilookup5_nowait(sb, hashval, test, data, &isnew); if (inode) { - if (unlikely(isnew)) { + if (unlikely(isnew)) wait_on_new_inode(inode); - if (unlikely(inode_unhashed(inode))) { - iput(inode); - goto again; - } + if (unlikely(inode_unhashed(inode))) { + iput(inode); + goto again; } } return inode; @@ -1682,12 +1677,11 @@ struct inode *ilookup(struct super_block *sb, unsigned long ino) if (inode) { if (IS_ERR(inode)) return NULL; - if (unlikely(isnew)) { + if (unlikely(isnew)) wait_on_new_inode(inode); - if (unlikely(inode_unhashed(inode))) { - iput(inode); - goto again; - } + if (unlikely(inode_unhashed(inode))) { + iput(inode); + goto again; } } return inode; @@ -1863,12 +1857,11 @@ int insert_inode_locked(struct inode *inode) isnew = !!(inode_state_read(old) & I_NEW); spin_unlock(&old->i_lock); spin_unlock(&inode_hash_lock); - if (isnew) { + if (isnew) wait_on_new_inode(old); - if (unlikely(!inode_unhashed(old))) { - iput(old); - return -EBUSY; - } + if (unlikely(!inode_unhashed(old))) { + iput(old); + return -EBUSY; } iput(old); }