lkml.org 
[lkml]   [2020]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.7 085/265] cifs/smb3: Fix data inconsistent when zero file range
    Date
    From: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>

    commit 6b69040247e14b43419a520f841f2b3052833df9 upstream.

    CIFS implements the fallocate(FALLOC_FL_ZERO_RANGE) with send SMB
    ioctl(FSCTL_SET_ZERO_DATA) to server. It just set the range of the
    remote file to zero, but local page cache not update, then the data
    inconsistent with server, which leads the xfstest generic/008 failed.

    So we need to remove the local page caches before send SMB
    ioctl(FSCTL_SET_ZERO_DATA) to server. After next read, it will
    re-cache it.

    Fixes: 30175628bf7f5 ("[SMB3] Enable fallocate -z support for SMB3 mounts")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Cc: stable@vger.kernel.org # v3.17
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/cifs/smb2ops.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
    index 3de9113eb8e35..6fc69c3b2749d 100644
    --- a/fs/cifs/smb2ops.c
    +++ b/fs/cifs/smb2ops.c
    @@ -3145,6 +3145,11 @@ static long smb3_zero_range(struct file *file, struct cifs_tcon *tcon,
    trace_smb3_zero_enter(xid, cfile->fid.persistent_fid, tcon->tid,
    ses->Suid, offset, len);

    + /*
    + * We zero the range through ioctl, so we need remove the page caches
    + * first, otherwise the data may be inconsistent with the server.
    + */
    + truncate_pagecache_range(inode, offset, offset + len - 1);

    /* if file not oplocked can't be sure whether asking to extend size */
    if (!CIFS_CACHE_READ(cifsi))
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-30 00:07    [W:4.127 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site