Merge branch 'nfs-for-2.6.39' into nfs-for-next
This commit is contained in:
@@ -561,6 +561,7 @@ enum {
|
||||
NFSPROC4_CLNT_RECLAIM_COMPLETE,
|
||||
NFSPROC4_CLNT_LAYOUTGET,
|
||||
NFSPROC4_CLNT_GETDEVICEINFO,
|
||||
NFSPROC4_CLNT_LAYOUTCOMMIT,
|
||||
};
|
||||
|
||||
/* nfs41 types */
|
||||
|
@@ -33,6 +33,8 @@
|
||||
#define FLUSH_STABLE 4 /* commit to stable storage */
|
||||
#define FLUSH_LOWPRI 8 /* low priority background flush */
|
||||
#define FLUSH_HIGHPRI 16 /* high priority memory reclaim flush */
|
||||
#define FLUSH_COND_STABLE 32 /* conditional stable write - only stable
|
||||
* if everything fits in one RPC */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
@@ -93,8 +95,13 @@ struct nfs_open_context {
|
||||
int error;
|
||||
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct nfs_open_dir_context {
|
||||
struct rpc_cred *cred;
|
||||
__u64 dir_cookie;
|
||||
__u64 dup_cookie;
|
||||
int duped;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -191,6 +198,7 @@ struct nfs_inode {
|
||||
|
||||
/* pNFS layout information */
|
||||
struct pnfs_layout_hdr *layout;
|
||||
atomic_t commits_outstanding;
|
||||
#endif /* CONFIG_NFS_V4*/
|
||||
#ifdef CONFIG_NFS_FSCACHE
|
||||
struct fscache_cookie *fscache;
|
||||
@@ -219,6 +227,8 @@ struct nfs_inode {
|
||||
#define NFS_INO_FSCACHE (5) /* inode can be cached by FS-Cache */
|
||||
#define NFS_INO_FSCACHE_LOCK (6) /* FS-Cache cookie management lock */
|
||||
#define NFS_INO_COMMIT (7) /* inode is committing unstable writes */
|
||||
#define NFS_INO_PNFS_COMMIT (8) /* use pnfs code for commit */
|
||||
#define NFS_INO_LAYOUTCOMMIT (9) /* layoutcommit required */
|
||||
|
||||
static inline struct nfs_inode *NFS_I(const struct inode *inode)
|
||||
{
|
||||
|
@@ -33,11 +33,15 @@ enum {
|
||||
PG_CLEAN,
|
||||
PG_NEED_COMMIT,
|
||||
PG_NEED_RESCHED,
|
||||
PG_PNFS_COMMIT,
|
||||
};
|
||||
|
||||
struct nfs_inode;
|
||||
struct nfs_page {
|
||||
struct list_head wb_list; /* Defines state of page: */
|
||||
union {
|
||||
struct list_head wb_list; /* Defines state of page: */
|
||||
struct pnfs_layout_segment *wb_commit_lseg; /* Used when PG_PNFS_COMMIT set */
|
||||
};
|
||||
struct page *wb_page; /* page to read in/write out */
|
||||
struct nfs_open_context *wb_context; /* File state context info */
|
||||
struct nfs_lock_context *wb_lock_context; /* lock context info */
|
||||
@@ -57,6 +61,7 @@ struct nfs_pageio_descriptor {
|
||||
size_t pg_count;
|
||||
size_t pg_bsize;
|
||||
unsigned int pg_base;
|
||||
char pg_moreio;
|
||||
|
||||
struct inode *pg_inode;
|
||||
int (*pg_doio)(struct nfs_pageio_descriptor *);
|
||||
|
@@ -195,8 +195,9 @@ struct nfs4_get_lease_time_res {
|
||||
#define PNFS_LAYOUT_MAXSIZE 4096
|
||||
|
||||
struct nfs4_layoutdriver_data {
|
||||
struct page **pages;
|
||||
__u32 pglen;
|
||||
__u32 len;
|
||||
void *buf;
|
||||
};
|
||||
|
||||
struct pnfs_layout_range {
|
||||
@@ -214,6 +215,7 @@ struct nfs4_layoutget_args {
|
||||
struct nfs_open_context *ctx;
|
||||
struct nfs4_sequence_args seq_args;
|
||||
nfs4_stateid stateid;
|
||||
struct nfs4_layoutdriver_data layout;
|
||||
};
|
||||
|
||||
struct nfs4_layoutget_res {
|
||||
@@ -221,8 +223,8 @@ struct nfs4_layoutget_res {
|
||||
struct pnfs_layout_range range;
|
||||
__u32 type;
|
||||
nfs4_stateid stateid;
|
||||
struct nfs4_layoutdriver_data layout;
|
||||
struct nfs4_sequence_res seq_res;
|
||||
struct nfs4_layoutdriver_data *layoutp;
|
||||
};
|
||||
|
||||
struct nfs4_layoutget {
|
||||
@@ -241,6 +243,29 @@ struct nfs4_getdeviceinfo_res {
|
||||
struct nfs4_sequence_res seq_res;
|
||||
};
|
||||
|
||||
struct nfs4_layoutcommit_args {
|
||||
nfs4_stateid stateid;
|
||||
__u64 lastbytewritten;
|
||||
struct inode *inode;
|
||||
const u32 *bitmask;
|
||||
struct nfs4_sequence_args seq_args;
|
||||
};
|
||||
|
||||
struct nfs4_layoutcommit_res {
|
||||
struct nfs_fattr *fattr;
|
||||
const struct nfs_server *server;
|
||||
struct nfs4_sequence_res seq_res;
|
||||
};
|
||||
|
||||
struct nfs4_layoutcommit_data {
|
||||
struct rpc_task task;
|
||||
struct nfs_fattr fattr;
|
||||
struct pnfs_layout_segment *lseg;
|
||||
struct rpc_cred *cred;
|
||||
struct nfs4_layoutcommit_args args;
|
||||
struct nfs4_layoutcommit_res res;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to the open call.
|
||||
*/
|
||||
@@ -1077,6 +1102,7 @@ struct nfs_write_data {
|
||||
struct nfs_writeres res; /* result struct */
|
||||
struct pnfs_layout_segment *lseg;
|
||||
struct nfs_client *ds_clp; /* pNFS data server */
|
||||
int ds_commit_index;
|
||||
const struct rpc_call_ops *mds_ops;
|
||||
int (*write_done_cb) (struct rpc_task *task, struct nfs_write_data *data);
|
||||
#ifdef CONFIG_NFS_V4
|
||||
|
Reference in New Issue
Block a user