Whamcloud - gitweb
LU-10356 llite: have ll_write_end to sync for DIO 59/30659/2
authorVladimir Saveliev <c17830@cray.com>
Tue, 26 Dec 2017 19:49:58 +0000 (22:49 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 27 Feb 2018 03:41:52 +0000 (03:41 +0000)
direct IO write uses buffered write for pages which could not be
released. If not adjacent pages are not releasable,
vio->u.write.vui_queue list becomes non-contiguos which makes
page_list_sanity_check() to fail.

Have ll_write_commit to do vvp_io_write_commit() when it is called in
course of direct IO.

Cray-bug-id: MRP-4415
Signed-off-by: Vladimir Saveliev <c17830@cray.com>
Change-Id: I21e653c4d45553c85ff5ded8edf22017966c7ba4
Reviewed-on: https://review.whamcloud.com/30659
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Alexey Lyashkov <c17817@cray.com>
Reviewed-by: Andrew Perepechko <c17827@cray.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/rw26.c

index 2f1008b..b8deb17 100644 (file)
@@ -876,8 +876,7 @@ static int ll_write_end(struct file *file, struct address_space *mapping,
                /* page list is not contiguous now, commit it now */
                unplug = true;
        }
-       if (unplug ||
-           file->f_flags & O_SYNC || IS_SYNC(file_inode(file)))
+       if (unplug || io->u.ci_rw.rw_sync)
                result = vvp_io_write_commit(env, io);
 
        if (result < 0)