Whamcloud - gitweb
LU-9008 pfl: Read should not trigger layout write intent
[fs/lustre-release.git] / lustre / llite / vvp_io.c
index 50afff6..3ca5dc3 100644 (file)
@@ -340,17 +340,25 @@ static void vvp_io_fini(const struct lu_env *env, const struct cl_io_slice *ios)
         */
        if (io->ci_need_write_intent) {
                loff_t start = 0;
-               loff_t end = 0;
-
-               LASSERT(io->ci_type == CIT_WRITE || cl_io_is_trunc(io));
+               loff_t end = OBD_OBJECT_EOF;
 
                io->ci_need_write_intent = 0;
 
+               LASSERT(io->ci_type == CIT_WRITE ||
+                       cl_io_is_trunc(io) || cl_io_is_mkwrite(io));
+
                if (io->ci_type == CIT_WRITE) {
-                       start = io->u.ci_rw.crw_pos;
-                       end = io->u.ci_rw.crw_pos + io->u.ci_rw.crw_count;
-               } else {
+                       if (!cl_io_is_append(io)) {
+                               start = io->u.ci_rw.crw_pos;
+                               end = start + io->u.ci_rw.crw_count;
+                       }
+               } else if (cl_io_is_trunc(io)) {
                        end = io->u.ci_setattr.sa_attr.lvb_size;
+               } else { /* mkwrite */
+                       pgoff_t index = io->u.ci_fault.ft_index;
+
+                       start = cl_offset(io->ci_obj, index);
+                       end = cl_offset(io->ci_obj, index + 1);
                }
 
                rc = ll_layout_write_intent(inode, start, end);