diff options
Diffstat (limited to 'fs/nfs/nfs4proc.c')
| -rw-r--r-- | fs/nfs/nfs4proc.c | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 9d992b0346e3..78936a8f40ab 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
| @@ -50,6 +50,7 @@ | |||
| 50 | #include <linux/module.h> | 50 | #include <linux/module.h> |
| 51 | #include <linux/sunrpc/bc_xprt.h> | 51 | #include <linux/sunrpc/bc_xprt.h> |
| 52 | #include <linux/xattr.h> | 52 | #include <linux/xattr.h> |
| 53 | #include <linux/utsname.h> | ||
| 53 | 54 | ||
| 54 | #include "nfs4_fs.h" | 55 | #include "nfs4_fs.h" |
| 55 | #include "delegation.h" | 56 | #include "delegation.h" |
| @@ -4572,27 +4573,16 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred) | |||
| 4572 | *p = htonl((u32)clp->cl_boot_time.tv_nsec); | 4573 | *p = htonl((u32)clp->cl_boot_time.tv_nsec); |
| 4573 | args.verifier = &verifier; | 4574 | args.verifier = &verifier; |
| 4574 | 4575 | ||
| 4575 | while (1) { | 4576 | args.id_len = scnprintf(args.id, sizeof(args.id), |
| 4576 | args.id_len = scnprintf(args.id, sizeof(args.id), | 4577 | "%s/%s.%s/%u", |
| 4577 | "%s/%s %u", | 4578 | clp->cl_ipaddr, |
| 4578 | clp->cl_ipaddr, | 4579 | init_utsname()->nodename, |
| 4579 | rpc_peeraddr2str(clp->cl_rpcclient, | 4580 | init_utsname()->domainname, |
| 4580 | RPC_DISPLAY_ADDR), | 4581 | clp->cl_rpcclient->cl_auth->au_flavor); |
| 4581 | clp->cl_id_uniquifier); | ||
| 4582 | |||
| 4583 | status = rpc_call_sync(clp->cl_rpcclient, &msg, 0); | ||
| 4584 | |||
| 4585 | if (status != -NFS4ERR_CLID_INUSE) | ||
| 4586 | break; | ||
| 4587 | |||
| 4588 | if (signalled()) | ||
| 4589 | break; | ||
| 4590 | |||
| 4591 | if (++clp->cl_id_uniquifier == 0) | ||
| 4592 | break; | ||
| 4593 | } | ||
| 4594 | 4582 | ||
| 4595 | status = nfs4_check_cl_exchange_flags(clp->cl_exchange_flags); | 4583 | status = rpc_call_sync(clp->cl_rpcclient, &msg, 0); |
| 4584 | if (!status) | ||
| 4585 | status = nfs4_check_cl_exchange_flags(clp->cl_exchange_flags); | ||
| 4596 | dprintk("<-- %s status= %d\n", __func__, status); | 4586 | dprintk("<-- %s status= %d\n", __func__, status); |
| 4597 | return status; | 4587 | return status; |
| 4598 | } | 4588 | } |
