Re: [PATCH v5 00/51] Add Flexfile Layout Module

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

 



oops, sorry for editing the mail subject... It was supposed to reply
to your email "Re: [PATCH v5 00/51] Add Flexfile Layout Module"

On Sat, Jan 24, 2015 at 10:33 PM, Peng Tao <tao.peng@xxxxxxxxxxxxxxx> wrote:
> Does following patch fix the warning and hang for you?
> I tested it locally on top of your flexfiles+pnfsd branch (tip 4f7961eb6) and xfstest generic/001 passed.
>
> Cheers,
> Tao
>
> From 47bc1a0ffc586ea96c99e453efd7e2435454b486 Mon Sep 17 00:00:00 2001
> From: Peng Tao <tao.peng@xxxxxxxxxxxxxxx>
> Date: Sat, 24 Jan 2015 22:14:52 +0800
> Subject: [PATCH] nfs41: .init_read and .init_write can be called with valid pg_lseg
>
> With pgio refactoring in v3.15, .init_read and .init_write can be
> called with valid pgio->pg_lseg. file layout was fixed at that time
> by commit c6194271f (pnfs: filelayout: support non page aligned
> layouts). But the generic helper still needs to be fixed.
>
> Cc: stable@xxxxxxxxxxxxxxx # 3.15+
> Signed-off-by: Peng Tao <tao.peng@xxxxxxxxxxxxxxx>
> ---
>  fs/nfs/pnfs.c | 41 ++++++++++++++++++++---------------------
>  1 file changed, 20 insertions(+), 21 deletions(-)
>
> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> index 0fb0f19..c7be9b9 100644
> --- a/fs/nfs/pnfs.c
> +++ b/fs/nfs/pnfs.c
> @@ -1711,19 +1711,19 @@ pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *r
>  {
>         u64 rd_size = req->wb_bytes;
>
> -       WARN_ON_ONCE(pgio->pg_lseg != NULL);
> -
> -       if (pgio->pg_dreq == NULL)
> -               rd_size = i_size_read(pgio->pg_inode) - req_offset(req);
> -       else
> -               rd_size = nfs_dreq_bytes_left(pgio->pg_dreq);
> -
> -       pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> -                                          req->wb_context,
> -                                          req_offset(req),
> -                                          rd_size,
> -                                          IOMODE_READ,
> -                                          GFP_KERNEL);
> +       if (pgio->pg_lseg == NULL) {
> +               if (pgio->pg_dreq == NULL)
> +                       rd_size = i_size_read(pgio->pg_inode) - req_offset(req);
> +               else
> +                       rd_size = nfs_dreq_bytes_left(pgio->pg_dreq);
> +
> +               pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> +                                                  req->wb_context,
> +                                                  req_offset(req),
> +                                                  rd_size,
> +                                                  IOMODE_READ,
> +                                                  GFP_KERNEL);
> +       }
>         /* If no lseg, fall back to read through mds */
>         if (pgio->pg_lseg == NULL)
>                 nfs_pageio_reset_read_mds(pgio);
> @@ -1735,14 +1735,13 @@ void
>  pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio,
>                            struct nfs_page *req, u64 wb_size)
>  {
> -       WARN_ON_ONCE(pgio->pg_lseg != NULL);
> -
> -       pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> -                                          req->wb_context,
> -                                          req_offset(req),
> -                                          wb_size,
> -                                          IOMODE_RW,
> -                                          GFP_NOFS);
> +       if (pgio->pg_lseg == NULL)
> +               pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
> +                                                  req->wb_context,
> +                                                  req_offset(req),
> +                                                  wb_size,
> +                                                  IOMODE_RW,
> +                                                  GFP_NOFS);
>         /* If no lseg, fall back to write through mds */
>         if (pgio->pg_lseg == NULL)
>                 nfs_pageio_reset_write_mds(pgio);
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux