On Mon, Oct 2, 2017 at 4:39 PM, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote: > Right now my understanding is that origin xattr is created for all copied > up files if index=on. And if index=off, then we create it for all type > of files except hardlinks (nlink != 1). > > With metadata only copy up, I will still require origin xattr to copy up > data later, so create it even for hardlinks even with index=off. I am > hoping it does not break anything because we do OVL_INDEX test before > using inode number of origin. It does break index consistency if 2 different upper inodes point to the same lower ORIGIN. If you must support METACOPY with index=off (which I prefer not to) then you will have to set a different xattr to follow to data copy up source or set a BROKENHARDLINK xattr for this case so index=on lookup knows it cannot use ORIGIN as index key. > > Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx> > --- > fs/overlayfs/copy_up.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c > index aad97b30d5e6..f1b15e5c37d3 100644 > --- a/fs/overlayfs/copy_up.c > +++ b/fs/overlayfs/copy_up.c > @@ -538,9 +538,6 @@ static int ovl_do_copy_up(struct ovl_copy_up_ctx *c) > c->stat.nlink > 1) > indexed = true; > > - if (S_ISDIR(c->stat.mode) || c->stat.nlink == 1 || indexed) > - c->origin = true; > - > if (indexed) { > c->destdir = ovl_indexdir(c->dentry->d_sb); > err = ovl_get_index_name(c->lowerpath.dentry, &c->destname); > @@ -598,6 +595,7 @@ static int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry, > .parent = parent, > .dentry = dentry, > .workdir = ovl_workdir(dentry), > + .origin = true, > }; > > if (WARN_ON(!ctx.workdir)) > -- > 2.13.5 > -- 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