On Thu, Apr 26, 2018 at 12:10 PM, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote: > 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 two differentiate between two cases, look at OVL_CONST_INO flag. If typo: to differentiate.. > this flag is set and upperdentry is there, that means ORIGIN xattr > must be present. This statement is not accurate. For dir we set OVL_CONST_INO regardless of of ORIGIN xattr, but that is ok because dir is not a broken hardlink... > OVL_CONST_INO is not set if lower hardlink is broken > or will be broken over copy up. > > Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx> Reviewed-by: Amir Goldstein <amir73il@xxxxxxxxx> > --- > 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 f85ff5714852..69acce1c9026 100644 > --- a/fs/overlayfs/util.c > +++ b/fs/overlayfs/util.c > @@ -133,7 +133,8 @@ 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; > + if (ovl_test_flag(OVL_CONST_INO, d_inode(dentry))) > + type |= __OVL_PATH_ORIGIN; > if (d_is_dir(dentry) || > !ovl_has_upperdata(d_inode(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 -- 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