The commit is pushed to "branch-rh8-4.18.0-240.1.1.vz8.5.x-ovz" and will appear 
at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-240.1.1.vz8.5.19
------>
commit 40a2ac0558bca2ee704fe0c36e08e292b08a18bd
Author: Maxim Patlasov <mpatla...@parallels.com>
Date:   Fri Apr 23 11:54:51 2021 +0300

    fuse: enable async_dio for pcs
    
    The patch preserve user-visible behaviour from 2.6.32-*:
    
    1) If writeback_cache is enabled, process DIO in async way even if async_dio
    is off.
    
    2) If writeback_cache is enabled, never send read requests beyond EOF to
    userspace.
    
    Signed-off-by: Maxim Patlasov <mpatla...@parallels.com>
---
 fs/fuse/file.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index d764bbb4e61e..03499bb3ab5e 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -3469,7 +3469,7 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
        ssize_t ret = 0;
        struct file *file = iocb->ki_filp;
        struct fuse_file *ff = file->private_data;
-       bool async_dio = ff->fc->async_dio;
+       bool async_dio = ff->fc->async_dio | ff->fc->writeback_cache;
        loff_t pos = 0;
        struct inode *inode;
        loff_t i_size;
@@ -3486,9 +3486,16 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
 
        /* optimization for short read */
        if (async_dio && iov_iter_rw(iter) != WRITE && offset + count > i_size) 
{
+               loff_t new_count;
+
                if (offset >= i_size)
                        return 0;
-               iov_iter_truncate(iter, fuse_round_up(ff->fc, i_size - offset));
+
+               new_count = i_size - offset;
+               if (!ff->fc->writeback_cache)
+                       new_count = fuse_round_up(ff->fc, new_count);
+
+               iov_iter_truncate(iter, new_count);
                count = iov_iter_count(iter);
        }
 
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to