@@ -22,7 +22,7 @@ use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
22
22
use virtio_queue:: { Error as VirtQueError , QueueT } ;
23
23
use vm_memory:: bitmap:: Bitmap ;
24
24
use vm_memory:: mmap:: NewBitmap ;
25
- use vm_memory:: { FileOffset , GuestAddress , GuestAddressSpace , GuestMemoryMmap , GuestRegionMmap } ;
25
+ use vm_memory:: { GuestAddress , GuestAddressSpace , GuestMemoryMmap , GuestRegionMmap } ;
26
26
use vmm_sys_util:: epoll:: EventSet ;
27
27
28
28
use super :: backend:: VhostUserBackend ;
@@ -277,23 +277,27 @@ where
277
277
) -> VhostUserResult < ( ) > {
278
278
// We need to create tuple of ranges from the list of VhostUserMemoryRegion
279
279
// that we get from the caller.
280
- let mut regions: Vec < ( GuestAddress , usize , Option < FileOffset > ) > = Vec :: new ( ) ;
280
+ let mut regions = Vec :: new ( ) ;
281
281
let mut mappings: Vec < AddrMapping > = Vec :: new ( ) ;
282
282
283
283
for ( region, file) in ctx. iter ( ) . zip ( files) {
284
- let g_addr = GuestAddress ( region. guest_phys_addr ) ;
285
- let len = region. memory_size as usize ;
286
- let f_off = FileOffset :: new ( file, region. mmap_offset ) ;
287
-
288
- regions. push ( ( g_addr, len, Some ( f_off) ) ) ;
284
+ regions. push (
285
+ GuestRegionMmap :: new (
286
+ region. mmap_region ( file) ?,
287
+ GuestAddress ( region. guest_phys_addr ) ,
288
+ )
289
+ . map_err ( |e| {
290
+ VhostUserError :: ReqHandlerError ( io:: Error :: new ( io:: ErrorKind :: Other , e) )
291
+ } ) ?,
292
+ ) ;
289
293
mappings. push ( AddrMapping {
290
294
vmm_addr : region. user_addr ,
291
295
size : region. memory_size ,
292
296
gpa_base : region. guest_phys_addr ,
293
297
} ) ;
294
298
}
295
299
296
- let mem = GuestMemoryMmap :: from_ranges_with_files ( regions) . map_err ( |e| {
300
+ let mem = GuestMemoryMmap :: from_regions ( regions) . map_err ( |e| {
297
301
VhostUserError :: ReqHandlerError ( io:: Error :: new ( io:: ErrorKind :: Other , e) )
298
302
} ) ?;
299
303
@@ -526,10 +530,9 @@ where
526
530
file : File ,
527
531
) -> VhostUserResult < ( ) > {
528
532
let guest_region = Arc :: new (
529
- GuestRegionMmap :: from_range (
533
+ GuestRegionMmap :: new (
534
+ region. mmap_region ( file) ?,
530
535
GuestAddress ( region. guest_phys_addr ) ,
531
- region. memory_size as usize ,
532
- Some ( FileOffset :: new ( file, region. mmap_offset ) ) ,
533
536
)
534
537
. map_err ( |e| {
535
538
VhostUserError :: ReqHandlerError ( io:: Error :: new ( io:: ErrorKind :: Other , e) )
0 commit comments