From 00cd8febc2fa9e673cba59a2d953bf55ed7cbe1e Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Mon, 16 Jan 2006 22:14:26 -0800 Subject: [PATCH] --- yaml --- r: 18647 b: refs/heads/master c: f43b155a5a8a95b06bc0b4474fbb7311c7e9709a h: refs/heads/master i: 18645: a6994ce5ca951f48abe66d5546a4c365dc3a0f0c 18643: 4c064fdbc15e1de36258e5685d2439f93f042a80 18639: cb4b3b44c3a452e2d391988d38788a5b621fd390 v: v3 --- [refs] | 2 +- trunk/fs/fuse/dev.c | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 4979de6c702d..84dae069ba57 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 222f1d69183f10d70a37de5785698fe0aa363c12 +refs/heads/master: f43b155a5a8a95b06bc0b4474fbb7311c7e9709a diff --git a/trunk/fs/fuse/dev.c b/trunk/fs/fuse/dev.c index 9af88953db69..de402e4d8bce 100644 --- a/trunk/fs/fuse/dev.c +++ b/trunk/fs/fuse/dev.c @@ -171,19 +171,17 @@ static void process_init_reply(struct fuse_conn *fc, struct fuse_req *req) /* * This function is called when a request is finished. Either a reply * has arrived or it was interrupted (and not yet sent) or some error - * occurred during communication with userspace, or the device file was - * closed. It decreases the reference count for the request. In case - * of a background request the reference to the stored objects are - * released. The requester thread is woken up (if still waiting), and - * finally the request is either freed or put on the unused_list + * occurred during communication with userspace, or the device file + * was closed. In case of a background request the reference to the + * stored objects are released. The requester thread is woken up (if + * still waiting), and finally the reference to the request is + * released * * Called with fuse_lock, unlocks it */ static void request_end(struct fuse_conn *fc, struct fuse_req *req) { - int putback; req->finished = 1; - putback = atomic_dec_and_test(&req->count); spin_unlock(&fuse_lock); if (req->background) { down_read(&fc->sbput_sem); @@ -197,13 +195,11 @@ static void request_end(struct fuse_conn *fc, struct fuse_req *req) else if (req->in.h.opcode == FUSE_RELEASE && req->inode == NULL) { /* Special case for failed iget in CREATE */ u64 nodeid = req->in.h.nodeid; - __fuse_get_request(req); fuse_reset_request(req); fuse_send_forget(fc, req, nodeid, 1); - putback = 0; + return; } - if (putback) - fuse_putback_request(fc, req); + fuse_put_request(fc, req); } /*