expired = dentry; break; 
struct autofs_info *inf = autofs4_dentry_ino(dentry);  /* Set this flag early to catch sys_chdir and the like */ inf->flags |= AUTOFS_INF_EXPIRING; spin_unlock(&sbi->fs_lock); expired = dentry; break; 
static struct dentry *autofs4_expire(struct super_block *sb,				     struct vfsmount *mnt,				     struct autofs_sb_info *sbi,				     int how){	unsigned long timeout;	struct dentry *root = sb->s_root;	struct dentry *expired = NULL;	struct list_head *next;	int do_now = how & AUTOFS_EXP_IMMEDIATE;	int exp_leaves = how & AUTOFS_EXP_LEAVES;	if ( !sbi->exp_timeout || !root )		return NULL;	now = jiffies;	timeout = sbi->exp_timeout;	spin_lock(&dcache_lock);	next = root->d_subdirs.next;	/* On exit from the loop expire is set to a dgot dentry	 * to expire or it's NULL */	while ( next != &root->d_subdirs ) {		struct dentry *dentry = list_entry(next, struct dentry, d_child);		/* Negative dentry - give up */		if ( !simple_positive(dentry) ) {			next = next->next;			continue;		}		dentry = dget(dentry);		spin_unlock(&dcache_lock);		/* Case 1: indirect mount or top level direct mount */		if (d_mountpoint(dentry)) {			DPRINTK("checking mountpoint %p %.*s",				dentry, (int)dentry->d_name.len, dentry->d_name.name);			/* Can we expire this guy */			if (!autofs4_can_expire(dentry, timeout, do_now))				goto next;			/* Can we umount this guy */			if (autofs4_check_mount(mnt, dentry)) {				expired = dentry;				break;			}			goto next;		}		if ( simple_empty(dentry) )			goto next;		/* Case 2: tree mount, expire iff entire tree is not busy */		if (!exp_leaves) {			if (autofs4_check_tree(mnt, dentry, timeout, do_now)) {			expired = dentry;			break;			}		/* Case 3: direct mount, expire individual leaves */		} else {			expired = autofs4_check_leaves(mnt, dentry, timeout, do_now);			if (expired) {				dput(dentry);				break;			}		}next:		dput(dentry);		spin_lock(&dcache_lock);		next = next->next;	}	if ( expired ) {		DPRINTK("returning %p %.*s",			expired, (int)expired->d_name.len, expired->d_name.name);		spin_lock(&dcache_lock);		list_del(&expired->d_parent->d_subdirs);		list_add(&expired->d_parent->d_subdirs, &expired->d_child);		spin_unlock(&dcache_lock);		return expired;	}	spin_unlock(&dcache_lock);	return NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3a9720ce73c9247e5262922d65e90444ea75eb50/expire.c/clean/fs/autofs4/expire.c