aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dev.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2004-06-22 18:46:02 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2004-06-22 18:46:02 +0000
commitd3dd2d5466a520f7ca866b478faecd1afd3de1f5 (patch)
tree4b26642d6057813ce5d3a18b37db1022207a91b6 /kernel/dev.c
parent2778f6cf5d27e40337f163f476fac8f0ffec1130 (diff)
downloadlibfuse-d3dd2d5466a520f7ca866b478faecd1afd3de1f5.tar.gz
request allocation improvements
Diffstat (limited to 'kernel/dev.c')
-rw-r--r--kernel/dev.c21
1 files changed, 9 insertions, 12 deletions
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 */