Re: [PATCH] cifs: destage dirty pages before re-reading them for cache=none

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tentatively merged into cifs-2.6.git for-next pending testing

Will be curious if this impacts performance of any of the buildbot
tests and also curious if it addresses any of the buildbot tests which
fail and are currently skipped

On Mon, Sep 19, 2022 at 11:32 PM Ronnie Sahlberg <lsahlber@xxxxxxxxxx> wrote:
>
> This is the opposite case of kernel bugzilla 216301.
> If we mmap a file using cache=none and then proceed to update the mmapped
> area these updates are not reflected in a later pread() of that part of the
> file.
> To fix this we must first destage any dirty pages in the range before
> we allow the pread() to proceed.
>
> Cc: stable@xxxxxxxxxxxxxxx
> Reviewed-by: Paulo Alcantara (SUSE) <pc@xxxxxx>
> Reviewed-by: Enzo Matsumiya <ematsumiya@xxxxxxx>
> Signed-off-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx>
> ---
>  fs/cifs/file.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
> index 6f38b134a346..7d756721e1a6 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -4271,6 +4271,15 @@ static ssize_t __cifs_readv(
>                 len = ctx->len;
>         }
>
> +       if (direct) {
> +               rc = filemap_write_and_wait_range(file->f_inode->i_mapping,
> +                                                 offset, offset + len - 1);
> +               if (rc) {
> +                       kref_put(&ctx->refcount, cifs_aio_ctx_release);
> +                       return -EAGAIN;
> +               }
> +       }
> +
>         /* grab a lock here due to read response handlers can access ctx */
>         mutex_lock(&ctx->aio_mutex);
>
> --
> 2.35.3
>


-- 
Thanks,

Steve



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux