mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
NFSv4.1: use pnfs_generic_pg_test directly by layout driver
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
This commit is contained in:
parent
18ad0a9f2c
commit
89a58e32d9
@ -661,6 +661,9 @@ filelayout_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
|
|||||||
u64 p_stripe, r_stripe;
|
u64 p_stripe, r_stripe;
|
||||||
u32 stripe_unit;
|
u32 stripe_unit;
|
||||||
|
|
||||||
|
if (!pnfs_generic_pg_test(pgio, prev, req))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!pgio->pg_lseg)
|
if (!pgio->pg_lseg)
|
||||||
return 1;
|
return 1;
|
||||||
p_stripe = (u64)prev->wb_index << PAGE_CACHE_SHIFT;
|
p_stripe = (u64)prev->wb_index << PAGE_CACHE_SHIFT;
|
||||||
|
@ -988,18 +988,6 @@ ssize_t objio_write_pagelist(struct objlayout_io_state *ol_state, bool stable)
|
|||||||
return _write_exec(ios);
|
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 = {
|
static struct pnfs_layoutdriver_type objlayout_type = {
|
||||||
.id = LAYOUT_OSD2_OBJECTS,
|
.id = LAYOUT_OSD2_OBJECTS,
|
||||||
.name = "LAYOUT_OSD2_OBJECTS",
|
.name = "LAYOUT_OSD2_OBJECTS",
|
||||||
@ -1013,7 +1001,7 @@ static struct pnfs_layoutdriver_type objlayout_type = {
|
|||||||
|
|
||||||
.read_pagelist = objlayout_read_pagelist,
|
.read_pagelist = objlayout_read_pagelist,
|
||||||
.write_pagelist = objlayout_write_pagelist,
|
.write_pagelist = objlayout_write_pagelist,
|
||||||
.pg_test = objlayout_pg_test,
|
.pg_test = pnfs_generic_pg_test,
|
||||||
|
|
||||||
.free_deviceid_node = objio_free_deviceid_node,
|
.free_deviceid_node = objio_free_deviceid_node,
|
||||||
|
|
||||||
|
@ -1067,12 +1067,17 @@ pnfs_generic_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
|
|||||||
pgio->pg_count,
|
pgio->pg_count,
|
||||||
access_type,
|
access_type,
|
||||||
gfp_flags);
|
gfp_flags);
|
||||||
} else if (pgio->pg_lseg &&
|
return true;
|
||||||
req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset,
|
}
|
||||||
pgio->pg_lseg->pls_range.length))
|
|
||||||
|
if (pgio->pg_lseg &&
|
||||||
|
req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset,
|
||||||
|
pgio->pg_lseg->pls_range.length))
|
||||||
return false;
|
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
|
* Called by non rpc-based layout drivers
|
||||||
|
@ -295,8 +295,10 @@ static inline int pnfs_return_layout(struct inode *ino)
|
|||||||
static inline void pnfs_pageio_init(struct nfs_pageio_descriptor *pgio,
|
static inline void pnfs_pageio_init(struct nfs_pageio_descriptor *pgio,
|
||||||
struct inode *inode)
|
struct inode *inode)
|
||||||
{
|
{
|
||||||
if (NFS_SERVER(inode)->pnfs_curr_ld)
|
struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld;
|
||||||
pgio->pg_test = pnfs_generic_pg_test;
|
|
||||||
|
if (ld)
|
||||||
|
pgio->pg_test = ld->pg_test;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* CONFIG_NFS_V4_1 */
|
#else /* CONFIG_NFS_V4_1 */
|
||||||
|
Loading…
Reference in New Issue
Block a user