From 8451d1f3788fbc0c8f00a178dc3618aaa3944c00 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Sat, 31 May 2014 08:58:09 +0200 Subject: [PATCH 5/8] isofs: use a hard reference for file pagers When a file pager is created, a reference is added to the associated struct node. Previously, a weak reference was used. A weak refeference requires that we might give it up on request. There is no such mechanism here. Instead, we give it up when the pager is destroyed. * isofs/pager.c (pager_clear_user_data): Use a hard reference instead. (diskfs_get_filemap): Likewise. --- isofs/pager.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/isofs/pager.c b/isofs/pager.c index d72a514..7753c85 100644 --- a/isofs/pager.c +++ b/isofs/pager.c @@ -125,7 +125,7 @@ pager_clear_user_data (struct user_pager_info *upi) if (upi->np->dn->fileinfo == upi) upi->np->dn->fileinfo = 0; pthread_spin_unlock (&node2pagelock); - diskfs_nrele_light (upi->np); + diskfs_nrele (upi->np); } free (upi); } @@ -177,12 +177,12 @@ diskfs_get_filemap (struct node *np, vm_prot_t prot) upi = malloc (sizeof (struct user_pager_info)); upi->type = FILE_DATA; upi->np = np; - diskfs_nref_light (np); + diskfs_nref (np); upi->p = pager_create (upi, pager_bucket, 1, MEMORY_OBJECT_COPY_DELAY, 0); if (upi->p == 0) { - diskfs_nrele_light (np); + diskfs_nrele (np); free (upi); pthread_spin_unlock (&node2pagelock); return MACH_PORT_NULL; -- 2.0.0.rc2