set_current_state(TASK_INTERRUPTIBLE); timeleft = schedule_timeout(timeleft); 
timeleft = schedule_timeout_interruptible(timeleft); 
xfssyncd(	void			*arg){	long			timeleft;	vfs_t			*vfsp = (vfs_t *) arg;	struct vfs_sync_work	*work, *n;	LIST_HEAD		(tmp);	timeleft = (xfs_syncd_centisecs * HZ) / 100;	for (;;) {		set_current_state(TASK_INTERRUPTIBLE);		timeleft = schedule_timeout(timeleft);		/* swsusp */		try_to_freeze();		if (kthread_should_stop())			break;		spin_lock(&vfsp->vfs_sync_lock);		/*		 * We can get woken by laptop mode, to do a sync -		 * that's the (only!) case where the list would be		 * empty with time remaining.		 */		if (!timeleft || list_empty(&vfsp->vfs_sync_list)) {			if (!timeleft)				timeleft = (xfs_syncd_centisecs * HZ) / 100;			INIT_LIST_HEAD(&vfsp->vfs_sync_work.w_list);			list_add_tail(&vfsp->vfs_sync_work.w_list,					&vfsp->vfs_sync_list);		}		list_for_each_entry_safe(work, n, &vfsp->vfs_sync_list, w_list)			list_move(&work->w_list, &tmp);		spin_unlock(&vfsp->vfs_sync_lock);		list_for_each_entry_safe(work, n, &tmp, w_list) {			(*work->w_syncer)(vfsp, work->w_data);			list_del(&work->w_list);			if (work == &vfsp->vfs_sync_work)				continue;			kmem_free(work, sizeof(struct vfs_sync_work));		}	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/041e0e3b1970c508dc9a95b7dd9dc86271a7d7ac/xfs_super.c/clean/fs/xfs/linux-2.6/xfs_super.c