From d3dd2d5466a520f7ca866b478faecd1afd3de1f5 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Tue, 22 Jun 2004 18:46:02 +0000 Subject: request allocation improvements --- kernel/dev.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'kernel/dev.c') diff --git a/kernel/dev.c b/kernel/dev.c index 84d4d99..72fdba4 100644 --- a/kernel/dev.c +++ b/kernel/dev.c @@ -109,6 +109,7 @@ static struct fuse_req *do_get_request(struct fuse_conn *fc) memset(req, 0, sizeof(*req)); INIT_LIST_HEAD(&req->list); init_waitqueue_head(&req->waitq); + req->preallocated = 1; return req; } @@ -139,20 +140,16 @@ struct fuse_req *fuse_get_request_nonblock(struct fuse_conn *fc) return req; } -struct fuse_req *fuse_get_request_nonint(struct fuse_conn *fc) -{ - down(&fc->unused_sem); - - return do_get_request(fc); -} - - void fuse_put_request(struct fuse_conn *fc, struct fuse_req *req) { - spin_lock(&fuse_lock); - list_add(&req->list, &fc->unused_list); - spin_unlock(&fuse_lock); - up(&fc->unused_sem); + if (!req->preallocated) + fuse_request_free(req); + else { + spin_lock(&fuse_lock); + list_add(&req->list, &fc->unused_list); + spin_unlock(&fuse_lock); + up(&fc->unused_sem); + } } /* Must be called with fuse_lock held, and unlocks it */ -- cgit v1.2.3