В libaio макрос io_prep_pwritev подготавливает команду и устанавливает структуру iocb. Разве iocb.c.u.nbytes не должно быть количеством байтов? В io_prep_pwritev для этого параметра установлено значение iovcnt, что кажется неправильным. Почему?
https://kernel.googlesource.com/pub/scm ... baio.h#203
Подробнее здесь: https://stackoverflow.com/questions/791 ... -to-iovcnt