try_to_freeze(PF_FREEZE); 
try_to_freeze(); 
xfssyncd(	void			*arg){	long			timeleft;	vfs_t			*vfsp = (vfs_t *) arg;	struct list_head	tmp;	struct vfs_sync_work	*work, *n;	daemonize("xfssyncd");	vfsp->vfs_sync_work.w_vfs = vfsp;	vfsp->vfs_sync_work.w_syncer = vfs_sync_worker;	vfsp->vfs_sync_task = current;	wmb();	wake_up(&vfsp->vfs_wait_sync_task);	INIT_LIST_HEAD(&tmp);	timeleft = (xfs_syncd_centisecs * HZ) / 100;	for (;;) {		set_current_state(TASK_INTERRUPTIBLE);		timeleft = schedule_timeout(timeleft);		/* swsusp */		try_to_freeze(PF_FREEZE);		if (vfsp->vfs_flag & VFS_UMOUNT)			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));		}	}	vfsp->vfs_sync_task = NULL;	wmb();	wake_up(&vfsp->vfs_wait_sync_task);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e1d1d28d99dabe63c64f7f40f1ca1d646de1f73/xfs_super.c/clean/fs/xfs/linux-2.6/xfs_super.c