diff options
author | Justus Winter <justus@gnupg.org> | 2017-08-22 13:07:54 +0200 |
---|---|---|
committer | Justus Winter <justus@gnupg.org> | 2017-09-12 10:41:35 +0200 |
commit | e08859424e01697fe556e277283e8e1905327ce7 (patch) | |
tree | 93bf0ad8e0af70cffa177c4271a31a5b15d533c8 /libdiskfs/file-set-trans.c | |
parent | 04aaffbd6353e7cec04073783cc8cbd22ac2f675 (diff) | |
download | hurd-e08859424e01697fe556e277283e8e1905327ce7.tar.gz hurd-e08859424e01697fe556e277283e8e1905327ce7.tar.bz2 hurd-e08859424e01697fe556e277283e8e1905327ce7.zip |
libfshelp: Use node instead of name as key.
Previously, libfshelp used the name of an translator as key in the
hash table. This however is flawed, because a translator is bound to
a node, and a node can have zero or more links in the file system.
Use the nodes address (or rather, the address of the transbox embedded
in the node) as key instead.
* libfshelp/fshelp.h (fshelp_set_active_translator): Instead of the
control port, hand the whole transbox to the function.
* libfshelp/translator-list.c (struct translator): New field 'locp'.
(hash): Hash pointer.
(compare): Compare pointer.
(translator_ihash): Use an location pointer.
(fshelp_set_active_translator): Use the address of the transbox as key.
(fshelp_remove_active_translator): Remove using the location pointer.
* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Fix callsite.
* libdiskfs/file-set-trans.c (diskfs_S_file_set_translator): Likewise.
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Likewise.
* libnetfs/file-set-translator.c (netfs_S_file_set_translator):
Likewise.
Diffstat (limited to 'libdiskfs/file-set-trans.c')
-rw-r--r-- | libdiskfs/file-set-trans.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libdiskfs/file-set-trans.c b/libdiskfs/file-set-trans.c index 6a73e23c..de52ba49 100644 --- a/libdiskfs/file-set-trans.c +++ b/libdiskfs/file-set-trans.c @@ -222,7 +222,7 @@ diskfs_S_file_set_translator (struct protid *cred, pthread_mutex_unlock (&np->lock); if (! err && cred->po->path && active_flags & FS_TRANS_SET) - err = fshelp_set_active_translator (&cred->pi, cred->po->path, active); + err = fshelp_set_active_translator (&cred->pi, cred->po->path, &np->transbox); return err; } |