diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2007-11-20 02:31:04 +0100 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2008-02-01 22:42:05 +0100 |
commit | deda2faa8e71474c828d8eefc8bc0f19d02062ef (patch) | |
tree | 72344206dd12a189e466cde3b479d6dc5ae09843 | |
parent | nfsd: eliminate final bogus case from setclientid logic (diff) | |
download | linux-deda2faa8e71474c828d8eefc8bc0f19d02062ef.tar.xz linux-deda2faa8e71474c828d8eefc8bc0f19d02062ef.zip |
nfsd: uniquify cl_confirm values
Using a counter instead of the nanoseconds value seems more likely to
produce a unique cl_confirm.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
-rw-r--r-- | fs/nfsd/nfs4state.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 035e70a01027..9f6322e830fa 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -491,15 +491,14 @@ gen_clid(struct nfs4_client *clp) { clp->cl_clientid.cl_id = current_clientid++; } -static void -gen_confirm(struct nfs4_client *clp) { - struct timespec tv; - u32 * p; +static void gen_confirm(struct nfs4_client *clp) +{ + static u32 i; + u32 *p; - tv = CURRENT_TIME; p = (u32 *)clp->cl_confirm.data; - *p++ = tv.tv_sec; - *p++ = tv.tv_nsec; + *p++ = get_seconds(); + *p++ = i++; } static int |