int md_thread(void * arg) 
static int md_thread(void * arg) 
int md_thread(void * arg){	mdk_thread_t *thread = arg;	lock_kernel();	/*	 * Detach thread	 */	daemonize(thread->name, mdname(thread->mddev));	current->exit_signal = SIGCHLD;	allow_signal(SIGKILL);	thread->tsk = current;	/*	 * md_thread is a 'system-thread', it's priority should be very	 * high. We avoid resource deadlocks individually in each	 * raid personality. (RAID5 does preallocation) We also use RR and	 * the very same RT priority as kswapd, thus we will never get	 * into a priority inversion deadlock.	 *	 * we definitely have to have equal or higher priority than	 * bdflush, otherwise bdflush will deadlock if there are too	 * many dirty RAID5 blocks.	 */	unlock_kernel();	complete(thread->event);	while (thread->run) {		void (*run)(mddev_t *);		wait_event_interruptible(thread->wqueue,					 test_bit(THREAD_WAKEUP, &thread->flags));		if (current->flags & PF_FREEZE)			refrigerator(PF_FREEZE);		clear_bit(THREAD_WAKEUP, &thread->flags);		run = thread->run;		if (run)			run(thread->mddev);		if (signal_pending(current))			flush_signals(current);	}	complete(thread->event);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/75c96f85845a6707b0f9916cb263cb3584f7d48f/md.c/clean/drivers/md/md.c