• Vivek Goyal's avatar
    ovl: Do not set dentry type ORIGIN for broken hardlinks · 60124877
    Vivek Goyal authored
    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 install lowerstack[0] but
    ORIGIN xattr is not there.  It is data dentry of upper metacopy dentry
    which has been found using regular name based lookup or using REDIRECT.  So
    with addition of this new case, just presence of oe->numlower is not
    sufficient to guarantee that ORIGIN xattr is present.
    
    So to differentiate between two cases, look at OVL_CONST_INO flag.  If this
    flag is set and upperdentry is there, that means it can be marked as type
    ORIGIN.  OVL_CONST_INO is not set if lower hardlink is broken or will be
    broken over copy up.
    Signed-off-by: default avatarVivek Goyal <vgoyal@redhat.com>
    Reviewed-by: default avatarAmir Goldstein <amir73il@gmail.com>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    60124877
util.c 20.6 KB