lkml.org 
[lkml]   [2019]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.3 073/112] CIFS: Force reval dentry if LOOKUP_REVAL flag is set
    Date
    From: Pavel Shilovsky <piastryyy@gmail.com>

    commit 0b3d0ef9840f7be202393ca9116b857f6f793715 upstream.

    Mark inode for force revalidation if LOOKUP_REVAL flag is set.
    This tells the client to actually send a QueryInfo request to
    the server to obtain the latest metadata in case a directory
    or a file were changed remotely. Only do that if the client
    doesn't have a lease for the file to avoid unneeded round
    trips to the server.

    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/cifs/dir.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    --- a/fs/cifs/dir.c
    +++ b/fs/cifs/dir.c
    @@ -738,10 +738,16 @@ cifs_lookup(struct inode *parent_dir_ino
    static int
    cifs_d_revalidate(struct dentry *direntry, unsigned int flags)
    {
    + struct inode *inode;
    +
    if (flags & LOOKUP_RCU)
    return -ECHILD;

    if (d_really_is_positive(direntry)) {
    + inode = d_inode(direntry);
    + if ((flags & LOOKUP_REVAL) && !CIFS_CACHE_READ(CIFS_I(inode)))
    + CIFS_I(inode)->time = 0; /* force reval */
    +
    if (cifs_revalidate_dentry(direntry))
    return 0;
    else {
    @@ -752,7 +758,7 @@ cifs_d_revalidate(struct dentry *direntr
    * attributes will have been updated by
    * cifs_revalidate_dentry().
    */
    - if (IS_AUTOMOUNT(d_inode(direntry)) &&
    + if (IS_AUTOMOUNT(inode) &&
    !(direntry->d_flags & DCACHE_NEED_AUTOMOUNT)) {
    spin_lock(&direntry->d_lock);
    direntry->d_flags |= DCACHE_NEED_AUTOMOUNT;

    \
     
     \ /
      Last update: 2019-10-17 00:01    [W:4.330 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site