From: Trond Myklebust Date: Sat, 29 Apr 2017 14:27:18 +0000 (-0400) Subject: pNFS: Don't send COMMITs to the DSes if the server invalidated our layout X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=722f0b891198ab1f5f7b020e32c989a517ed0577;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git 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 --- diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c index dc4111d08a27..7697ac0ff81a 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;