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