Whamcloud - gitweb
LU-10356 llite: have ll_write_end to sync for DIO 32/31432/2
authorVladimir Saveliev <c17830@cray.com>
Tue, 26 Dec 2017 19:49:58 +0000 (22:49 +0300)
committerJohn L. Hammond <john.hammond@intel.com>
Thu, 5 Apr 2018 19:59:08 +0000 (19:59 +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.

Lustre-change: https://review.whamcloud.com/30659
Lustre-commit: 6ea9171769db602b3a2b34419bdafacd38454cb4

Cray-bug-id: MRP-4415
Signed-off-by: Vladimir Saveliev <c17830@cray.com>
Change-Id: I21e653c4d45553c85ff5ded8edf22017966c7ba4
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Alexey Lyashkov <c17817@cray.com>
Reviewed-by: Andrew Perepechko <c17827@cray.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/31432
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
lustre/llite/rw26.c

index 1d44187..ec2bf6c 100644 (file)
@@ -778,8 +778,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)