diff options
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r-- | fs/fuse/fuse_i.h | 49 |
1 files changed, 13 insertions, 36 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 0474202cb5d..25f8581a770 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h | |||
@@ -8,12 +8,12 @@ | |||
8 | 8 | ||
9 | #include <linux/fuse.h> | 9 | #include <linux/fuse.h> |
10 | #include <linux/fs.h> | 10 | #include <linux/fs.h> |
11 | #include <linux/mount.h> | ||
11 | #include <linux/wait.h> | 12 | #include <linux/wait.h> |
12 | #include <linux/list.h> | 13 | #include <linux/list.h> |
13 | #include <linux/spinlock.h> | 14 | #include <linux/spinlock.h> |
14 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
15 | #include <linux/backing-dev.h> | 16 | #include <linux/backing-dev.h> |
16 | #include <asm/semaphore.h> | ||
17 | 17 | ||
18 | /** Max number of pages that can be used in a single read request */ | 18 | /** Max number of pages that can be used in a single read request */ |
19 | #define FUSE_MAX_PAGES_PER_REQ 32 | 19 | #define FUSE_MAX_PAGES_PER_REQ 32 |
@@ -135,9 +135,6 @@ struct fuse_req { | |||
135 | fuse_conn */ | 135 | fuse_conn */ |
136 | struct list_head list; | 136 | struct list_head list; |
137 | 137 | ||
138 | /** Entry on the background list */ | ||
139 | struct list_head bg_entry; | ||
140 | |||
141 | /** refcount */ | 138 | /** refcount */ |
142 | atomic_t count; | 139 | atomic_t count; |
143 | 140 | ||
@@ -150,6 +147,9 @@ struct fuse_req { | |||
150 | /** True if the request has reply */ | 147 | /** True if the request has reply */ |
151 | unsigned isreply:1; | 148 | unsigned isreply:1; |
152 | 149 | ||
150 | /** Force sending of the request even if interrupted */ | ||
151 | unsigned force:1; | ||
152 | |||
153 | /** The request was interrupted */ | 153 | /** The request was interrupted */ |
154 | unsigned interrupted:1; | 154 | unsigned interrupted:1; |
155 | 155 | ||
@@ -192,15 +192,15 @@ struct fuse_req { | |||
192 | /** offset of data on first page */ | 192 | /** offset of data on first page */ |
193 | unsigned page_offset; | 193 | unsigned page_offset; |
194 | 194 | ||
195 | /** Inode used in the request */ | ||
196 | struct inode *inode; | ||
197 | |||
198 | /** Second inode used in the request (or NULL) */ | ||
199 | struct inode *inode2; | ||
200 | |||
201 | /** File used in the request (or NULL) */ | 195 | /** File used in the request (or NULL) */ |
202 | struct file *file; | 196 | struct file *file; |
203 | 197 | ||
198 | /** vfsmount used in release */ | ||
199 | struct vfsmount *vfsmount; | ||
200 | |||
201 | /** dentry used in release */ | ||
202 | struct dentry *dentry; | ||
203 | |||
204 | /** Request completion callback */ | 204 | /** Request completion callback */ |
205 | void (*end)(struct fuse_conn *, struct fuse_req *); | 205 | void (*end)(struct fuse_conn *, struct fuse_req *); |
206 | }; | 206 | }; |
@@ -243,10 +243,6 @@ struct fuse_conn { | |||
243 | /** The list of requests under I/O */ | 243 | /** The list of requests under I/O */ |
244 | struct list_head io; | 244 | struct list_head io; |
245 | 245 | ||
246 | /** Requests put in the background (RELEASE or any other | ||
247 | interrupted request) */ | ||
248 | struct list_head background; | ||
249 | |||
250 | /** Number of requests currently in the background */ | 246 | /** Number of requests currently in the background */ |
251 | unsigned num_background; | 247 | unsigned num_background; |
252 | 248 | ||
@@ -258,15 +254,9 @@ struct fuse_conn { | |||
258 | /** waitq for blocked connection */ | 254 | /** waitq for blocked connection */ |
259 | wait_queue_head_t blocked_waitq; | 255 | wait_queue_head_t blocked_waitq; |
260 | 256 | ||
261 | /** RW semaphore for exclusion with fuse_put_super() */ | ||
262 | struct rw_semaphore sbput_sem; | ||
263 | |||
264 | /** The next unique request id */ | 257 | /** The next unique request id */ |
265 | u64 reqctr; | 258 | u64 reqctr; |
266 | 259 | ||
267 | /** Mount is active */ | ||
268 | unsigned mounted; | ||
269 | |||
270 | /** Connection established, cleared on umount, connection | 260 | /** Connection established, cleared on umount, connection |
271 | abort and device release */ | 261 | abort and device release */ |
272 | unsigned connected; | 262 | unsigned connected; |
@@ -383,12 +373,9 @@ void fuse_file_free(struct fuse_file *ff); | |||
383 | void fuse_finish_open(struct inode *inode, struct file *file, | 373 | void fuse_finish_open(struct inode *inode, struct file *file, |
384 | struct fuse_file *ff, struct fuse_open_out *outarg); | 374 | struct fuse_file *ff, struct fuse_open_out *outarg); |
385 | 375 | ||
386 | /** | 376 | /** */ |
387 | * Send a RELEASE request | 377 | struct fuse_req *fuse_release_fill(struct fuse_file *ff, u64 nodeid, int flags, |
388 | */ | 378 | int opcode); |
389 | void fuse_send_release(struct fuse_conn *fc, struct fuse_file *ff, | ||
390 | u64 nodeid, struct inode *inode, int flags, int isdir); | ||
391 | |||
392 | /** | 379 | /** |
393 | * Send RELEASE or RELEASEDIR request | 380 | * Send RELEASE or RELEASEDIR request |
394 | */ | 381 | */ |
@@ -446,11 +433,6 @@ struct fuse_req *fuse_request_alloc(void); | |||
446 | void fuse_request_free(struct fuse_req *req); | 433 | void fuse_request_free(struct fuse_req *req); |
447 | 434 | ||
448 | /** | 435 | /** |
449 | * Reinitialize a request, the preallocated flag is left unmodified | ||
450 | */ | ||
451 | void fuse_reset_request(struct fuse_req *req); | ||
452 | |||
453 | /** | ||
454 | * Reserve a preallocated request | 436 | * Reserve a preallocated request |
455 | */ | 437 | */ |
456 | struct fuse_req *fuse_get_req(struct fuse_conn *fc); | 438 | struct fuse_req *fuse_get_req(struct fuse_conn *fc); |
@@ -476,11 +458,6 @@ void request_send_noreply(struct fuse_conn *fc, struct fuse_req *req); | |||
476 | */ | 458 | */ |
477 | void request_send_background(struct fuse_conn *fc, struct fuse_req *req); | 459 | void request_send_background(struct fuse_conn *fc, struct fuse_req *req); |
478 | 460 | ||
479 | /** | ||
480 | * Release inodes and file associated with background request | ||
481 | */ | ||
482 | void fuse_release_background(struct fuse_conn *fc, struct fuse_req *req); | ||
483 | |||
484 | /* Abort all requests */ | 461 | /* Abort all requests */ |
485 | void fuse_abort_conn(struct fuse_conn *fc); | 462 | void fuse_abort_conn(struct fuse_conn *fc); |
486 | 463 | ||