Commit 0cb1f6df authored by Trond Myklebust's avatar Trond Myklebust
Browse files

pNFS: Support per-layout segment commits in pnfs_generic_commit_pagelist()



Add support for scanning the full list of per-layout segment commit
arrays to pnfs_generic_commit_pagelist().

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent fce9ed03
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -322,6 +322,20 @@ out_error:
	return nreq;
}

static unsigned int
pnfs_alloc_ds_commits_list(struct list_head *list,
			   struct pnfs_ds_commit_info *fl_cinfo,
			   struct nfs_commit_info *cinfo)
{
	struct pnfs_commit_array *array;
	unsigned int ret = 0;

	list_for_each_entry(array, &fl_cinfo->commits, cinfo_list)
		ret += pnfs_bucket_alloc_ds_commits(list, array->buckets,
				array->nbuckets, cinfo);
	return ret;
}

/* This follows nfs_commit_list pretty closely */
int
pnfs_generic_commit_pagelist(struct inode *inode, struct list_head *mds_pages,
@@ -345,6 +359,8 @@ pnfs_generic_commit_pagelist(struct inode *inode, struct list_head *mds_pages,

	nreq += pnfs_bucket_alloc_ds_commits(&list, fl_cinfo->buckets,
			fl_cinfo->nbuckets, cinfo);

	nreq += pnfs_alloc_ds_commits_list(&list, fl_cinfo, cinfo);
	if (nreq == 0)
		goto out;