diff options
-rw-r--r-- | ufs/pager.c | 11 |
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 |