On Thu, 19 Sep 2024, Steven Price wrote: > On 19/09/2024 02:29, NeilBrown wrote: > > On Wed, 18 Sep 2024, Steven Price wrote: > >> Hi Neil, > >> > >> (Dropping the list/others due to the attachment) > > > > (re-adding others now - thanks for the attachment). > > > >> > >> Attached, this is booting a kernel compiled from 00fd839ca761 ("nfs: > >> simplify and guarantee owner uniqueness.") which uses an NFS root with a > >> Debian bullseye userspace. > > > > This shows that the owner_id was always different - or almost always. > > Once it repeated we got an error because the seqid kept increasing. > > This is because the xdr encoding is broken. > > > > Please apply this incremental patch and confirm that it works now. > > Thanks, I've tested the below and I don't see NFS errors any more. > > Tested-by: Steven Price <steven.price@xxxxxxx> Thanks Steve. Anna: could you please squash this fix in to the commit? Jon: could you please confirm that this fixes your problem too. Thanks, NeilBrown diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index 1aaf908acc5d..88bcbcba1381 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -1429,7 +1429,7 @@ static inline void encode_openhdr(struct xdr_stream *xdr, const struct nfs_opena *p++ = cpu_to_be32(28); p = xdr_encode_opaque_fixed(p, "open id:", 8); *p++ = cpu_to_be32(arg->server->s_dev); - xdr_encode_hyper(p, arg->id.uniquifier); + p = xdr_encode_hyper(p, arg->id.uniquifier); xdr_encode_hyper(p, arg->id.create_time); }