diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2005-10-26 15:29:06 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2005-10-26 15:29:06 +0000 |
commit | d9079a75b14b73e7953adf4958709b1e5ab3804c (patch) | |
tree | 6c20aef91825f2d4d62e18080579be7a1d54f62e /kernel/dev.c | |
parent | 2c650415ef3e655dbe1c6d39b8fc65c3a6efe998 (diff) | |
download | libfuse-d9079a75b14b73e7953adf4958709b1e5ab3804c.tar.gz |
atomic open+create added
Diffstat (limited to 'kernel/dev.c')
-rw-r--r-- | kernel/dev.c | 7 |
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); |