summaryrefslogtreecommitdiff
path: root/lib/fuse.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/fuse.c')
-rw-r--r--lib/fuse.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/fuse.c b/lib/fuse.c
index cc5bb14..507c80b 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -1037,7 +1037,7 @@ static int try_get_path(struct fuse *f, fuse_ino_t nodeid, const char *name,
for (node = get_node(f, nodeid); node->nodeid != FUSE_ROOT_ID;
node = node->parent) {
- err = -ENOENT;
+ err = -ESTALE;
if (node->name == NULL || node->parent == NULL)
goto out_unlock;
@@ -1246,7 +1246,7 @@ static int get_path_nullok(struct fuse *f, fuse_ino_t nodeid, char **path)
*path = NULL;
} else {
err = get_path_common(f, nodeid, NULL, path, NULL);
- if (err == -ENOENT)
+ if (err == -ESTALE)
err = 0;
}
@@ -4293,6 +4293,8 @@ static void fuse_lib_ioctl(fuse_req_t req, fuse_ino_t ino, unsigned int cmd,
fuse_finish_interrupt(f, req, &d);
free_path(f, ino, path);
+ if (err < 0)
+ goto err;
fuse_reply_ioctl(req, err, out_buf, out_bufsz);
goto out;
err: