Commit ee626a77 authored by J. Bruce Fields's avatar J. Bruce Fields

nfsd4: better stateid hashing

First, we shouldn't care here about the structure of the opaque part of
the stateid.  Second, this hash is really dumb.  (I'm not sure the
replacement is much better, though--to look at it another patch.)
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 69064a27
...@@ -168,9 +168,9 @@ static unsigned int file_hashval(struct inode *ino) ...@@ -168,9 +168,9 @@ static unsigned int file_hashval(struct inode *ino)
return hash_ptr(ino, FILE_HASH_BITS); return hash_ptr(ino, FILE_HASH_BITS);
} }
static unsigned int stateid_hashval(u32 owner_id, u32 file_id) static unsigned int stateid_hashval(stateid_t *s)
{ {
return (owner_id + file_id) & STATEID_HASH_MASK; return opaque_hashval(&s->si_opaque, sizeof(stateid_opaque_t)) & STATEID_HASH_MASK;
} }
static struct list_head file_hashtbl[FILE_HASH_SIZE]; static struct list_head file_hashtbl[FILE_HASH_SIZE];
...@@ -221,7 +221,7 @@ static inline void hash_stid(struct nfs4_stid *stid) ...@@ -221,7 +221,7 @@ static inline void hash_stid(struct nfs4_stid *stid)
stateid_t *s = &stid->sc_stateid; stateid_t *s = &stid->sc_stateid;
unsigned int hashval; unsigned int hashval;
hashval = stateid_hashval(s->si_stateownerid, s->si_fileid); hashval = stateid_hashval(s);
list_add(&stid->sc_hash, &stateid_hashtbl[hashval]); list_add(&stid->sc_hash, &stateid_hashtbl[hashval]);
} }
...@@ -1083,7 +1083,7 @@ static struct nfs4_stid *find_stateid(stateid_t *t) ...@@ -1083,7 +1083,7 @@ static struct nfs4_stid *find_stateid(stateid_t *t)
struct nfs4_stid *s; struct nfs4_stid *s;
unsigned int hashval; unsigned int hashval;
hashval = stateid_hashval(t->si_stateownerid, t->si_fileid); hashval = stateid_hashval(t);
list_for_each_entry(s, &stateid_hashtbl[hashval], sc_hash) list_for_each_entry(s, &stateid_hashtbl[hashval], sc_hash)
if (same_stateid(&s->sc_stateid, t)) if (same_stateid(&s->sc_stateid, t))
return s; return s;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment