On Mon, Oct 2, 2017 at 4:40 PM, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote: > If an inode has been copied up metadata only, then we need to query the > size from lower and fill up the stat->size. So you won't need this patch if you copy st_size on metadata_copy, which seems like the logical thing to do. Thinking very far into the future when METACOPY and ORIGIN will be able to share page mappings, they will have to start with the same size. > > Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx> > --- > fs/overlayfs/inode.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c > index e5825b8948e0..1b676deacc2d 100644 > --- a/fs/overlayfs/inode.c > +++ b/fs/overlayfs/inode.c > @@ -140,6 +140,16 @@ int ovl_getattr(const struct path *path, struct kstat *stat, > if (!is_dir && ovl_test_flag(OVL_INDEX, d_inode(dentry))) > stat->nlink = dentry->d_inode->i_nlink; > > + if (ovl_test_flag(OVL_METACOPY, d_inode(dentry))) { > + struct kstat lowerstat; > + u32 lowermask = STATX_SIZE; > + > + ovl_path_lower(dentry, &realpath); > + err = vfs_getattr(&realpath, &lowerstat, lowermask, flags); > + if (err) > + goto out; > + stat->size = lowerstat.size; > + } > out: > revert_creds(old_cred); > > -- > 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