refrigerator(PF_FREEZE); 
refrigerator(); 
int kjournald(void *arg){	journal_t *journal = (journal_t *) arg;	transaction_t *transaction;	struct timer_list timer;	current_journal = journal;	daemonize("kjournald");	/* Set up an interval timer which can be used to trigger a           commit wakeup after the commit interval expires */	init_timer(&timer);	timer.data = (unsigned long) current;	timer.function = commit_timeout;	journal->j_commit_timer = &timer;	/* Record that the journal thread is running */	journal->j_task = current;	wake_up(&journal->j_wait_done_commit);	printk(KERN_INFO "kjournald starting.  Commit interval %ld seconds\n",			journal->j_commit_interval / HZ);	/*	 * And now, wait forever for commit wakeup events.	 */	spin_lock(&journal->j_state_lock);loop:	if (journal->j_flags & JFS_UNMOUNT)		goto end_loop;	jbd_debug(1, "commit_sequence=%d, commit_request=%d\n",		journal->j_commit_sequence, journal->j_commit_request);	if (journal->j_commit_sequence != journal->j_commit_request) {		jbd_debug(1, "OK, requests differ\n");		spin_unlock(&journal->j_state_lock);		del_timer_sync(journal->j_commit_timer);		journal_commit_transaction(journal);		spin_lock(&journal->j_state_lock);		goto loop;	}	wake_up(&journal->j_wait_done_commit);	if (current->flags & PF_FREEZE) {		/*		 * The simpler the better. Flushing journal isn't a		 * good idea, because that depends on threads that may		 * be already stopped.		 */		jbd_debug(1, "Now suspending kjournald\n");		spin_unlock(&journal->j_state_lock);		refrigerator(PF_FREEZE);		spin_lock(&journal->j_state_lock);	} else {		/*		 * We assume on resume that commits are already there,		 * so we don't sleep		 */		DEFINE_WAIT(wait);		int should_sleep = 1;		prepare_to_wait(&journal->j_wait_commit, &wait,				TASK_INTERRUPTIBLE);		if (journal->j_commit_sequence != journal->j_commit_request)			should_sleep = 0;		transaction = journal->j_running_transaction;		if (transaction && time_after_eq(jiffies,						transaction->t_expires))			should_sleep = 0;		if (should_sleep) {			spin_unlock(&journal->j_state_lock);			schedule();			spin_lock(&journal->j_state_lock);		}		finish_wait(&journal->j_wait_commit, &wait);	}	jbd_debug(1, "kjournald wakes\n");	/*	 * Were we woken up by a commit wakeup event?	 */	transaction = journal->j_running_transaction;	if (transaction && time_after_eq(jiffies, transaction->t_expires)) {		journal->j_commit_request = transaction->t_tid;		jbd_debug(1, "woke because of timeout\n");	}	goto loop;end_loop:	spin_unlock(&journal->j_state_lock);	del_timer_sync(journal->j_commit_timer);	journal->j_task = NULL;	wake_up(&journal->j_wait_done_commit);	jbd_debug(1, "Journal thread exiting.\n");	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e1d1d28d99dabe63c64f7f40f1ca1d646de1f73/journal.c/clean/fs/jbd/journal.c