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

Function async_read

block/src/qcow_sync.rs:352–366  ·  view source on GitHub ↗
(disk: &QcowDisk, offset: u64, len: usize)

Source from the content-addressed store, hash-verified

350 }
351
352 fn async_read(disk: &QcowDisk, offset: u64, len: usize) -> Vec<u8> {
353 let mut async_io = disk.create_async_io(1).unwrap();
354 let mut buf = vec![0xFFu8; len];
355 let iovec = libc::iovec {
356 iov_base: buf.as_mut_ptr().cast(),
357 iov_len: buf.len(),
358 };
359 async_io
360 .read_vectored(offset as libc::off_t, &[iovec], 1)
361 .unwrap();
362 let (user_data, result) = async_io.next_completed_request().unwrap();
363 assert_eq!(user_data, 1);
364 assert_eq!(result as usize, len, "read should return requested length");
365 buf
366 }
367
368 fn async_write(disk: &QcowDisk, offset: u64, data: &[u8]) {
369 let mut async_io = disk.create_async_io(1).unwrap();

Calls 5

as_mut_ptrMethod · 0.80
create_async_ioMethod · 0.45
lenMethod · 0.45
read_vectoredMethod · 0.45