From 6e7b5d70fdeb5569ac1fb2d4f9fdab2e11d55191 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Thu, 12 Jul 2018 23:19:16 +0200 Subject: [PATCH] fuse-overlayfs: reload the dir before checking for EXDEV Signed-off-by: Giuseppe Scrivano --- main.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 9b9e168..e6d167b 100644 --- a/main.c +++ b/main.c @@ -2572,12 +2572,21 @@ ovl_rename (fuse_req_t req, fuse_ino_t parent, const char *name, return; } - if (node_dirp (node) && node->present_lowerdir) + if (node_dirp (node)) { - fuse_reply_err (req, EXDEV); - return; - } + node = load_dir (lo, node, node->layer, node->path, node->name); + if (node == NULL) + { + fuse_reply_err (req, errno); + return; + } + if (node->layer != get_upper_layer (lo) || node->present_lowerdir) + { + fuse_reply_err (req, EXDEV); + return; + } + } pnode = node->parent; destpnode = do_lookup_file (lo, newparent, NULL);