Details
-
Bug
-
Resolution: Won't Fix
-
Minor
-
None
-
None
-
None
-
3
-
9223372036854775807
Description
cl_io_loop has this code:
pos = io->u.ci_rw.rw_range.cir_pos;
count = io->u.ci_rw.rw_range.cir_count;
if (io->ci_pio) {
/* submit this range for parallel execution */
pt = cl_io_submit_pt(io, pos, count);
if (IS_ERR(pt)) {
cl_io_iter_fini(env, io);
rc = PTR_ERR(pt);
break;
}
*tail = pt;
tail = &pt->cip_next;
} else {
size_t nob = io->ci_nob;
CDEBUG(D_VFSTRACE,
"execute type %u range: [%llu, %llu) nob: %zu %s\n",
io->ci_type, pos, pos + count, nob,
io->ci_continue ? "continue" : "stop");
Now the io->u.ci_rw. is only valid for accessing if the IO is of type CIT_READ/WRITE, otherwise the union is populated differently.
And cl_io_loop IS called by other places, for example:
if (cl_io_init(env, io, CIT_FSYNC, io->ci_obj) == 0)
result = cl_io_loop(env, io);
The problematic code was introduced by LU-8964 - parallel io code.
commit db59ecb5d1d0284fb918def6348a11e0966d7767
Attachments
Issue Links
- is related to
-
LU-11825 Remove LU-8964/pio feature & supporting framework
-
- Resolved
-