diff options
| -rw-r--r-- | fs/nfs/nfs4filelayout.c | 3 | ||||
| -rw-r--r-- | fs/nfs/objlayout/objio_osd.c | 14 | ||||
| -rw-r--r-- | fs/nfs/pnfs.c | 13 | ||||
| -rw-r--r-- | fs/nfs/pnfs.h | 6 |
4 files changed, 17 insertions, 19 deletions
diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c index 24f05720daf1..426908809c97 100644 --- a/fs/nfs/nfs4filelayout.c +++ b/fs/nfs/nfs4filelayout.c | |||
| @@ -661,6 +661,9 @@ filelayout_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, | |||
| 661 | u64 p_stripe, r_stripe; | 661 | u64 p_stripe, r_stripe; |
| 662 | u32 stripe_unit; | 662 | u32 stripe_unit; |
| 663 | 663 | ||
| 664 | if (!pnfs_generic_pg_test(pgio, prev, req)) | ||
| 665 | return 0; | ||
| 666 | |||
| 664 | if (!pgio->pg_lseg) | 667 | if (!pgio->pg_lseg) |
| 665 | return 1; | 668 | return 1; |
| 666 | p_stripe = (u64)prev->wb_index << PAGE_CACHE_SHIFT; | 669 | p_stripe = (u64)prev->wb_index << PAGE_CACHE_SHIFT; |
diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c index 8c2bd3eb8e8d..3b10d09e5210 100644 --- a/fs/nfs/objlayout/objio_osd.c +++ b/fs/nfs/objlayout/objio_osd.c | |||
| @@ -988,18 +988,6 @@ ssize_t objio_write_pagelist(struct objlayout_io_state *ol_state, bool stable) | |||
| 988 | return _write_exec(ios); | 988 | return _write_exec(ios); |
| 989 | } | 989 | } |
| 990 | 990 | ||
| 991 | /* | ||
| 992 | * objlayout_pg_test(). Called by nfs_can_coalesce_requests() | ||
| 993 | * | ||
| 994 | * return true iff coalesce page | ||
| 995 | */ | ||
| 996 | bool | ||
| 997 | objlayout_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, | ||
| 998 | struct nfs_page *req) | ||
| 999 | { | ||
| 1000 | return true; | ||
| 1001 | } | ||
| 1002 | |||
| 1003 | static struct pnfs_layoutdriver_type objlayout_type = { | 991 | static struct pnfs_layoutdriver_type objlayout_type = { |
| 1004 | .id = LAYOUT_OSD2_OBJECTS, | 992 | .id = LAYOUT_OSD2_OBJECTS, |
| 1005 | .name = "LAYOUT_OSD2_OBJECTS", | 993 | .name = "LAYOUT_OSD2_OBJECTS", |
| @@ -1013,7 +1001,7 @@ static struct pnfs_layoutdriver_type objlayout_type = { | |||
| 1013 | 1001 | ||
| 1014 | .read_pagelist = objlayout_read_pagelist, | 1002 | .read_pagelist = objlayout_read_pagelist, |
| 1015 | .write_pagelist = objlayout_write_pagelist, | 1003 | .write_pagelist = objlayout_write_pagelist, |
| 1016 | .pg_test = objlayout_pg_test, | 1004 | .pg_test = pnfs_generic_pg_test, |
| 1017 | 1005 | ||
| 1018 | .free_deviceid_node = objio_free_deviceid_node, | 1006 | .free_deviceid_node = objio_free_deviceid_node, |
| 1019 | 1007 | ||
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 212fc292761a..d79f2df33a46 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c | |||
| @@ -1067,12 +1067,17 @@ pnfs_generic_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, | |||
| 1067 | pgio->pg_count, | 1067 | pgio->pg_count, |
| 1068 | access_type, | 1068 | access_type, |
| 1069 | gfp_flags); | 1069 | gfp_flags); |
| 1070 | } else if (pgio->pg_lseg && | 1070 | return true; |
| 1071 | req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset, | 1071 | } |
| 1072 | pgio->pg_lseg->pls_range.length)) | 1072 | |
| 1073 | if (pgio->pg_lseg && | ||
| 1074 | req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset, | ||
| 1075 | pgio->pg_lseg->pls_range.length)) | ||
| 1073 | return false; | 1076 | return false; |
| 1074 | return NFS_SERVER(pgio->pg_inode)->pnfs_curr_ld->pg_test(pgio, prev, req); | 1077 | |
| 1078 | return true; | ||
| 1075 | } | 1079 | } |
| 1080 | EXPORT_SYMBOL_GPL(pnfs_generic_pg_test); | ||
| 1076 | 1081 | ||
| 1077 | /* | 1082 | /* |
| 1078 | * Called by non rpc-based layout drivers | 1083 | * Called by non rpc-based layout drivers |
diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index 65daae59c8ae..48d0a8e4d062 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h | |||
| @@ -295,8 +295,10 @@ static inline int pnfs_return_layout(struct inode *ino) | |||
| 295 | static inline void pnfs_pageio_init(struct nfs_pageio_descriptor *pgio, | 295 | static inline void pnfs_pageio_init(struct nfs_pageio_descriptor *pgio, |
| 296 | struct inode *inode) | 296 | struct inode *inode) |
| 297 | { | 297 | { |
| 298 | if (NFS_SERVER(inode)->pnfs_curr_ld) | 298 | struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld; |
| 299 | pgio->pg_test = pnfs_generic_pg_test; | 299 | |
| 300 | if (ld) | ||
| 301 | pgio->pg_test = ld->pg_test; | ||
| 300 | } | 302 | } |
| 301 | 303 | ||
| 302 | #else /* CONFIG_NFS_V4_1 */ | 304 | #else /* CONFIG_NFS_V4_1 */ |
