aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dev.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-10-26 15:29:06 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2005-10-26 15:29:06 +0000
commitd9079a75b14b73e7953adf4958709b1e5ab3804c (patch)
tree6c20aef91825f2d4d62e18080579be7a1d54f62e /kernel/dev.c
parent2c650415ef3e655dbe1c6d39b8fc65c3a6efe998 (diff)
downloadlibfuse-d9079a75b14b73e7953adf4958709b1e5ab3804c.tar.gz
atomic open+create added
Diffstat (limited to 'kernel/dev.c')
-rw-r--r--kernel/dev.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/dev.c b/kernel/dev.c
index 4df10f4..30bed76 100644
--- a/kernel/dev.c
+++ b/kernel/dev.c
@@ -224,6 +224,13 @@ static void request_end(struct fuse_conn *fc, struct fuse_req *req)
fuse_putback_request() */
for (i = 1; i < FUSE_MAX_OUTSTANDING; i++)
up(&fc->outstanding_sem);
+ } 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;
}
if (putback)
fuse_putback_request(fc, req);