On Mon, 2025-09-08 at 17:35 +0000, Jonathan Curley wrote: > Typo in ff_lseg_match_mirrors makes the diff ineffective. This > results > in merge happening all the time. Merge happening all the time is > problematic because it marks lsegs invalid. Marking lsegs invalid > causes all outstanding IO to get restarted with EAGAIN and > connections > to get closed. > > Closing connections constantly triggers race conditions in the RDMA > implementation... > > Fixes: 660d1eb22301c ("pNFS/flexfile: Don't merge layout segments if > the mirrors don't match") > Signed-off-by: Jonathan Curley <jcurley@xxxxxxxxxxxxxxx> > --- > fs/nfs/flexfilelayout/flexfilelayout.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c > b/fs/nfs/flexfilelayout/flexfilelayout.c > index 6d9aea16ef44..addf4357610e 100644 > --- a/fs/nfs/flexfilelayout/flexfilelayout.c > +++ b/fs/nfs/flexfilelayout/flexfilelayout.c > @@ -334,7 +334,7 @@ ff_lseg_match_mirrors(struct pnfs_layout_segment > *l1, > struct pnfs_layout_segment *l2) > { > const struct nfs4_ff_layout_segment *fl1 = > FF_LAYOUT_LSEG(l1); > - const struct nfs4_ff_layout_segment *fl2 = > FF_LAYOUT_LSEG(l1); > + const struct nfs4_ff_layout_segment *fl2 = > FF_LAYOUT_LSEG(l2); > u32 i; > > if (fl1->mirror_array_cnt != fl2->mirror_array_cnt) D'oh! Well spotted... That definitely deserves a fixes tag. Thanks! Trond -- Trond Myklebust Linux NFS client maintainer, Hammerspace trondmy@xxxxxxxxxx, trond.myklebust@xxxxxxxxxxxxxxx