NFSv4.1: use pnfs_generic_pg_test directly by layout driver
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
This commit is contained in:
Родитель
18ad0a9f2c
Коммит
89a58e32d9
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
||||
|
|
|
@ -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 &&
|
||||
req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset,
|
||||
pgio->pg_lseg->pls_range.length))
|
||||
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
|
||||
|
|
|
@ -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 */
|
||||
|
|
Загрузка…
Ссылка в новой задаче