|
@@ -30,12 +30,6 @@ static inline int autofs4_can_expire(struct dentry *dentry,
|
|
|
/* Too young to die */
|
|
|
if (!timeout || time_after(ino->last_used + timeout, now))
|
|
|
return 0;
|
|
|
-
|
|
|
- /* update last_used here :-
|
|
|
- - obviously makes sense if it is in use now
|
|
|
- - less obviously, prevents rapid-fire expire
|
|
|
- attempts if expire fails the first time */
|
|
|
- ino->last_used = now;
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
@@ -535,6 +529,8 @@ int autofs4_expire_run(struct super_block *sb,
|
|
|
|
|
|
spin_lock(&sbi->fs_lock);
|
|
|
ino = autofs4_dentry_ino(dentry);
|
|
|
+ /* avoid rapid-fire expire attempts if expiry fails */
|
|
|
+ ino->last_used = now;
|
|
|
ino->flags &= ~AUTOFS_INF_EXPIRING;
|
|
|
complete_all(&ino->expire_complete);
|
|
|
spin_unlock(&sbi->fs_lock);
|
|
@@ -561,6 +557,8 @@ int autofs4_do_expire_multi(struct super_block *sb, struct vfsmount *mnt,
|
|
|
ret = autofs4_wait(sbi, dentry, NFY_EXPIRE);
|
|
|
|
|
|
spin_lock(&sbi->fs_lock);
|
|
|
+ /* avoid rapid-fire expire attempts if expiry fails */
|
|
|
+ ino->last_used = now;
|
|
|
ino->flags &= ~AUTOFS_INF_EXPIRING;
|
|
|
complete_all(&ino->expire_complete);
|
|
|
spin_unlock(&sbi->fs_lock);
|