If a dentry has copy up origin, we set flag OVL_PATH_ORIGIN. So far this decision was easy that we had to check only for oe->numlower and if it is non-zero, we knew there is copy up origin. (For non-dir we installed origin dentry in lowerstack[0]). But we don't create ORGIN xattr for broken hardlinks (index=off). And with metacopy feature it is possible that we will still install lowerstack[0]. But that's lower data dentry of metacopy upper of broken hardlink and not ORIGIN XATTR is not set. So two differentiate between two cases, do not set OVL_PATH_ORIGIN if we have a broken hardlink. Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx> --- fs/overlayfs/util.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index 29f7336ade88..961d65bd25c9 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -117,7 +117,14 @@ enum ovl_path_type ovl_path_type(struct dentry *dentry) * Non-dir dentry can hold lower dentry of its copy up origin. */ if (oe->numlower) { - type |= __OVL_PATH_ORIGIN; + /* + * ORIGIN is created for everyting except broken + * hardlinks + */ + if (!(d_inode(dentry)->i_nlink > 1 && + !ovl_test_flag(OVL_INDEX, d_inode(dentry)))) + type |= __OVL_PATH_ORIGIN; + if (d_is_dir(dentry) || !ovl_has_upperdata(dentry)) type |= __OVL_PATH_MERGE; } -- 2.13.6 -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html