Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89a58e32 authored by Benny Halevy's avatar Benny Halevy Committed by Boaz Harrosh
Browse files

NFSv4.1: use pnfs_generic_pg_test directly by layout driver

parent 18ad0a9f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -661,6 +661,9 @@ filelayout_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
	u64 p_stripe, r_stripe;
	u32 stripe_unit;

	if (!pnfs_generic_pg_test(pgio, prev, req))
		return 0;

	if (!pgio->pg_lseg)
		return 1;
	p_stripe = (u64)prev->wb_index << PAGE_CACHE_SHIFT;
+1 −13
Original line number Diff line number Diff line
@@ -988,18 +988,6 @@ ssize_t objio_write_pagelist(struct objlayout_io_state *ol_state, bool stable)
	return _write_exec(ios);
}

/*
 * objlayout_pg_test(). Called by nfs_can_coalesce_requests()
 *
 * return true iff coalesce page
 */
bool
objlayout_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
		   struct nfs_page *req)
{
	return true;
}

static struct pnfs_layoutdriver_type objlayout_type = {
	.id = LAYOUT_OSD2_OBJECTS,
	.name = "LAYOUT_OSD2_OBJECTS",
@@ -1013,7 +1001,7 @@ static struct pnfs_layoutdriver_type objlayout_type = {

	.read_pagelist           = objlayout_read_pagelist,
	.write_pagelist          = objlayout_write_pagelist,
	.pg_test                 = objlayout_pg_test,
	.pg_test                 = pnfs_generic_pg_test,

	.free_deviceid_node	 = objio_free_deviceid_node,

+9 −4
Original line number Diff line number Diff line
@@ -1067,12 +1067,17 @@ pnfs_generic_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
						   pgio->pg_count,
						   access_type,
						   gfp_flags);
	} else if (pgio->pg_lseg &&
		return true;
	}

	if (pgio->pg_lseg &&
	    req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset,
					 pgio->pg_lseg->pls_range.length))
		return false;
	return NFS_SERVER(pgio->pg_inode)->pnfs_curr_ld->pg_test(pgio, prev, req);

	return true;
}
EXPORT_SYMBOL_GPL(pnfs_generic_pg_test);

/*
 * Called by non rpc-based layout drivers
+4 −2
Original line number Diff line number Diff line
@@ -295,8 +295,10 @@ static inline int pnfs_return_layout(struct inode *ino)
static inline void pnfs_pageio_init(struct nfs_pageio_descriptor *pgio,
				    struct inode *inode)
{
	if (NFS_SERVER(inode)->pnfs_curr_ld)
		pgio->pg_test = pnfs_generic_pg_test;
	struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld;

	if (ld)
		pgio->pg_test = ld->pg_test;
}

#else  /* CONFIG_NFS_V4_1 */