lkml.org 
[lkml]   [2015]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 119/183] NFS: struct nfs_commit_info.lock must always point to inode->i_lock
    Date
    3.16.7-ckt8 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Trond Myklebust <trond.myklebust@primarydata.com>

    commit f4086a3d789dbe18949862276d83b8f49fce6d2f upstream.

    Commit 411a99adffb4f (nfs: clear_request_commit while holding i_lock)
    assumes that the nfs_commit_info always points to the inode->i_lock.
    For historical reasons, that is not the case for O_DIRECT writes.

    Cc: Weston Andros Adamson <dros@primarydata.com>
    Fixes: 411a99adffb4f ("nfs: clear_request_commit while holding i_lock")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    fs/nfs/direct.c | 2 +-
    include/linux/nfs_xdr.h | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
    index ac8e19995f56..1d36353ce13c 100644
    --- a/fs/nfs/direct.c
    +++ b/fs/nfs/direct.c
    @@ -246,7 +246,7 @@ static void nfs_direct_release_pages(struct page **pages, unsigned int npages)
    void nfs_init_cinfo_from_dreq(struct nfs_commit_info *cinfo,
    struct nfs_direct_req *dreq)
    {
    - cinfo->lock = &dreq->lock;
    + cinfo->lock = &dreq->inode->i_lock;
    cinfo->mds = &dreq->mds_cinfo;
    cinfo->ds = &dreq->ds_cinfo;
    cinfo->dreq = dreq;
    diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
    index a8f111be79a0..6f2ca8976069 100644
    --- a/include/linux/nfs_xdr.h
    +++ b/include/linux/nfs_xdr.h
    @@ -1319,7 +1319,7 @@ struct nfs_commit_completion_ops {
    };

    struct nfs_commit_info {
    - spinlock_t *lock;
    + spinlock_t *lock; /* inode->i_lock */
    struct nfs_mds_commit_info *mds;
    struct pnfs_ds_commit_info *ds;
    struct nfs_direct_req *dreq; /* O_DIRECT request */

    \
     
     \ /
      Last update: 2015-03-06 11:41    [W:2.469 / U:0.900 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site