diff options
Diffstat (limited to 'fs/nfs/objlayout/objlayout.h')
-rw-r--r-- | fs/nfs/objlayout/objlayout.h | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/fs/nfs/objlayout/objlayout.h b/fs/nfs/objlayout/objlayout.h index a8244c8e042d..8ec34727ed21 100644 --- a/fs/nfs/objlayout/objlayout.h +++ b/fs/nfs/objlayout/objlayout.h | |||
@@ -74,19 +74,11 @@ OBJLAYOUT(struct pnfs_layout_hdr *lo) | |||
74 | * per-I/O operation state | 74 | * per-I/O operation state |
75 | * embedded in objects provider io_state data structure | 75 | * embedded in objects provider io_state data structure |
76 | */ | 76 | */ |
77 | struct objlayout_io_state { | 77 | struct objlayout_io_res { |
78 | struct pnfs_layout_segment *lseg; | 78 | struct objlayout *objlay; |
79 | |||
80 | struct page **pages; | ||
81 | unsigned pgbase; | ||
82 | unsigned nr_pages; | ||
83 | unsigned long count; | ||
84 | loff_t offset; | ||
85 | bool sync; | ||
86 | 79 | ||
87 | void *rpcdata; | 80 | void *rpcdata; |
88 | int status; /* res */ | 81 | int status; /* res */ |
89 | int eof; /* res */ | ||
90 | int committed; /* res */ | 82 | int committed; /* res */ |
91 | 83 | ||
92 | /* Error reporting (layout_return) */ | 84 | /* Error reporting (layout_return) */ |
@@ -100,6 +92,18 @@ struct objlayout_io_state { | |||
100 | struct pnfs_osd_ioerr *ioerrs; | 92 | struct pnfs_osd_ioerr *ioerrs; |
101 | }; | 93 | }; |
102 | 94 | ||
95 | static inline | ||
96 | void objlayout_init_ioerrs(struct objlayout_io_res *oir, unsigned num_comps, | ||
97 | struct pnfs_osd_ioerr *ioerrs, void *rpcdata, | ||
98 | struct pnfs_layout_hdr *pnfs_layout_type) | ||
99 | { | ||
100 | oir->objlay = OBJLAYOUT(pnfs_layout_type); | ||
101 | oir->rpcdata = rpcdata; | ||
102 | INIT_LIST_HEAD(&oir->err_list); | ||
103 | oir->num_comps = num_comps; | ||
104 | oir->ioerrs = ioerrs; | ||
105 | } | ||
106 | |||
103 | /* | 107 | /* |
104 | * Raid engine I/O API | 108 | * Raid engine I/O API |
105 | */ | 109 | */ |
@@ -110,28 +114,24 @@ extern int objio_alloc_lseg(struct pnfs_layout_segment **outp, | |||
110 | gfp_t gfp_flags); | 114 | gfp_t gfp_flags); |
111 | extern void objio_free_lseg(struct pnfs_layout_segment *lseg); | 115 | extern void objio_free_lseg(struct pnfs_layout_segment *lseg); |
112 | 116 | ||
113 | extern int objio_alloc_io_state( | 117 | /* objio_free_result will free these @oir structs recieved from |
114 | struct pnfs_layout_segment *lseg, | 118 | * objlayout_{read,write}_done |
115 | struct objlayout_io_state **outp, | 119 | */ |
116 | gfp_t gfp_flags); | 120 | extern void objio_free_result(struct objlayout_io_res *oir); |
117 | extern void objio_free_io_state(struct objlayout_io_state *state); | ||
118 | 121 | ||
119 | extern ssize_t objio_read_pagelist(struct objlayout_io_state *ol_state); | 122 | extern int objio_read_pagelist(struct nfs_read_data *rdata); |
120 | extern ssize_t objio_write_pagelist(struct objlayout_io_state *ol_state, | 123 | extern int objio_write_pagelist(struct nfs_write_data *wdata, int how); |
121 | bool stable); | ||
122 | 124 | ||
123 | /* | 125 | /* |
124 | * callback API | 126 | * callback API |
125 | */ | 127 | */ |
126 | extern void objlayout_io_set_result(struct objlayout_io_state *state, | 128 | extern void objlayout_io_set_result(struct objlayout_io_res *oir, |
127 | unsigned index, struct pnfs_osd_objid *pooid, | 129 | unsigned index, struct pnfs_osd_objid *pooid, |
128 | int osd_error, u64 offset, u64 length, bool is_write); | 130 | int osd_error, u64 offset, u64 length, bool is_write); |
129 | 131 | ||
130 | static inline void | 132 | static inline void |
131 | objlayout_add_delta_space_used(struct objlayout_io_state *state, s64 space_used) | 133 | objlayout_add_delta_space_used(struct objlayout *objlay, s64 space_used) |
132 | { | 134 | { |
133 | struct objlayout *objlay = OBJLAYOUT(state->lseg->pls_layout); | ||
134 | |||
135 | /* If one of the I/Os errored out and the delta_space_used was | 135 | /* If one of the I/Os errored out and the delta_space_used was |
136 | * invalid we render the complete report as invalid. Protocol mandate | 136 | * invalid we render the complete report as invalid. Protocol mandate |
137 | * the DSU be accurate or not reported. | 137 | * the DSU be accurate or not reported. |
@@ -144,9 +144,9 @@ objlayout_add_delta_space_used(struct objlayout_io_state *state, s64 space_used) | |||
144 | spin_unlock(&objlay->lock); | 144 | spin_unlock(&objlay->lock); |
145 | } | 145 | } |
146 | 146 | ||
147 | extern void objlayout_read_done(struct objlayout_io_state *state, | 147 | extern void objlayout_read_done(struct objlayout_io_res *oir, |
148 | ssize_t status, bool sync); | 148 | ssize_t status, bool sync); |
149 | extern void objlayout_write_done(struct objlayout_io_state *state, | 149 | extern void objlayout_write_done(struct objlayout_io_res *oir, |
150 | ssize_t status, bool sync); | 150 | ssize_t status, bool sync); |
151 | 151 | ||
152 | extern int objlayout_get_deviceinfo(struct pnfs_layout_hdr *pnfslay, | 152 | extern int objlayout_get_deviceinfo(struct pnfs_layout_hdr *pnfslay, |