Re: [PATCH v3 2/2] ceph: set the correct mask for getattr reqeust for read

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

 



On Tue, Mar 19, 2024 at 1:32 AM <xiubli@xxxxxxxxxx> wrote:
>
> From: Xiubo Li <xiubli@xxxxxxxxxx>
>
> In case of hitting the file EOF the ceph_read_iter() needs to
> retrieve the file size from MDS, and the Fr caps is not a neccessary.
>
> URL: https://patchwork.kernel.org/project/ceph-devel/list/?series=819323
> Reported-by: Frank Hsiao 蕭法宣 <frankhsiao@xxxxxxxx>
> Signed-off-by: Xiubo Li <xiubli@xxxxxxxxxx>
> Tested-by: Frank Hsiao 蕭法宣 <frankhsiao@xxxxxxxx>
> ---
>  fs/ceph/file.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/fs/ceph/file.c b/fs/ceph/file.c
> index c35878427985..a85f95c941fc 100644
> --- a/fs/ceph/file.c
> +++ b/fs/ceph/file.c
> @@ -2191,14 +2191,16 @@ static ssize_t ceph_read_iter(struct kiocb *iocb, struct iov_iter *to)
>                 int statret;
>                 struct page *page = NULL;
>                 loff_t i_size;
> +               int mask = CEPH_STAT_CAP_SIZE;
>                 if (retry_op == READ_INLINE) {
>                         page = __page_cache_alloc(GFP_KERNEL);
>                         if (!page)
>                                 return -ENOMEM;
>                 }
>
> -               statret = __ceph_do_getattr(inode, page,
> -                                           CEPH_STAT_CAP_INLINE_DATA, !!page);
> +               if (retry_op == READ_INLINE)
> +                       mask = CEPH_STAT_CAP_INLINE_DATA;

Hi Xiubo,

This introduces an additional retry_op == READ_INLINE branch right
below an existing one.  Should this be:

    int mask = CEPH_STAT_CAP_SIZE;
    if (retry_op == READ_INLINE) {
            page = __page_cache_alloc(GFP_KERNEL);
            if (!page)
                    return -ENOMEM;

            mask = CEPH_STAT_CAP_INLINE_DATA;
    }

Thanks,

                Ilya





[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux