patch-2.1.76 linux/mm/filemap.c
Next file: linux/mm/vmscan.c
Previous file: linux/kernel/ksyms.c
Back to the patch index
Back to the overall index
- Lines: 24
- Date:
Tue Dec 23 13:03:01 1997
- Orig file:
v2.1.75/linux/mm/filemap.c
- Orig date:
Sun Dec 21 22:36:17 1997
diff -u --recursive --new-file v2.1.75/linux/mm/filemap.c linux/mm/filemap.c
@@ -299,18 +299,20 @@
*/
void __wait_on_page(struct page *page)
{
- struct wait_queue wait = { current, NULL };
+ struct task_struct *tsk = current;
+ struct wait_queue wait;
+ wait.task = tsk;
add_wait_queue(&page->wait, &wait);
repeat:
+ tsk->state = TASK_UNINTERRUPTIBLE;
run_task_queue(&tq_disk);
- current->state = TASK_UNINTERRUPTIBLE;
if (PageLocked(page)) {
schedule();
goto repeat;
}
+ tsk->state = TASK_RUNNING;
remove_wait_queue(&page->wait, &wait);
- current->state = TASK_RUNNING;
}
#if 0
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov