diff options
author | Jeff Layton <jlayton@kernel.org> | 2022-07-22 21:12:18 +0300 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2022-07-23 22:28:59 +0300 |
commit | 8efc4bbe84a8bdd26e848ed93a8900fad1b44ca2 (patch) | |
tree | c18beba49e2b9c0333423954766fd08001d0e549 /fs/nfs/internal.h | |
parent | ba8ec7a607e98e8491a1fcf924a2e6c96ac9d413 (diff) | |
download | linux-8efc4bbe84a8bdd26e848ed93a8900fad1b44ca2.tar.xz |
nfs: add new nfs_direct_req tracepoint events
Add some new tracepoints to the DIO write code.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'fs/nfs/internal.h')
-rw-r--r-- | fs/nfs/internal.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index af6d261241ff..0cabc7f07d9a 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h @@ -877,3 +877,36 @@ static inline void nfs_set_port(struct sockaddr *sap, int *port, rpc_set_port(sap, *port); } + +struct nfs_direct_req { + struct kref kref; /* release manager */ + + /* I/O parameters */ + struct nfs_open_context *ctx; /* file open context info */ + struct nfs_lock_context *l_ctx; /* Lock context info */ + struct kiocb * iocb; /* controlling i/o request */ + struct inode * inode; /* target file of i/o */ + + /* completion state */ + atomic_t io_count; /* i/os we're waiting for */ + spinlock_t lock; /* protect completion state */ + + loff_t io_start; /* Start offset for I/O */ + ssize_t count, /* bytes actually processed */ + max_count, /* max expected count */ + bytes_left, /* bytes left to be sent */ + error; /* any reported error */ + struct completion completion; /* wait for i/o completion */ + + /* commit state */ + struct nfs_mds_commit_info mds_cinfo; /* Storage for cinfo */ + struct pnfs_ds_commit_info ds_cinfo; /* Storage for cinfo */ + struct work_struct work; + int flags; + /* for write */ +#define NFS_ODIRECT_DO_COMMIT (1) /* an unstable reply was received */ +#define NFS_ODIRECT_RESCHED_WRITES (2) /* write verification failed */ + /* for read */ +#define NFS_ODIRECT_SHOULD_DIRTY (3) /* dirty user-space page after read */ +#define NFS_ODIRECT_DONE INT_MAX /* write verification failed */ +}; |