lkml.org 
[lkml]   [2021]   [Jan]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 25/32] NFS: Clean up nfs_readpage() and nfs_readpages()
    From
    Date
    From: Dave Wysochanski <dwysocha@redhat.com>

    In prep for the new fscache netfs API, refactor nfs_readpage()
    and nfs_readpages() for future patches. No functional change.

    Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
    ---

    fs/nfs/read.c | 45 +++++++++++++++++++++++----------------------
    1 file changed, 23 insertions(+), 22 deletions(-)

    diff --git a/fs/nfs/read.c b/fs/nfs/read.c
    index eb854f1f86e2..a05fb3904ddf 100644
    --- a/fs/nfs/read.c
    +++ b/fs/nfs/read.c
    @@ -310,11 +310,11 @@ static void nfs_readpage_result(struct rpc_task *task,
    * - The error flag is set for this page. This happens only when a
    * previous async read operation failed.
    */
    -int nfs_readpage(struct file *file, struct page *page)
    +int nfs_readpage(struct file *filp, struct page *page)
    {
    struct nfs_open_context *ctx;
    struct inode *inode = page_file_mapping(page)->host;
    - int error;
    + int ret;

    dprintk("NFS: nfs_readpage (%p %ld@%lu)\n",
    page, PAGE_SIZE, page_index(page));
    @@ -328,43 +328,43 @@ int nfs_readpage(struct file *file, struct page *page)
    * be any new pending writes generated at this point
    * for this page (other pages can be written to).
    */
    - error = nfs_wb_page(inode, page);
    - if (error)
    + ret = nfs_wb_page(inode, page);
    + if (ret)
    goto out_unlock;
    if (PageUptodate(page))
    goto out_unlock;

    - error = -ESTALE;
    + ret = -ESTALE;
    if (NFS_STALE(inode))
    goto out_unlock;

    - if (file == NULL) {
    - error = -EBADF;
    + if (filp == NULL) {
    + ret = -EBADF;
    ctx = nfs_find_open_context(inode, NULL, FMODE_READ);
    if (ctx == NULL)
    goto out_unlock;
    } else
    - ctx = get_nfs_open_context(nfs_file_open_context(file));
    + ctx = get_nfs_open_context(nfs_file_open_context(filp));

    if (!IS_SYNC(inode)) {
    - error = nfs_readpage_from_fscache(ctx, inode, page);
    - if (error == 0)
    + ret = nfs_readpage_from_fscache(ctx, inode, page);
    + if (ret == 0)
    goto out;
    }

    xchg(&ctx->error, 0);
    - error = nfs_readpage_async(ctx, inode, page);
    - if (!error) {
    - error = wait_on_page_locked_killable(page);
    - if (!PageUptodate(page) && !error)
    - error = xchg(&ctx->error, 0);
    + ret = nfs_readpage_async(ctx, inode, page);
    + if (!ret) {
    + ret = wait_on_page_locked_killable(page);
    + if (!PageUptodate(page) && !ret)
    + ret = xchg(&ctx->error, 0);
    }
    out:
    put_nfs_open_context(ctx);
    - return error;
    + return ret;
    out_unlock:
    unlock_page(page);
    - return error;
    + return ret;
    }

    struct nfs_readdesc {
    @@ -409,12 +409,10 @@ int nfs_readpages(struct file *filp, struct address_space *mapping,
    {
    struct nfs_pageio_descriptor pgio;
    struct nfs_pgio_mirror *pgm;
    - struct nfs_readdesc desc = {
    - .pgio = &pgio,
    - };
    + struct nfs_readdesc desc;
    struct inode *inode = mapping->host;
    unsigned long npages;
    - int ret = -ESTALE;
    + int ret;

    dprintk("NFS: nfs_readpages (%s/%Lu %d)\n",
    inode->i_sb->s_id,
    @@ -422,13 +420,15 @@ int nfs_readpages(struct file *filp, struct address_space *mapping,
    nr_pages);
    nfs_inc_stats(inode, NFSIOS_VFSREADPAGES);

    + ret = -ESTALE;
    if (NFS_STALE(inode))
    goto out;

    if (filp == NULL) {
    + ret = -EBADF;
    desc.ctx = nfs_find_open_context(inode, NULL, FMODE_READ);
    if (desc.ctx == NULL)
    - return -EBADF;
    + goto out;
    } else
    desc.ctx = get_nfs_open_context(nfs_file_open_context(filp));

    @@ -440,6 +440,7 @@ int nfs_readpages(struct file *filp, struct address_space *mapping,
    if (ret == 0)
    goto read_complete; /* all pages were read */

    + desc.pgio = &pgio;
    nfs_pageio_init_read(&pgio, inode, false,
    &nfs_async_read_completion_ops);


    \
     
     \ /
      Last update: 2021-01-25 23:16    [W:3.618 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site