diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2005-03-21 11:47:04 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2005-03-21 11:47:04 +0000 |
commit | d17da46055903a517274b7823d41fdd866f48d8d (patch) | |
tree | 2be8f2ac524462d084c438daf51a6ee6a7dc84ad /kernel/fuse_i.h | |
parent | 6083f17e69c6074ad606aa9195d086b1be46428b (diff) | |
download | libfuse-d17da46055903a517274b7823d41fdd866f48d8d.tar.gz |
Merge 2_2_bugfix up to 2_2_merge1
Diffstat (limited to 'kernel/fuse_i.h')
-rw-r--r-- | kernel/fuse_i.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/fuse_i.h b/kernel/fuse_i.h index 4aa643b..d877071 100644 --- a/kernel/fuse_i.h +++ b/kernel/fuse_i.h @@ -190,6 +190,9 @@ struct fuse_req { lists in fuse_conn */ struct list_head list; + /** Entry on the background list */ + struct list_head bg_entry; + /** refcount */ atomic_t count; @@ -284,6 +287,10 @@ struct fuse_conn { /** The list of requests being processed */ struct list_head processing; + /** Requests put in the background (RELEASE or any other + interrupted request) */ + struct list_head background; + /** Controls the maximum number of outstanding requests */ struct semaphore outstanding_sem; @@ -291,6 +298,9 @@ struct fuse_conn { outstanding_sem would go negative */ unsigned outstanding_debt; + /** RW semaphore for exclusion with fuse_put_super() */ + struct rw_semaphore sbput_sem; + /** The list of unused requests */ struct list_head unused_list; @@ -361,6 +371,7 @@ extern struct file_operations fuse_dev_operations; * - the private_data field of the device file * - the s_fs_info field of the super block * - unused_list, pending, processing lists in fuse_conn + * - background list in fuse_conn * - the unique request ID counter reqctr in fuse_conn * - the sb (super_block) field in fuse_conn * - the file (device file) field in fuse_conn @@ -489,6 +500,11 @@ void request_send_noreply(struct fuse_conn *fc, struct fuse_req *req); void request_send_background(struct fuse_conn *fc, struct fuse_req *req); /** + * Release inodes and file assiciated with background request + */ +void fuse_release_background(struct fuse_req *req); + +/** * Get the attributes of a file */ int fuse_do_getattr(struct inode *inode); |