summaryrefslogtreecommitdiff
path: root/nfs/name-cache.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <marcus@gnu.org>2001-01-30 00:38:45 +0000
committerMarcus Brinkmann <marcus@gnu.org>2001-01-30 00:38:45 +0000
commit51fec467c4b771db8ffc6a10a07dbf781a905482 (patch)
treebc6874275df06dce99b6efa911a21dce0c76a408 /nfs/name-cache.c
parent7e4eb0479fbf73dccfc342efc9bca7322135f6f9 (diff)
2000-12-26 Neal H Walfield <neal@cs.uml.edu>
* cache.c: Change cache/hash table size to 509, a prime. Use memcpy/memcmp not bcopy/bcmp. Verify return value from malloc and check the result of rpc transaction _and_ do not act if failed. * main.c: Correct the wording of the help messages. Do not bother initializing global variable to 0. Use memcpy/memcmp not bcopy/bcmp. Verify return value from malloc and check the result of rpc transaction _and_ do not act if failed. * mount.c: Check return values of initialize_rpc. Use memcpy/memcmp not bcopy/bcmp. Verify return value from malloc and strdup. Correct comments. (mount_root): Check result of connect. Handle errors consistently. Reverse loops that are if (! c) {} else when appropriate. * mount.h: Protect header with #ifdef. * name-cache.c: Correct dangerous NPARTIALS macro. Use memcpy/memcmp not bcopy/bcmp. (find_cache): Use PARTIAL_THRESH, not the constant. * nfs-spec.h: Protect header with #ifdef. * nfs.c: Use memcpy/memcmp not bcopy/bcmp. * nfs.h: Likewise. * ops.c (netfs_attempt_mkdir): Check return values of initialize_rpc. Use memcpy/memcmp not bcopy/bcmp. Verify return value from malloc and check the result of rpc transaction _and_ do not act if failed. (netfs_attempt_link): Unlock the directory before the rpc transaction. Check the result of rpc transaction _and_ do not act if failed. * pager.c: Remove, we do not use it. * rpc.c: Use memcpy/memcmp not bcopy/bcmp. Verify return value from malloc and check the result of rpc transaction _and_ do not act if failed. (initialize_rpc): Use AUTH_NONE, not the depreciated AUTH_NULL. Return sane values on failure. (generate_xid): Make inline. (link_rpc): New function. Complements unlink_rpc. (conduct_rpc): Use link_rpc. (rpc_receive_thread): Reroll to a single loop.
Diffstat (limited to 'nfs/name-cache.c')
-rw-r--r--nfs/name-cache.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/nfs/name-cache.c b/nfs/name-cache.c
index bc5babe6..845cda30 100644
--- a/nfs/name-cache.c
+++ b/nfs/name-cache.c
@@ -24,7 +24,7 @@
#include <cacheq.h>
-/* Maximum number of names to cache at once */
+/* Maximum number of names to cache at any given time */
#define MAXCACHE 200
/* Maximum length of file name we bother caching */
@@ -73,7 +73,7 @@ static struct stats
} statistics;
#define PARTIAL_THRESH 100
-#define NPARTIALS MAXCACHE / PARTIAL_THRESH
+#define NPARTIALS (MAXCACHE / PARTIAL_THRESH)
struct stats partial_stats [NPARTIALS];
@@ -93,19 +93,19 @@ find_cache (char *dir, size_t len, const char *name, size_t name_len)
if (c->name_len == name_len
&& c->dir_cache_len == len
&& c->name[0] == name[0]
- && bcmp (c->dir_cache_fh, dir, len) == 0
+ && memcmp (c->dir_cache_fh, dir, len) == 0
&& strcmp (c->name, name) == 0)
{
- c->stati = i / 100;
+ c->stati = i / PARTIAL_THRESH;
return c;
}
return 0;
}
-/* Node NP has just been found in DIR with NAME. If NP is null, that
- means that this name has been confirmed as absent in the directory.
- DIR is the fhandle of the directory; its length is LEN. */
+/* Node NP has just been found in DIR with NAME. If NP is null, this
+ name has been confirmed as absent in the directory. DIR is the
+ fhandle of the directory and LEN is its length. */
void
enter_lookup_cache (char *dir, size_t len, struct node *np, char *name)
{
@@ -127,7 +127,7 @@ enter_lookup_cache (char *dir, size_t len, struct node *np, char *name)
c = find_cache (dir, len, name, name_len) ?: lookup_cache.lru;
/* Fill C with the new entry. */
- bcopy (dir, c->dir_cache_fh, len);
+ memcpy (c->dir_cache_fh, dir, len);
c->dir_cache_len = len;
if (c->np)
netfs_nrele (c->np);
@@ -158,7 +158,8 @@ purge_lookup_cache (struct node *dp, char *name, size_t namelen)
if (c->name_len == namelen
&& c->dir_cache_len == dp->nn->handle.size
- && bcmp (c->dir_cache_fh, dp->nn->handle.data, c->dir_cache_len) == 0
+ && memcmp (c->dir_cache_fh, dp->nn->handle.data,
+ c->dir_cache_len) == 0
&& strcmp (c->name, name) == 0)
{
if (c->np)
@@ -237,11 +238,12 @@ register_miss ()
-/* Scan the cache looking for NAME inside DIR. If we don't know
- anything entry at all, then return 0. If the entry is confirmed to
- not exist, then return -1. Otherwise, return NP for the entry, with
- a newly allocated reference. For any return value but 0, unlock
- DP before returning. */
+/* Scan the cache looking for NAME inside DIR. If we know nothing
+ about the entry, then return 0. If the entry is confirmed to not
+ exist, then return -1. Otherwise, return NP for the entry, with
+ a newly allocated reference. For all return values other than 0,
+ unlock DIR->LOCK before returning. For positive hits, lock the
+ returned node. */
struct node *
check_lookup_cache (struct node *dir, char *name)
{