From: Vivek Goyal <[email protected]>

Right now OVL_PATH_MERGE is used only for merged directories.  But
conceptually, a metacopy dentry (backed by a lower data dentry) is a merged
entity as well.

So mark metacopy dentries as OVL_PATH_MERGE and ovl_rename() makes use of
this property later to set redirect on a metacopy file.

Signed-off-by: Vivek Goyal <[email protected]>
Reviewed-by: Amir Goldstein <[email protected]>
Signed-off-by: Miklos Szeredi <[email protected]>
---
 fs/overlayfs/util.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c
index 73939e08d8bf..61ace2de3019 100644
--- a/fs/overlayfs/util.c
+++ b/fs/overlayfs/util.c
@@ -134,7 +134,8 @@ enum ovl_path_type ovl_path_type(struct dentry *dentry)
                 */
                if (oe->numlower) {
                        type |= __OVL_PATH_ORIGIN;
-                       if (d_is_dir(dentry))
+                       if (d_is_dir(dentry) ||
+                           !ovl_has_upperdata(d_inode(dentry)))
                                type |= __OVL_PATH_MERGE;
                }
        } else {
-- 
2.14.3

Reply via email to