On Fri, Nov 17, 2017 at 12:03 AM, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote: > If file is metacopy only, it is possible that lower is encrypted while > other is not. In that case, report file as encrypted (despite the fact > that only data is encrypted while metadata is not). > > Similarly if lower is compressed, report that in stat for a metacopy > only file. > > Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx> Reviewed-by: Amir Goldstein <amir73il@xxxxxxxxx> > --- > fs/overlayfs/inode.c | 20 +++++++++++++++++++- > 1 file changed, 19 insertions(+), 1 deletion(-) > > diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c > index 7af8a292d54d..fe2d62cc07a7 100644 > --- a/fs/overlayfs/inode.c > +++ b/fs/overlayfs/inode.c > @@ -66,6 +66,22 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr) > return err; > } > > +#define OVL_STATX_ATTR_MASK (STATX_ATTR_ENCRYPTED | STATX_ATTR_COMPRESSED) nit: add newline > +static void ovl_stat_fix_attributes(struct kstat *ustat, struct kstat *lstat) { > + unsigned int attr_mask, attr; > + > + attr_mask = lstat->attributes_mask & OVL_STATX_ATTR_MASK; > + if (!attr_mask) > + return; > + > + attr = lstat->attributes & attr_mask; > + if (!attr) > + return; > + > + ustat->attributes_mask |= attr_mask; > + ustat->attributes |= attr; > +} > + > int ovl_getattr(const struct path *path, struct kstat *stat, > u32 request_mask, unsigned int flags) > { > @@ -123,8 +139,10 @@ int ovl_getattr(const struct path *path, struct kstat *stat, > else > stat->dev = ovl_get_pseudo_dev(dentry); > > - if (metacopy) > + if (metacopy) { > stat->blocks = lowerstat.blocks; > + ovl_stat_fix_attributes(stat, &lowerstat); > + } > } > if (samefs) { > /* > -- > 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