Messages in this thread Patch in this message | | | From | Tejun Heo <> | Subject | [PATCH 4/5] FUSE: add fuse_conn->release() | Date | Fri, 29 Aug 2008 03:19:03 +0900 |
| |
Add fuse_conn->release() so that fuse_conn can be embedded in other structures. If unspecified, the original action - kfree() - is done.
Signed-off-by: Tejun Heo <tj@kernel.org> --- fs/fuse/fuse_i.h | 3 +++ fs/fuse/inode.c | 6 +++++- 2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 4795264..67f33e8 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -465,6 +465,9 @@ struct fuse_conn { /** Version counter for attribute changes */ u64 attr_version; + + /** Called on final put. If implemented, should free the connection */ + void (*release)(struct fuse_conn *); }; static inline struct fuse_conn *get_fuse_conn_super(struct super_block *sb) diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 8d092ea..b99bb95 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -543,7 +543,11 @@ void fuse_conn_put(struct fuse_conn *fc) fuse_request_free(fc->destroy_req); mutex_destroy(&fc->inst_mutex); bdi_destroy(&fc->bdi); - kfree(fc); + + if (fc->release) + fc->release(fc); + else + kfree(fc); } } EXPORT_SYMBOL_GPL(fuse_conn_put); -- 1.5.4.5
| |