Benjamin Coddington <bcodding@xxxxxxxxxx> writes: > On 17 Oct 2017, at 14:19, Jeff Layton wrote: > >> Also we now have to take the st_mutex in nfsd4_find_existing_open, just to >> check sc_type. Neither of those are probably unreasonable, it's just >> messier than I'd like. > > It is indeed messy.. no argument. I'll spin up your suggestion to unhash > the stateid before updating and take it for a ride and let you know the > results. Thanks for looking at this. I threw this against a quick lockdep run and didn't see anything that surprised me. I think we developed a harmless warning in nfsd4_process_open2() a ways back? diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 94ef63a10146..87535f2688be 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -64,6 +64,9 @@ static const stateid_t currentstateid = { .si_generation = 1, }; +static const stateid_t invalidstateid = { + .si_generation = U32_MAX, +}; static u64 current_sessionid = 1; @@ -5362,11 +5365,11 @@ static void nfsd4_close_open_stateid(struct nfs4_ol_stateid *s) nfsd4_bump_seqid(cstate, status); if (status) goto out; - nfs4_inc_and_copy_stateid(&close->cl_stateid, &stp->st_stid); - mutex_unlock(&stp->st_mutex); + memcpy(&close->cl_stateid, &invalidstateid, sizeof(stateid_t)); nfsd4_close_open_stateid(stp); + mutex_unlock(&stp->st_mutex); /* put reference from nfs4_preprocess_seqid_op */ nfs4_put_stid(&stp->st_stid); out: -- 1.8.3.1 -- Andrew W. Elble aweits@xxxxxxxxxxxxxxxxxx Infrastructure Engineer, Communications Technical Lead Rochester Institute of Technology PGP: BFAD 8461 4CCF DC95 DA2C B0EB 965B 082E 863E C912 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html