|
@@ -773,15 +773,11 @@ static struct inode *find_inode(struct super_block *sb,
|
|
|
|
|
|
repeat:
|
|
|
hlist_for_each_entry(inode, head, i_hash) {
|
|
|
- spin_lock(&inode->i_lock);
|
|
|
- if (inode->i_sb != sb) {
|
|
|
- spin_unlock(&inode->i_lock);
|
|
|
+ if (inode->i_sb != sb)
|
|
|
continue;
|
|
|
- }
|
|
|
- if (!test(inode, data)) {
|
|
|
- spin_unlock(&inode->i_lock);
|
|
|
+ if (!test(inode, data))
|
|
|
continue;
|
|
|
- }
|
|
|
+ spin_lock(&inode->i_lock);
|
|
|
if (inode->i_state & (I_FREEING|I_WILL_FREE)) {
|
|
|
__wait_on_freeing_inode(inode);
|
|
|
goto repeat;
|
|
@@ -804,15 +800,11 @@ static struct inode *find_inode_fast(struct super_block *sb,
|
|
|
|
|
|
repeat:
|
|
|
hlist_for_each_entry(inode, head, i_hash) {
|
|
|
- spin_lock(&inode->i_lock);
|
|
|
- if (inode->i_ino != ino) {
|
|
|
- spin_unlock(&inode->i_lock);
|
|
|
+ if (inode->i_ino != ino)
|
|
|
continue;
|
|
|
- }
|
|
|
- if (inode->i_sb != sb) {
|
|
|
- spin_unlock(&inode->i_lock);
|
|
|
+ if (inode->i_sb != sb)
|
|
|
continue;
|
|
|
- }
|
|
|
+ spin_lock(&inode->i_lock);
|
|
|
if (inode->i_state & (I_FREEING|I_WILL_FREE)) {
|
|
|
__wait_on_freeing_inode(inode);
|
|
|
goto repeat;
|