summaryrefslogtreecommitdiff
path: root/ufs/pager.c
diff options
context:
space:
mode:
authorHurd Maintainers <hurd-maintainers@gnu.org>1994-10-04 22:46:15 +0000
committerHurd Maintainers <hurd-maintainers@gnu.org>1994-10-04 22:46:15 +0000
commit9dd6afbc65092f2d706b124e296ac3d918ee81a6 (patch)
treeacbca9126f6eea13e8c73de5e05c407da7dc33ac /ufs/pager.c
parent687423a245b9571fc1f81bcf76b8b507128d85b0 (diff)
Formerly pager.c.~40~
Diffstat (limited to 'ufs/pager.c')
-rw-r--r--ufs/pager.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/ufs/pager.c b/ufs/pager.c
index 90e5d985..fd148d8d 100644
--- a/ufs/pager.c
+++ b/ufs/pager.c
@@ -117,8 +117,10 @@ pager_read_page (struct user_pager_info *pager,
}
else
{
+#if 0
printf ("Write-locked pagein Object %#x\tOffset %#x\n", pager, page);
fflush (stdout);
+#endif
vm_allocate (mach_task_self (), buf, __vm_page_size, 1);
*writelock = 1;
}
@@ -187,8 +189,10 @@ pager_unlock_page (struct user_pager_info *pager,
/* Problem--where to get cred values for allocation here? */
+#if 0
printf ("Unlock page request, Object %#x\tOffset %#x...", pager, address);
fflush (stdout);
+#endif
if (pager->type == DISK)
return 0;
@@ -216,6 +220,13 @@ pager_unlock_page (struct user_pager_info *pager,
return EIO;
}
+ err = diskfs_catch_exception ();
+ if (err)
+ {
+ rwlock_writer_unlock (&dn->allocptrlock);
+ return EIO;
+ }
+
/* See if we need a triple indirect block; fail if we do. */
assert (indirs[0].offset == -1
|| indirs[1].offset == -1