diff options
Diffstat (limited to 'debian/patches/0011-trans-fakeroot-use-the-indirection-mechanism-for-loc.patch')
-rw-r--r-- | debian/patches/0011-trans-fakeroot-use-the-indirection-mechanism-for-loc.patch | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/debian/patches/0011-trans-fakeroot-use-the-indirection-mechanism-for-loc.patch b/debian/patches/0011-trans-fakeroot-use-the-indirection-mechanism-for-loc.patch deleted file mode 100644 index b9176242..00000000 --- a/debian/patches/0011-trans-fakeroot-use-the-indirection-mechanism-for-loc.patch +++ /dev/null @@ -1,117 +0,0 @@ -From bf7c83d9039619d40ef4f4457a6ea4c2a7e5e7af Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Fri, 16 May 2014 12:42:01 +0200 -Subject: [PATCH 11/20] trans/fakeroot: use the indirection mechanism for locp - values - -Previously, fakeroot stored struct netnode objects in the hash table, -and kept a pointer to the associated struct node object to get that -object. - -Store the struct node objects instead using the new indirection -mechanism in libihash. - -* trans/fakeroot.c (struct netnode): Drop field np. -(idport_ihash): Use HURD_IHASH_INITIALIZER_INDIRECT. -(new_node): Store struct node objects in the hash table. -(set_faked_attribute): Adjust accordingly. -(netfs_S_dir_lookup): Likewise. ---- - trans/fakeroot.c | 34 +++++++++++++++------------------- - 1 file changed, 15 insertions(+), 19 deletions(-) - -diff --git a/trans/fakeroot.c b/trans/fakeroot.c -index c4b95de..ca1481b 100644 ---- a/trans/fakeroot.c -+++ b/trans/fakeroot.c -@@ -47,7 +47,6 @@ static auth_t fakeroot_auth_port; - - struct netnode - { -- struct node *np; /* our node */ - hurd_ihash_locp_t idport_locp;/* easy removal pointer in idport ihash */ - mach_port_t idport; /* port from io_identity */ - int openmodes; /* O_READ | O_WRITE | O_EXEC */ -@@ -64,7 +63,9 @@ struct netnode - - pthread_mutex_t idport_ihash_lock = PTHREAD_MUTEX_INITIALIZER; - struct hurd_ihash idport_ihash -- = HURD_IHASH_INITIALIZER (offsetof (struct netnode, idport_locp)); -+ = HURD_IHASH_INITIALIZER_INDIRECT ( -+ offsetof (struct node, nn), -+ offsetof (struct netnode, idport_locp)); - - - /* Make a new virtual node. Always consumes the ports. If -@@ -102,25 +103,24 @@ new_node (file_t file, mach_port_t idport, int locked, int openmodes, - } - } - -- if (!locked) -- pthread_mutex_lock (&idport_ihash_lock); -- err = hurd_ihash_add (&idport_ihash, nn->idport, nn); -- if (err) -- goto lose; -- -- *np = nn->np = netfs_make_node (nn); -+ *np = netfs_make_node (nn); - if (*np == 0) - { - err = ENOMEM; -- goto lose_hash; -+ goto lose; - } - -+ if (!locked) -+ pthread_mutex_lock (&idport_ihash_lock); -+ err = hurd_ihash_add (&idport_ihash, nn->idport, *np); -+ if (err) -+ goto lose_node; - pthread_mutex_lock (&(*np)->lock); - pthread_mutex_unlock (&idport_ihash_lock); - return 0; - -- lose_hash: -- hurd_ihash_locp_remove (&idport_ihash, nn->idport_locp); -+ lose_node: -+ free (*np); - lose: - pthread_mutex_unlock (&idport_ihash_lock); - mach_port_deallocate (mach_task_self (), nn->idport); -@@ -161,8 +161,6 @@ set_faked_attribute (struct node *np, unsigned int faked) - void - netfs_node_norefs (struct node *np) - { -- assert (np->nn->np == np); -- - pthread_mutex_unlock (&np->lock); - pthread_spin_unlock (&netfs_node_refcnt_lock); - -@@ -358,13 +356,12 @@ netfs_S_dir_lookup (struct protid *diruser, - refcount lock so that, if a node is found, its reference counter cannot - drop to 0 before we get our own reference. */ - pthread_spin_lock (&netfs_node_refcnt_lock); -- struct netnode *nn = hurd_ihash_find (&idport_ihash, idport); -- if (nn != NULL) -+ np = hurd_ihash_find (&idport_ihash, idport); -+ if (np != NULL) - { -- assert (nn->np->nn == nn); - /* We already know about this node. */ - -- if (nn->np->references == 0) -+ if (np->references == 0) - { - /* But it might be in the process of being released. If so, - unlock the hash table to give the node a chance to actually -@@ -376,7 +373,6 @@ netfs_S_dir_lookup (struct protid *diruser, - } - - /* Otherwise, reference it right away. */ -- np = nn->np; - np->references++; - pthread_spin_unlock (&netfs_node_refcnt_lock); - --- -2.0.0.rc0 - |