> On Oct 7, 2020, at 8:55 AM, Benjamin Coddington <bcodding@xxxxxxxxxx> wrote: > > 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. The protocol is designed as one client-ID per client. FreeBSD is the only client I know of that uses one client-ID per mount, fwiw. You are suggesting each mount point would have its own lease. There would likely be deeper implementation changes needed than just specifying a unique client-ID for each mount point. -- Chuck Lever