summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@citi.umich.edu>2007-11-20 02:31:04 +0100
committerJ. Bruce Fields <bfields@citi.umich.edu>2008-02-01 22:42:05 +0100
commitdeda2faa8e71474c828d8eefc8bc0f19d02062ef (patch)
tree72344206dd12a189e466cde3b479d6dc5ae09843 /fs
parentnfsd: eliminate final bogus case from setclientid logic (diff)
downloadlinux-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>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfsd/nfs4state.c13
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