lkml.org 
[lkml]   [2021]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 463/663] NFSv4: Fixes for nfs4_bitmask_adjust()
    Date
    From: Trond Myklebust <trond.myklebust@hammerspace.com>

    [ Upstream commit 45901a231723a5a513ff08477983f3a274a6a910 ]

    We don't want to ask for the ACL in a WRITE reply, since we don't have
    a preallocated buffer.

    Instead of checking NFS_INO_INVALID_ACCESS, which is really about
    managing the access cache, we should look at the value of
    NFS_INO_INVALID_OTHER. Also ensure we assign the mode, owner and
    owner_group flags to the correct bit mask.

    Finally, fix up the check for NFS_INO_INVALID_CTIME to retrieve the
    ctime, and add a check for NFS_INO_INVALID_CHANGE.

    Fixes: 76bd5c016ef4 ("NFSv4: make cache consistency bitmask dynamic")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/nfs/nfs4proc.c | 15 ++++++++-------
    1 file changed, 8 insertions(+), 7 deletions(-)

    diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
    index 0cd5b127f3bb9..a811d42ffbd11 100644
    --- a/fs/nfs/nfs4proc.c
    +++ b/fs/nfs/nfs4proc.c
    @@ -5433,15 +5433,16 @@ static void nfs4_bitmask_adjust(__u32 *bitmask, struct inode *inode,

    if (cache_validity & NFS_INO_INVALID_ATIME)
    bitmask[1] |= FATTR4_WORD1_TIME_ACCESS;
    - if (cache_validity & NFS_INO_INVALID_ACCESS)
    - bitmask[0] |= FATTR4_WORD1_MODE | FATTR4_WORD1_OWNER |
    - FATTR4_WORD1_OWNER_GROUP;
    - if (cache_validity & NFS_INO_INVALID_ACL)
    - bitmask[0] |= FATTR4_WORD0_ACL;
    - if (cache_validity & NFS_INO_INVALID_LABEL)
    + if (cache_validity & NFS_INO_INVALID_OTHER)
    + bitmask[1] |= FATTR4_WORD1_MODE | FATTR4_WORD1_OWNER |
    + FATTR4_WORD1_OWNER_GROUP |
    + FATTR4_WORD1_NUMLINKS;
    + if (label && label->len && cache_validity & NFS_INO_INVALID_LABEL)
    bitmask[2] |= FATTR4_WORD2_SECURITY_LABEL;
    - if (cache_validity & NFS_INO_INVALID_CTIME)
    + if (cache_validity & NFS_INO_INVALID_CHANGE)
    bitmask[0] |= FATTR4_WORD0_CHANGE;
    + if (cache_validity & NFS_INO_INVALID_CTIME)
    + bitmask[1] |= FATTR4_WORD1_TIME_METADATA;
    if (cache_validity & NFS_INO_INVALID_MTIME)
    bitmask[1] |= FATTR4_WORD1_TIME_MODIFY;
    if (cache_validity & NFS_INO_INVALID_SIZE)
    --
    2.27.0


    \
     
     \ /
      Last update: 2021-03-02 04:10    [W:3.014 / U:0.416 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site