|
@@ -30,6 +30,8 @@
|
|
|
#ifndef FS_NFS_PNFS_H
|
|
|
#define FS_NFS_PNFS_H
|
|
|
|
|
|
+#include <linux/nfs_page.h>
|
|
|
+
|
|
|
enum {
|
|
|
NFS_LSEG_VALID = 0, /* cleared when lseg is recalled/returned */
|
|
|
NFS_LSEG_ROC, /* roc bit received from server */
|
|
@@ -65,6 +67,9 @@ struct pnfs_layoutdriver_type {
|
|
|
int (*clear_layoutdriver) (struct nfs_server *);
|
|
|
struct pnfs_layout_segment * (*alloc_lseg) (struct pnfs_layout_hdr *layoutid, struct nfs4_layoutget_res *lgr);
|
|
|
void (*free_lseg) (struct pnfs_layout_segment *lseg);
|
|
|
+
|
|
|
+ /* test for nfs page cache coalescing */
|
|
|
+ int (*pg_test)(struct nfs_pageio_descriptor *, struct nfs_page *, struct nfs_page *);
|
|
|
};
|
|
|
|
|
|
struct pnfs_layout_hdr {
|
|
@@ -151,6 +156,7 @@ pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx,
|
|
|
enum pnfs_iomode access_type);
|
|
|
void set_pnfs_layoutdriver(struct nfs_server *, u32 id);
|
|
|
void unset_pnfs_layoutdriver(struct nfs_server *);
|
|
|
+void pnfs_pageio_init_read(struct nfs_pageio_descriptor *, struct inode *);
|
|
|
int pnfs_layout_process(struct nfs4_layoutget *lgp);
|
|
|
void pnfs_free_lseg_list(struct list_head *tmp_list);
|
|
|
void pnfs_destroy_layout(struct nfs_inode *);
|
|
@@ -250,6 +256,12 @@ static inline void unset_pnfs_layoutdriver(struct nfs_server *s)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
+static inline void
|
|
|
+pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, struct inode *ino)
|
|
|
+{
|
|
|
+ pgio->pg_test = NULL;
|
|
|
+}
|
|
|
+
|
|
|
#endif /* CONFIG_NFS_V4_1 */
|
|
|
|
|
|
#endif /* FS_NFS_PNFS_H */
|