Re: [PATCH] pNFS: Fix EBUSY check in pnfs_layout_need_return

Trond Myklebust <[email protected]>
Newsgroups gmane.linux.nfs,gmane.linux.kernel
Message-ID <[email protected]>
On Mon, 2026-08-17 at 15:40 +0000, [email protected] wrote:
> From: Tim Menninger <[email protected]>
> 
> Commit 41d0a8ead9720 ("NFSv4/pnfs: Add support for the
> PNFS_LAYOUT_FILE_BULK_RETURN flag") changed pnfs_layout_need_return()
> to
> check whether pnfs_mark_layout_stateid_return() returns -EBUSY.
> 
> However, the new check compares the return value against EBUSY rather
> than -EBUSY. Since pnfs_mark_layout_stateid_return() returns negative
> errno values, the -EBUSY case is never detected.
> 
> But pnfs_layout_need_return() calls pnfs_mark_layout_stateid_return()
> calls pnfs_mark_matching_lsegs_return(), which returns 0 if a
> layoutreturn needs to be scheduled.
> 
> Fix the comparison in pnfs_layout_need_return() to check for 0, i.e.
> a
> layoutreturn needs to be scheduled.
> 
> Fixes: 41d0a8ead9720 ("NFSv4/pnfs: Add support for the
> PNFS_LAYOUT_FILE_BULK_RETURN flag")
> Signed-off-by: Tim Menninger <[email protected]>
> ---
>  fs/nfs/pnfs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> index 9f32dd7c4c63..fb141cef4d54 100644
> --- a/fs/nfs/pnfs.c
> +++ b/fs/nfs/pnfs.c
> @@ -1389,7 +1389,7 @@ pnfs_layout_need_return(struct pnfs_layout_hdr
> *lo)
>  		return false;
>  	return pnfs_mark_layout_stateid_return(lo, &lo-
> >plh_return_segs,
>  					       lo-
> >plh_return_iomode,
> -					       lo->plh_return_seq)
> != EBUSY;
> +					       lo->plh_return_seq)
> == 0;
>  }
>  
>  static void pnfs_layoutreturn_before_put_layout_hdr(struct
> pnfs_layout_hdr *lo)

This breaks the ability of the client to respond to layout recalls even
when it does not think it holds a layout. That's a situation that can
occur when using soft or softerr mounts.

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
[email protected], trond.myklebust-F/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.