From 2eb9f1a9d80a06e79466fff76d714a4706242752 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sat, 29 Apr 2017 10:27:18 -0400 Subject: [PATCH] pNFS: Don't send COMMITs to the DSes if the server invalidated our layout If the layout was invalidated, then assume we should requeue all the pending writes for the DS in question. Signed-off-by: Trond Myklebust --- fs/nfs/pnfs_nfs.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c index dc4111d08a275..7697ac0ff81ac 100644 --- a/fs/nfs/pnfs_nfs.c +++ b/fs/nfs/pnfs_nfs.c @@ -217,6 +217,13 @@ pnfs_generic_alloc_ds_commits(struct nfs_commit_info *cinfo, for (i = 0; i < fl_cinfo->nbuckets; i++, bucket++) { if (list_empty(&bucket->committing)) continue; + /* + * If the layout segment is invalid, then let + * pnfs_generic_retry_commit() clean up the bucket. + */ + if (!pnfs_is_valid_lseg(bucket->clseg) && + !test_bit(NFS_LSEG_LAYOUTRETURN, &bucket->clseg->pls_flags)) + continue; data = nfs_commitdata_alloc(false); if (!data) break; -- 2.39.5