[PATCH] pNFS: Fix EBUSY check in pnfs_layout_need_return

[email protected]
Newsgroups org.kernel.vger.linux-nfs,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
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)
-- 
2.34.1
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.