aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMaxim Patlasov <mpatlasov@parallels.com>2012-10-26 11:49:24 -0400
committerMiklos Szeredi <mszeredi@suse.cz>2013-01-24 10:21:27 -0500
commitb2430d7567a376b3685627ca7e9d712f6f27d49b (patch)
tree2c59795b27e57f6a0a6c15d0f8aea3aac32f8317 /fs/fuse/fuse_i.h
parent54b966702dafe396b6f4e609f222b8e0fdb4d7a4 (diff)
fuse: add per-page descriptor <offset, length> to fuse_req
The ability to save page pointers along with lengths and offsets in fuse_req will be useful to cover several iovec-s with a single fuse_req. Per-request page_offset is removed because anybody who need it can use req->page_descs[0].offset instead. Signed-off-by: Maxim Patlasov <mpatlasov@parallels.com> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r--fs/fuse/fuse_i.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 5b21e6ab9e75..70cef60afe0e 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -203,6 +203,12 @@ struct fuse_out {
203 struct fuse_arg args[3]; 203 struct fuse_arg args[3];
204}; 204};
205 205
206/** FUSE page descriptor */
207struct fuse_page_desc {
208 unsigned int length;
209 unsigned int offset;
210};
211
206/** The request state */ 212/** The request state */
207enum fuse_req_state { 213enum fuse_req_state {
208 FUSE_REQ_INIT = 0, 214 FUSE_REQ_INIT = 0,
@@ -296,18 +302,21 @@ struct fuse_req {
296 /** page vector */ 302 /** page vector */
297 struct page **pages; 303 struct page **pages;
298 304
305 /** page-descriptor vector */
306 struct fuse_page_desc *page_descs;
307
299 /** size of the 'pages' array */ 308 /** size of the 'pages' array */
300 unsigned max_pages; 309 unsigned max_pages;
301 310
302 /** inline page vector */ 311 /** inline page vector */
303 struct page *inline_pages[FUSE_REQ_INLINE_PAGES]; 312 struct page *inline_pages[FUSE_REQ_INLINE_PAGES];
304 313
314 /** inline page-descriptor vector */
315 struct fuse_page_desc inline_page_descs[FUSE_REQ_INLINE_PAGES];
316
305 /** number of pages in vector */ 317 /** number of pages in vector */
306 unsigned num_pages; 318 unsigned num_pages;
307 319
308 /** offset of data on first page */
309 unsigned page_offset;
310
311 /** File used in the request (or NULL) */ 320 /** File used in the request (or NULL) */
312 struct fuse_file *ff; 321 struct fuse_file *ff;
313 322