autofs: fix inconsistent use of now variable
The global variable "now" in fs/autofs/expire.c is used in an inconsistent way, sometimes using jiffies directly, and sometimes using the "now" variable, and setting it isn't done consistently either. But the autofs dentry info last_used field is only updated during path walks or during expire so jiffies can be used directly and the global variable "now" removed. Link: http://lkml.kernel.org/r/152937731702.21213.7371321165189170865.stgit@pluto.themaw.net Signed-off-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
d4d79b8195
commit
2fd9944f0f
@ -10,8 +10,6 @@
|
|||||||
|
|
||||||
#include "autofs_i.h"
|
#include "autofs_i.h"
|
||||||
|
|
||||||
static unsigned long now;
|
|
||||||
|
|
||||||
/* Check if a dentry can be expired */
|
/* Check if a dentry can be expired */
|
||||||
static inline int autofs_can_expire(struct dentry *dentry,
|
static inline int autofs_can_expire(struct dentry *dentry,
|
||||||
unsigned long timeout, int do_now)
|
unsigned long timeout, int do_now)
|
||||||
@ -24,7 +22,7 @@ static inline int autofs_can_expire(struct dentry *dentry,
|
|||||||
|
|
||||||
if (!do_now) {
|
if (!do_now) {
|
||||||
/* Too young to die */
|
/* Too young to die */
|
||||||
if (!timeout || time_after(ino->last_used + timeout, now))
|
if (!timeout || time_after(ino->last_used + timeout, jiffies))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
@ -307,7 +305,6 @@ struct dentry *autofs_expire_direct(struct super_block *sb,
|
|||||||
if (!root)
|
if (!root)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
now = jiffies;
|
|
||||||
timeout = sbi->exp_timeout;
|
timeout = sbi->exp_timeout;
|
||||||
|
|
||||||
if (!autofs_direct_busy(mnt, root, timeout, do_now)) {
|
if (!autofs_direct_busy(mnt, root, timeout, do_now)) {
|
||||||
@ -442,7 +439,6 @@ struct dentry *autofs_expire_indirect(struct super_block *sb,
|
|||||||
if (!root)
|
if (!root)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
now = jiffies;
|
|
||||||
timeout = sbi->exp_timeout;
|
timeout = sbi->exp_timeout;
|
||||||
|
|
||||||
dentry = NULL;
|
dentry = NULL;
|
||||||
@ -575,7 +571,7 @@ int autofs_expire_run(struct super_block *sb,
|
|||||||
spin_lock(&sbi->fs_lock);
|
spin_lock(&sbi->fs_lock);
|
||||||
ino = autofs_dentry_ino(dentry);
|
ino = autofs_dentry_ino(dentry);
|
||||||
/* avoid rapid-fire expire attempts if expiry fails */
|
/* avoid rapid-fire expire attempts if expiry fails */
|
||||||
ino->last_used = now;
|
ino->last_used = jiffies;
|
||||||
ino->flags &= ~(AUTOFS_INF_EXPIRING|AUTOFS_INF_WANT_EXPIRE);
|
ino->flags &= ~(AUTOFS_INF_EXPIRING|AUTOFS_INF_WANT_EXPIRE);
|
||||||
complete_all(&ino->expire_complete);
|
complete_all(&ino->expire_complete);
|
||||||
spin_unlock(&sbi->fs_lock);
|
spin_unlock(&sbi->fs_lock);
|
||||||
@ -605,7 +601,7 @@ int autofs_do_expire_multi(struct super_block *sb, struct vfsmount *mnt,
|
|||||||
|
|
||||||
spin_lock(&sbi->fs_lock);
|
spin_lock(&sbi->fs_lock);
|
||||||
/* avoid rapid-fire expire attempts if expiry fails */
|
/* avoid rapid-fire expire attempts if expiry fails */
|
||||||
ino->last_used = now;
|
ino->last_used = jiffies;
|
||||||
ino->flags &= ~(AUTOFS_INF_EXPIRING|AUTOFS_INF_WANT_EXPIRE);
|
ino->flags &= ~(AUTOFS_INF_EXPIRING|AUTOFS_INF_WANT_EXPIRE);
|
||||||
complete_all(&ino->expire_complete);
|
complete_all(&ino->expire_complete);
|
||||||
spin_unlock(&sbi->fs_lock);
|
spin_unlock(&sbi->fs_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user