MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / async_read

Function async_read

block/src/qcow_async.rs:623–637  ·  view source on GitHub ↗
(disk: &QcowDisk, offset: u64, len: usize)

Source from the content-addressed store, hash-verified

621 }
622
623 fn async_read(disk: &QcowDisk, offset: u64, len: usize) -> Vec<u8> {
624 let mut async_io = disk.create_async_io(1).unwrap();
625 let mut buf = vec![0xFFu8; len];
626 let iovec = libc::iovec {
627 iov_base: buf.as_mut_ptr().cast(),
628 iov_len: buf.len(),
629 };
630 async_io
631 .read_vectored(offset as libc::off_t, &[iovec], 1)
632 .unwrap();
633 let (user_data, result) = wait_for_completion(async_io.as_mut());
634 assert_eq!(user_data, 1);
635 assert_eq!(result as usize, len, "read should return requested length");
636 buf
637 }
638
639 #[test]
640 fn test_qcow_async_punch_hole_completion() {

Calls 5

wait_for_completionFunction · 0.85
as_mut_ptrMethod · 0.80
create_async_ioMethod · 0.45
lenMethod · 0.45
read_vectoredMethod · 0.45