| 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() { |