mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
proc: less LOCK operations during lookup
Pseudo-code for lookup effectively is: LOCK kernel LOCK proc_subdir_lock find PDE UNLOCK proc_subdir_lock get inode LOCK proc_subdir_lock goto unlock UNLOCK proc_subdir_lock UNLOCK kernel We can get rid of LOCK/UNLOCK pair after getting inode simply by jumping to unlock_kernel() directly. Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5b3fe63b19
commit
4237e0d3de
@ -406,12 +406,12 @@ struct dentry *proc_lookup(struct inode * dir, struct dentry *dentry, struct nam
|
|||||||
spin_unlock(&proc_subdir_lock);
|
spin_unlock(&proc_subdir_lock);
|
||||||
error = -EINVAL;
|
error = -EINVAL;
|
||||||
inode = proc_get_inode(dir->i_sb, ino, de);
|
inode = proc_get_inode(dir->i_sb, ino, de);
|
||||||
spin_lock(&proc_subdir_lock);
|
goto out_unlock;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spin_unlock(&proc_subdir_lock);
|
spin_unlock(&proc_subdir_lock);
|
||||||
|
out_unlock:
|
||||||
unlock_kernel();
|
unlock_kernel();
|
||||||
|
|
||||||
if (inode) {
|
if (inode) {
|
||||||
|
Loading…
Reference in New Issue
Block a user