Hi Stephen, I have some trouble with using brw_kiovec when the vector contains more than one kiobuf. Suppose we pass in an array of 2 kiobufs, each for one page. It seems to me that the invocation of do_kio in the inner (block) loop will not happen, neither for iovec[0], nor for iovec[1], since we won't hit KIO_MAX_SECTORS. Then after we get out of the loop, we do io on iovec[1] -- that leaves iovec[0] untouched. I think the correct fix would not just move the do_kio outside of the iovec loop into that loop, because then we start waiting on each iobuf: we need an io_count for the entire vector, not just for each buffer in it. Hmm, am I perhaps just sleepy, or what is going on? - Peter -
