* [PATCH 0/4] NFSv4.1: sp4_mach_cred cleanup (v2)
@ 2013-09-10 22:44 Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 1/4] NFSv4.1: sp4_mach_cred: ask for WRITE and COMMIT Weston Andros Adamson
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Weston Andros Adamson @ 2013-09-10 22:44 UTC (permalink / raw)
To: Trond.Myklebust; +Cc: linux-nfs, Weston Andros Adamson
Version 2 takes a new approach that Trond requested: we rely on the
cl_machine_cred to have a reference held for the life of the nfs_client
structure, so the sp4 stuff doesn't need to do any get/put_rpccred.
There's also two new patches:
- "fix SECINFO* use of put_rpccred" - recent changes (by me!) called
put_rpccred of rpc_message.rpc_cred, but this value can change when
nfs4_state_protect() is called. I searched through the rest of the client
source and couldn't find another place where this happens.
- WARN_ON -> WARN_ON_ONCE - oops.
Weston Andros Adamson (4):
NFSv4.1: sp4_mach_cred: ask for WRITE and COMMIT
NFSv4.1: fix SECINFO* use of put_rpccred
NFSv4.1: sp4_mach_cred: no need to ref count creds
NFSv4.1: sp4_mach_cred: WARN_ON -> WARN_ON_ONCE
fs/nfs/nfs4_fs.h | 10 +++++-----
fs/nfs/nfs4proc.c | 22 ++++++++++++++--------
2 files changed, 19 insertions(+), 13 deletions(-)
--
1.7.12.4 (Apple Git-37)
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/4] NFSv4.1: sp4_mach_cred: ask for WRITE and COMMIT
2013-09-10 22:44 [PATCH 0/4] NFSv4.1: sp4_mach_cred cleanup (v2) Weston Andros Adamson
@ 2013-09-10 22:44 ` Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 2/4] NFSv4.1: fix SECINFO* use of put_rpccred Weston Andros Adamson
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Weston Andros Adamson @ 2013-09-10 22:44 UTC (permalink / raw)
To: Trond.Myklebust; +Cc: linux-nfs, Weston Andros Adamson
Request SP4_MACH_CRED WRITE and COMMIT support in spo_must_allow list --
they're already supported by the client.
Signed-off-by: Weston Andros Adamson <dros@netapp.com>
---
fs/nfs/nfs4proc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 39b6cf2..dc2d27b 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -6151,11 +6151,13 @@ static const struct nfs41_state_protection nfs4_sp4_mach_cred_request = {
},
.allow.u.words = {
[0] = 1 << (OP_CLOSE) |
- 1 << (OP_LOCKU),
+ 1 << (OP_LOCKU) |
+ 1 << (OP_COMMIT),
[1] = 1 << (OP_SECINFO - 32) |
1 << (OP_SECINFO_NO_NAME - 32) |
1 << (OP_TEST_STATEID - 32) |
- 1 << (OP_FREE_STATEID - 32)
+ 1 << (OP_FREE_STATEID - 32) |
+ 1 << (OP_WRITE - 32)
}
};
--
1.7.12.4 (Apple Git-37)
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] NFSv4.1: fix SECINFO* use of put_rpccred
2013-09-10 22:44 [PATCH 0/4] NFSv4.1: sp4_mach_cred cleanup (v2) Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 1/4] NFSv4.1: sp4_mach_cred: ask for WRITE and COMMIT Weston Andros Adamson
@ 2013-09-10 22:44 ` Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 4/4] NFSv4.1: sp4_mach_cred: WARN_ON -> WARN_ON_ONCE Weston Andros Adamson
3 siblings, 0 replies; 8+ messages in thread
From: Weston Andros Adamson @ 2013-09-10 22:44 UTC (permalink / raw)
To: Trond.Myklebust; +Cc: linux-nfs, Weston Andros Adamson
Recent SP4_MACH_CRED changes allows rpc_message.rpc_cred to change,
so keep a separate pointer to the machine cred for put_rpccred.
Signed-off-by: Weston Andros Adamson <dros@netapp.com>
---
fs/nfs/nfs4proc.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index dc2d27b..989bb9d 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -6001,10 +6001,12 @@ static int _nfs4_proc_secinfo(struct inode *dir, const struct qstr *name, struct
.rpc_resp = &res,
};
struct rpc_clnt *clnt = NFS_SERVER(dir)->client;
+ struct rpc_cred *cred = NULL;
if (use_integrity) {
clnt = NFS_SERVER(dir)->nfs_client->cl_rpcclient;
- msg.rpc_cred = nfs4_get_clid_cred(NFS_SERVER(dir)->nfs_client);
+ cred = nfs4_get_clid_cred(NFS_SERVER(dir)->nfs_client);
+ msg.rpc_cred = cred;
}
dprintk("NFS call secinfo %s\n", name->name);
@@ -6016,8 +6018,8 @@ static int _nfs4_proc_secinfo(struct inode *dir, const struct qstr *name, struct
&res.seq_res, 0);
dprintk("NFS reply secinfo: %d\n", status);
- if (msg.rpc_cred)
- put_rpccred(msg.rpc_cred);
+ if (cred)
+ put_rpccred(cred);
return status;
}
@@ -7498,11 +7500,13 @@ _nfs41_proc_secinfo_no_name(struct nfs_server *server, struct nfs_fh *fhandle,
.rpc_resp = &res,
};
struct rpc_clnt *clnt = server->client;
+ struct rpc_cred *cred = NULL;
int status;
if (use_integrity) {
clnt = server->nfs_client->cl_rpcclient;
- msg.rpc_cred = nfs4_get_clid_cred(server->nfs_client);
+ cred = nfs4_get_clid_cred(server->nfs_client);
+ msg.rpc_cred = cred;
}
dprintk("--> %s\n", __func__);
@@ -7510,8 +7514,8 @@ _nfs41_proc_secinfo_no_name(struct nfs_server *server, struct nfs_fh *fhandle,
&res.seq_res, 0);
dprintk("<-- %s status=%d\n", __func__, status);
- if (msg.rpc_cred)
- put_rpccred(msg.rpc_cred);
+ if (cred)
+ put_rpccred(cred);
return status;
}
--
1.7.12.4 (Apple Git-37)
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds
2013-09-10 22:44 [PATCH 0/4] NFSv4.1: sp4_mach_cred cleanup (v2) Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 1/4] NFSv4.1: sp4_mach_cred: ask for WRITE and COMMIT Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 2/4] NFSv4.1: fix SECINFO* use of put_rpccred Weston Andros Adamson
@ 2013-09-10 22:44 ` Weston Andros Adamson
2013-09-11 13:01 ` Anna Schumaker
[not found] ` <CAFX2Jf=kbrS6byZBFOoZ64-rb9tCvUHDPZqkip3cy5K12FzaqQ@mail.gmail.com>
2013-09-10 22:44 ` [PATCH 4/4] NFSv4.1: sp4_mach_cred: WARN_ON -> WARN_ON_ONCE Weston Andros Adamson
3 siblings, 2 replies; 8+ messages in thread
From: Weston Andros Adamson @ 2013-09-10 22:44 UTC (permalink / raw)
To: Trond.Myklebust; +Cc: linux-nfs, Weston Andros Adamson
The cl_machine_cred doesn't need to be reference counted here -
a reference is held is for the lifetime of the struct nfs_client.
Also, no need to put_rpccred the rpc_message.rpc_cred.
Signed-off-by: Weston Andros Adamson <dros@netapp.com>
---
fs/nfs/nfs4_fs.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index f520a11..07a8aa9 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -279,10 +279,10 @@ _nfs4_state_protect(struct nfs_client *clp, unsigned long sp4_mode,
if (test_bit(sp4_mode, &clp->cl_sp4_flags)) {
spin_lock(&clp->cl_lock);
if (clp->cl_machine_cred != NULL)
- newcred = get_rpccred(clp->cl_machine_cred);
+ /* don't call get_rpccred on the machine cred -
+ * a reference will be held for life of clp */
+ newcred = clp->cl_machine_cred;
spin_unlock(&clp->cl_lock);
- if (msg->rpc_cred)
- put_rpccred(msg->rpc_cred);
msg->rpc_cred = newcred;
flavor = clp->cl_rpcclient->cl_auth->au_flavor;
--
1.7.12.4 (Apple Git-37)
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] NFSv4.1: sp4_mach_cred: WARN_ON -> WARN_ON_ONCE
2013-09-10 22:44 [PATCH 0/4] NFSv4.1: sp4_mach_cred cleanup (v2) Weston Andros Adamson
` (2 preceding siblings ...)
2013-09-10 22:44 ` [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds Weston Andros Adamson
@ 2013-09-10 22:44 ` Weston Andros Adamson
3 siblings, 0 replies; 8+ messages in thread
From: Weston Andros Adamson @ 2013-09-10 22:44 UTC (permalink / raw)
To: Trond.Myklebust; +Cc: linux-nfs, Weston Andros Adamson
No need to spam the logs
Signed-off-by: Weston Andros Adamson <dros@netapp.com>
---
fs/nfs/nfs4_fs.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index 07a8aa9..28842ab 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -286,8 +286,8 @@ _nfs4_state_protect(struct nfs_client *clp, unsigned long sp4_mode,
msg->rpc_cred = newcred;
flavor = clp->cl_rpcclient->cl_auth->au_flavor;
- WARN_ON(flavor != RPC_AUTH_GSS_KRB5I &&
- flavor != RPC_AUTH_GSS_KRB5P);
+ WARN_ON_ONCE(flavor != RPC_AUTH_GSS_KRB5I &&
+ flavor != RPC_AUTH_GSS_KRB5P);
*clntp = clp->cl_rpcclient;
return true;
--
1.7.12.4 (Apple Git-37)
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds
2013-09-10 22:44 ` [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds Weston Andros Adamson
@ 2013-09-11 13:01 ` Anna Schumaker
[not found] ` <CAFX2Jf=kbrS6byZBFOoZ64-rb9tCvUHDPZqkip3cy5K12FzaqQ@mail.gmail.com>
1 sibling, 0 replies; 8+ messages in thread
From: Anna Schumaker @ 2013-09-11 13:01 UTC (permalink / raw)
To: Weston Andros Adamson; +Cc: Trond Myklebust, linux-nfs
Do we need to do a get_rpccred() after looking up the machine cred in
nfs_alloc_client()? Where does our guaranteed reference come from?
On Tue, Sep 10, 2013 at 6:44 PM, Weston Andros Adamson <dros@netapp.com> wrote:
> The cl_machine_cred doesn't need to be reference counted here -
> a reference is held is for the lifetime of the struct nfs_client.
> Also, no need to put_rpccred the rpc_message.rpc_cred.
>
> Signed-off-by: Weston Andros Adamson <dros@netapp.com>
> ---
> fs/nfs/nfs4_fs.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
> index f520a11..07a8aa9 100644
> --- a/fs/nfs/nfs4_fs.h
> +++ b/fs/nfs/nfs4_fs.h
> @@ -279,10 +279,10 @@ _nfs4_state_protect(struct nfs_client *clp, unsigned long sp4_mode,
> if (test_bit(sp4_mode, &clp->cl_sp4_flags)) {
> spin_lock(&clp->cl_lock);
> if (clp->cl_machine_cred != NULL)
> - newcred = get_rpccred(clp->cl_machine_cred);
> + /* don't call get_rpccred on the machine cred -
> + * a reference will be held for life of clp */
> + newcred = clp->cl_machine_cred;
> spin_unlock(&clp->cl_lock);
> - if (msg->rpc_cred)
> - put_rpccred(msg->rpc_cred);
> msg->rpc_cred = newcred;
>
> flavor = clp->cl_rpcclient->cl_auth->au_flavor;
> --
> 1.7.12.4 (Apple Git-37)
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds
[not found] ` <CAFX2Jf=kbrS6byZBFOoZ64-rb9tCvUHDPZqkip3cy5K12FzaqQ@mail.gmail.com>
@ 2013-09-11 13:13 ` Myklebust, Trond
2013-09-11 13:27 ` Anna Schumaker
0 siblings, 1 reply; 8+ messages in thread
From: Myklebust, Trond @ 2013-09-11 13:13 UTC (permalink / raw)
To: Anna Schumaker; +Cc: Adamson, Dros, linux-nfs@vger.kernel.org
T24gV2VkLCAyMDEzLTA5LTExIGF0IDA4OjU5IC0wNDAwLCBBbm5hIFNjaHVtYWtlciB3cm90ZToN
Cj4gRG8gd2UgbmVlZCB0byBkbyBhIGdldF9ycGNjcmVkKCkgYWZ0ZXIgbG9va2luZyB1cCB0aGUg
bWFjaGluZSBjcmVkIGluDQo+IG5mc19hbGxvY19jbGllbnQoKT8gIFdoZXJlIGRvZXMgb3VyIGd1
YXJhbnRlZWQgcmVmZXJlbmNlIGNvbWUgZnJvbT8NCg0KU2VlIG15IGNvbW1lbnQgdG8gRHJvcycg
Zmlyc3QgcGF0Y2hzZXQgeWVzdGVyZGF5LiBJbiB0aGUgY2FzZSBvZg0KU1A0X01BQ0hfQ1JFRCwg
d2UgY2Fubm90IGNoYW5nZSB0aGUgbWFjaGluZSBjcmVkZW50aWFsLCBzaW5jZSB0aGUgc3RhdGUN
CnByb3RlY3Rpb24gaXMgY29tcGxldGVseSB0aWVkIHRvIHRoYXQgY3JlZGVudGlhbC4gSW4gZmFj
dCBpZiB5b3UgbG9vayBhdA0KdGhlIGN1cnJlbnQgY29kZSwgd2Ugb25seSBhY3R1YWxseSBmcmVl
IHRoZSBjbF9tYWNoaW5lX2NyZWQgaW4NCm5mc19mcmVlX2NsaWVudCgpLg0KDQpGb3IgdGhhdCBy
ZWFzb24sIGl0IGlzIHNhZmUgdG8gYXNzdW1lIHRoYXQgaXQgaXMgYXZhaWxhYmxlIGZvciB0aGUN
CmR1cmF0aW9uIG9mIHRoZSBSUEMgY2FsbC4gT2YgY291cnNlLCBycGNfdGFza19zZXRfcnBjX21l
c3NhZ2UoKSB3aWxsDQphbHNvIHRha2UgYSByZWZlcmVuY2UsIGJ1dCB0aGF0IHRvbyBpcyByZWR1
bmRhbnQgaW4gdGhpcyBwYXJ0aWN1bGFyDQpjYXNlLg0KDQpDaGVlcnMNCiAgVHJvbmQNCg0KPiBB
bm5hDQo+IA0KPiANCj4gDQo+IE9uIFR1ZSwgU2VwIDEwLCAyMDEzIGF0IDY6NDQgUE0sIFdlc3Rv
biBBbmRyb3MgQWRhbXNvbg0KPiA8ZHJvc0BuZXRhcHAuY29tPiB3cm90ZToNCj4gICAgICAgICBU
aGUgY2xfbWFjaGluZV9jcmVkIGRvZXNuJ3QgbmVlZCB0byBiZSByZWZlcmVuY2UgY291bnRlZCBo
ZXJlDQo+ICAgICAgICAgLQ0KPiAgICAgICAgIGEgcmVmZXJlbmNlIGlzIGhlbGQgaXMgZm9yIHRo
ZSBsaWZldGltZSBvZiB0aGUgc3RydWN0DQo+ICAgICAgICAgbmZzX2NsaWVudC4NCj4gICAgICAg
ICBBbHNvLCBubyBuZWVkIHRvIHB1dF9ycGNjcmVkIHRoZSBycGNfbWVzc2FnZS5ycGNfY3JlZC4N
Cj4gICAgICAgICANCj4gICAgICAgICBTaWduZWQtb2ZmLWJ5OiBXZXN0b24gQW5kcm9zIEFkYW1z
b24gPGRyb3NAbmV0YXBwLmNvbT4NCj4gICAgICAgICAtLS0NCj4gICAgICAgICAgZnMvbmZzL25m
czRfZnMuaCB8IDYgKysrLS0tDQo+ICAgICAgICAgIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlv
bnMoKyksIDMgZGVsZXRpb25zKC0pDQo+ICAgICAgICAgDQo+ICAgICAgICAgZGlmZiAtLWdpdCBh
L2ZzL25mcy9uZnM0X2ZzLmggYi9mcy9uZnMvbmZzNF9mcy5oDQo+ICAgICAgICAgaW5kZXggZjUy
MGExMS4uMDdhOGFhOSAxMDA2NDQNCj4gICAgICAgICAtLS0gYS9mcy9uZnMvbmZzNF9mcy5oDQo+
ICAgICAgICAgKysrIGIvZnMvbmZzL25mczRfZnMuaA0KPiAgICAgICAgIEBAIC0yNzksMTAgKzI3
OSwxMCBAQCBfbmZzNF9zdGF0ZV9wcm90ZWN0KHN0cnVjdCBuZnNfY2xpZW50DQo+ICAgICAgICAg
KmNscCwgdW5zaWduZWQgbG9uZyBzcDRfbW9kZSwNCj4gICAgICAgICAgICAgICAgIGlmICh0ZXN0
X2JpdChzcDRfbW9kZSwgJmNscC0+Y2xfc3A0X2ZsYWdzKSkgew0KPiAgICAgICAgICAgICAgICAg
ICAgICAgICBzcGluX2xvY2soJmNscC0+Y2xfbG9jayk7DQo+ICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjbHAtPmNsX21hY2hpbmVfY3JlZCAhPSBOVUxMKQ0KPiAgICAgICAgIC0gICAgICAg
ICAgICAgICAgICAgICAgIG5ld2NyZWQgPQ0KPiAgICAgICAgIGdldF9ycGNjcmVkKGNscC0+Y2xf
bWFjaGluZV9jcmVkKTsNCj4gICAgICAgICArICAgICAgICAgICAgICAgICAgICAgICAvKiBkb24n
dCBjYWxsIGdldF9ycGNjcmVkIG9uIHRoZQ0KPiAgICAgICAgIG1hY2hpbmUgY3JlZCAtDQo+ICAg
ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICogYSByZWZlcmVuY2Ugd2lsbCBiZSBoZWxk
IGZvciBsaWZlDQo+ICAgICAgICAgb2YgY2xwICovDQo+ICAgICAgICAgKyAgICAgICAgICAgICAg
ICAgICAgICAgbmV3Y3JlZCA9IGNscC0+Y2xfbWFjaGluZV9jcmVkOw0KPiAgICAgICAgICAgICAg
ICAgICAgICAgICBzcGluX3VubG9jaygmY2xwLT5jbF9sb2NrKTsNCj4gICAgICAgICAtICAgICAg
ICAgICAgICAgaWYgKG1zZy0+cnBjX2NyZWQpDQo+ICAgICAgICAgLSAgICAgICAgICAgICAgICAg
ICAgICAgcHV0X3JwY2NyZWQobXNnLT5ycGNfY3JlZCk7DQo+ICAgICAgICAgICAgICAgICAgICAg
ICAgIG1zZy0+cnBjX2NyZWQgPSBuZXdjcmVkOw0KPiAgICAgICAgIA0KPiAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGF2b3IgPQ0KPiAgICAgICAgIGNscC0+Y2xfcnBjY2xpZW50LT5jbF9hdXRo
LT5hdV9mbGF2b3I7DQo+ICAgICAgICAgLS0NCj4gICAgICAgICAxLjcuMTIuNCAoQXBwbGUgR2l0
LTM3KQ0KPiAgICAgICAgIA0KPiAgICAgICAgIC0tDQo+ICAgICAgICAgVG8gdW5zdWJzY3JpYmUg
ZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlDQo+ICAgICAgICAgbGlu
dXgtbmZzIiBpbg0KPiAgICAgICAgIHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9A
dmdlci5rZXJuZWwub3JnDQo+ICAgICAgICAgTW9yZSBtYWpvcmRvbW8gaW5mbyBhdA0KPiAgICAg
ICAgICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwNCj4gDQo+IA0K
DQotLSANClRyb25kIE15a2xlYnVzdA0KTGludXggTkZTIGNsaWVudCBtYWludGFpbmVyDQoNCk5l
dEFwcA0KVHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20NCnd3dy5uZXRhcHAuY29tDQo=
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds
2013-09-11 13:13 ` Myklebust, Trond
@ 2013-09-11 13:27 ` Anna Schumaker
0 siblings, 0 replies; 8+ messages in thread
From: Anna Schumaker @ 2013-09-11 13:27 UTC (permalink / raw)
To: Myklebust, Trond; +Cc: Adamson, Dros, linux-nfs@vger.kernel.org
Okay, thanks! I think I missed that explanation yesterday.
On Wed, Sep 11, 2013 at 9:13 AM, Myklebust, Trond
<Trond.Myklebust@netapp.com> wrote:
> On Wed, 2013-09-11 at 08:59 -0400, Anna Schumaker wrote:
>> Do we need to do a get_rpccred() after looking up the machine cred in
>> nfs_alloc_client()? Where does our guaranteed reference come from?
>
> See my comment to Dros' first patchset yesterday. In the case of
> SP4_MACH_CRED, we cannot change the machine credential, since the state
> protection is completely tied to that credential. In fact if you look at
> the current code, we only actually free the cl_machine_cred in
> nfs_free_client().
>
> For that reason, it is safe to assume that it is available for the
> duration of the RPC call. Of course, rpc_task_set_rpc_message() will
> also take a reference, but that too is redundant in this particular
> case.
>
> Cheers
> Trond
>
>> Anna
>>
>>
>>
>> On Tue, Sep 10, 2013 at 6:44 PM, Weston Andros Adamson
>> <dros@netapp.com> wrote:
>> The cl_machine_cred doesn't need to be reference counted here
>> -
>> a reference is held is for the lifetime of the struct
>> nfs_client.
>> Also, no need to put_rpccred the rpc_message.rpc_cred.
>>
>> Signed-off-by: Weston Andros Adamson <dros@netapp.com>
>> ---
>> fs/nfs/nfs4_fs.h | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
>> index f520a11..07a8aa9 100644
>> --- a/fs/nfs/nfs4_fs.h
>> +++ b/fs/nfs/nfs4_fs.h
>> @@ -279,10 +279,10 @@ _nfs4_state_protect(struct nfs_client
>> *clp, unsigned long sp4_mode,
>> if (test_bit(sp4_mode, &clp->cl_sp4_flags)) {
>> spin_lock(&clp->cl_lock);
>> if (clp->cl_machine_cred != NULL)
>> - newcred =
>> get_rpccred(clp->cl_machine_cred);
>> + /* don't call get_rpccred on the
>> machine cred -
>> + * a reference will be held for life
>> of clp */
>> + newcred = clp->cl_machine_cred;
>> spin_unlock(&clp->cl_lock);
>> - if (msg->rpc_cred)
>> - put_rpccred(msg->rpc_cred);
>> msg->rpc_cred = newcred;
>>
>> flavor =
>> clp->cl_rpcclient->cl_auth->au_flavor;
>> --
>> 1.7.12.4 (Apple Git-37)
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe
>> linux-nfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at
>> http://vger.kernel.org/majordomo-info.html
>>
>>
>
> --
> Trond Myklebust
> Linux NFS client maintainer
>
> NetApp
> Trond.Myklebust@netapp.com
> www.netapp.com
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-09-11 13:27 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-10 22:44 [PATCH 0/4] NFSv4.1: sp4_mach_cred cleanup (v2) Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 1/4] NFSv4.1: sp4_mach_cred: ask for WRITE and COMMIT Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 2/4] NFSv4.1: fix SECINFO* use of put_rpccred Weston Andros Adamson
2013-09-10 22:44 ` [PATCH 3/4] NFSv4.1: sp4_mach_cred: no need to ref count creds Weston Andros Adamson
2013-09-11 13:01 ` Anna Schumaker
[not found] ` <CAFX2Jf=kbrS6byZBFOoZ64-rb9tCvUHDPZqkip3cy5K12FzaqQ@mail.gmail.com>
2013-09-11 13:13 ` Myklebust, Trond
2013-09-11 13:27 ` Anna Schumaker
2013-09-10 22:44 ` [PATCH 4/4] NFSv4.1: sp4_mach_cred: WARN_ON -> WARN_ON_ONCE Weston Andros Adamson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).