diff options
author | Flavio Cruz <flaviocruz@gmail.com> | 2016-03-15 04:50:02 -0400 |
---|---|---|
committer | Justus Winter <justus@gnupg.org> | 2016-03-21 19:45:11 +0100 |
commit | 5eef605eb523e4148ccd22578327492178cfd0c4 (patch) | |
tree | aab9f03896e9acec97d99b5617bf7792f6022f0d /hostmux | |
parent | 0da2914ac9d9321cca2d402b2c505881e436c725 (diff) |
netfs: Remove global reference count lock.
* libnetfs/drop-node.c: Remove use of netfs_node_refcnt_lock.
* libnetfs/init-init.c: Remove netfs_node_refcnt_lock.
* libnetfs/make-node.c: Initialize refcounts in refcounts_init.
* libnetfs/netfs.h: Use refcounts_t for tracking node references. Remove
netfs_node_refcnt_lock. Add netfs_nref_light, netfs_nrele_light and
handler netfs_try_dropping_softrefs. Adjust comments.
* libnetfs/nput.c: Use refcounts_t. Call netfs_try_dropping_softrefs to
remove any soft reference that the translator might have acquired
during the lifetime of the node. Implement empty
netfs_try_dropping_softrefs.
* libnetfs/nref.c: Implement netfs_nref_light.
* libnetfs/nrele.c: Use refcounts_t and netfs_try_dropping_softrefs.
Implement netfs_nrele_light.
* ftpfs/dir.c: Use netfs_nref without locking the old
netfs_node_refcnt_lock.
* ftpfs/node.c: Likewise.
* usermux/mux.c: Use netfs_nref to increase hard references of the node.
* hostmux/mux.c: Use netfs_nref to increase hard references of the node.
* trans/fakeroot.c (new_node): Use a light reference when storing a node in the
hash table.
* trans/fakeroot.c (netfs_try_dropping_softrefs): Implement
netfs_try_dropping_softrefs to remove the node from the hash table.
* trans/fakeroot.c (netfs_node_norefs): Remove code to remove the node
from the hash table.
* trans/fakeroot.c (netfs_S_dir_lookup): Simplify lookup code since we
don't need to lock netfs_node_refcnt_lock anymore.
* procfs/netfs.c: Remove use of netfs_node_refcnt_lock.
* nfs/cache.c: Add mutex to handle exclusive access to nodehash. This
replaces the use of netfs_node_refcnt_lock.
* nfs/cache.c (lookup_handle): Use nodehash_ihash_lock when accessing
nodehash. Use netfs_nref_light to add one soft reference to the node
just added to nodehash.
* nfs/cache.c (netfs_node_norefs): Use netfs_nref. Don't use
netfs_node_refcnt_lock and don't remove the node from nodehash here.
* nfs/cache.c (netfs_try_dropping_softrefs): Drop the light reference
when the node has no more hard references.
* nfs/cache.c (recache_handle): Use nodehash_ihash_lock instead.
* nfs/ops.c (netds_attempt_unlink): Use refcounts_references.
* console/console.c (netfs_node_norefs): Use a soft reference to store
a node in dir_node, cons_node, disp_node, inp_node.
* console/console.c (netfs_try_dropping_softrefs): When dropping all
soft references remove node pointer from the fields above.
Diffstat (limited to 'hostmux')
-rw-r--r-- | hostmux/mux.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/hostmux/mux.c b/hostmux/mux.c index 81d3961f..ddca89d1 100644 --- a/hostmux/mux.c +++ b/hostmux/mux.c @@ -240,10 +240,8 @@ lookup_cached (struct hostmux *mux, const char *host, int purge, if (strcasecmp (host, nm->name) == 0) { - pthread_spin_lock (&netfs_node_refcnt_lock); - if (nm->node) - nm->node->references++; - pthread_spin_unlock (&netfs_node_refcnt_lock); + if (nm->node) + netfs_nref (nm->node); if (nm->node) { |