On 7 Oct 2020, at 7:27, Benjamin Coddington wrote:
On 6 Oct 2020, at 20:18, J. Bruce Fields wrote:
On Tue, Oct 06, 2020 at 05:46:11PM -0400, Olga Kornievskaia wrote:
On Tue, Oct 6, 2020 at 3:38 PM Benjamin Coddington
<bcodding@xxxxxxxxxx> wrote:
On 6 Oct 2020, at 11:13, J. Bruce Fields wrote:
Looks like nfs4_init_{non}uniform_client_string() stores it in
cl_owner_id, and I was thinking that meant cl_owner_id would be used
from then on....
But actually, I think it may run that again on recovery, yes, so I
bet
changing the nfs4_unique_id parameter midway like this could cause
bugs
on recovery.
Ah, that's what I thought as well. Thanks for looking closer Olga!
Well, no -- it does indeed continue to use the original cl_owner_id. We
only jump through nfs4_init_uniquifier_client_string() if cl_owner_id is
NULL:
6087 static int
6088 nfs4_init_uniform_client_string(struct nfs_client *clp)
6089 {
6090 size_t len;
6091 char *str;
6092
6093 if (clp->cl_owner_id != NULL)
6094 return 0;
6095
6096 if (nfs4_client_id_uniquifier[0] != '\0')
6097 return nfs4_init_uniquifier_client_string(clp);
6098
Testing proves this out as well for both EXCHANGE_ID and SETCLIENTID.
Is there any precedent for stabilizing module parameters as part of a
supported interface? Maybe this ought to be a mount option, so client
can
set a uniquifier per-mount.
Ben