Re: [PATCH v7 13/14] ovl: Fix encryption/compression status of a metacopy only file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux