Use of O_DIRECT flag could be a performance option.
But this flag may impose alignment restrictions on the length
and address of user-space buffers and the file offset of I/Os.
To support the use of O_DIRECT flag in block_if, this patch adds the support
to handle the misaligned request.
- When O_DIRECT flag is used (`nocache` is specified in acrn-dm parameters),
* if the original I/O request is aligned,
the original I/O request is submitted directly.
* if the original I/O request is not aligned (either due to the buffer
address/length misalignment, or the offset misalignment),
the misaligned request is converted to an aligned request before
submission.
- When O_DIRECT flag is not used,
the original I/O request is submitted directly.
v1 -> v2:
* cleanup the free() logic in `blockif_init_bounced_write`
Tracked-On: #8612
Signed-off-by: Shiqing Gao <shiqing.gao@intel.com>
Acked-by: Wang, Yu1 <yu1.wang@intel.com>