mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-18 02:04:05 +08:00
autofs4: don't take spinlock when not needed in autofs4_lookup_expiring
If the expiring_list is empty, we can avoid a costly spinlock in the rcu-walk path through autofs4_d_manage (once the rest of the path becomes rcu-walk friendly). Signed-off-by: NeilBrown <neilb@suse.de> Reviewed-by: Ian Kent <raven@themaw.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c312442fe3
commit
668128e90b
@ -166,8 +166,10 @@ static struct dentry *autofs4_lookup_active(struct dentry *dentry)
|
||||
const unsigned char *str = name->name;
|
||||
struct list_head *p, *head;
|
||||
|
||||
spin_lock(&sbi->lookup_lock);
|
||||
head = &sbi->active_list;
|
||||
if (list_empty(head))
|
||||
return NULL;
|
||||
spin_lock(&sbi->lookup_lock);
|
||||
list_for_each(p, head) {
|
||||
struct autofs_info *ino;
|
||||
struct dentry *active;
|
||||
@ -218,8 +220,10 @@ static struct dentry *autofs4_lookup_expiring(struct dentry *dentry)
|
||||
const unsigned char *str = name->name;
|
||||
struct list_head *p, *head;
|
||||
|
||||
spin_lock(&sbi->lookup_lock);
|
||||
head = &sbi->expiring_list;
|
||||
if (list_empty(head))
|
||||
return NULL;
|
||||
spin_lock(&sbi->lookup_lock);
|
||||
list_for_each(p, head) {
|
||||
struct autofs_info *ino;
|
||||
struct dentry *expiring;
|
||||
|
Loading…
Reference in New Issue
Block a user