Re: [PATCH 7/7] ovl: Fix ovl_getattr() to get size from lower

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

 



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



[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