Message ID | 20200903152646.93336-4-peterx@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | migration/postcopy: Sync faulted addresses after network recovered | expand |
* Peter Xu (peterx@redhat.com) wrote: > It'll be used in follow up patches to access more fields out of it. Meanwhile > fetch the userfaultfd inside the function. > > Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > migration/postcopy-ram.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c > index 11a70441a6..d333c3fd0e 100644 > --- a/migration/postcopy-ram.c > +++ b/migration/postcopy-ram.c > @@ -1128,10 +1128,12 @@ int postcopy_ram_incoming_setup(MigrationIncomingState *mis) > return 0; > } > > -static int qemu_ufd_copy_ioctl(int userfault_fd, void *host_addr, > +static int qemu_ufd_copy_ioctl(MigrationIncomingState *mis, void *host_addr, > void *from_addr, uint64_t pagesize, RAMBlock *rb) > { > + int userfault_fd = mis->userfault_fd; > int ret; > + > if (from_addr) { > struct uffdio_copy copy_struct; > copy_struct.dst = (uint64_t)(uintptr_t)host_addr; > @@ -1185,7 +1187,7 @@ int postcopy_place_page(MigrationIncomingState *mis, void *host, void *from, > * which would be slightly cheaper, but we'd have to be careful > * of the order of updating our page state. > */ > - if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, from, pagesize, rb)) { > + if (qemu_ufd_copy_ioctl(mis, host, from, pagesize, rb)) { > int e = errno; > error_report("%s: %s copy host: %p from: %p (size: %zd)", > __func__, strerror(e), host, from, pagesize); > @@ -1212,7 +1214,7 @@ int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, > * but it's not available for everything (e.g. hugetlbpages) > */ > if (qemu_ram_is_uf_zeroable(rb)) { > - if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, NULL, pagesize, rb)) { > + if (qemu_ufd_copy_ioctl(mis, host, NULL, pagesize, rb)) { > int e = errno; > error_report("%s: %s zero host: %p", > __func__, strerror(e), host); > -- > 2.26.2 >
diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 11a70441a6..d333c3fd0e 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -1128,10 +1128,12 @@ int postcopy_ram_incoming_setup(MigrationIncomingState *mis) return 0; } -static int qemu_ufd_copy_ioctl(int userfault_fd, void *host_addr, +static int qemu_ufd_copy_ioctl(MigrationIncomingState *mis, void *host_addr, void *from_addr, uint64_t pagesize, RAMBlock *rb) { + int userfault_fd = mis->userfault_fd; int ret; + if (from_addr) { struct uffdio_copy copy_struct; copy_struct.dst = (uint64_t)(uintptr_t)host_addr; @@ -1185,7 +1187,7 @@ int postcopy_place_page(MigrationIncomingState *mis, void *host, void *from, * which would be slightly cheaper, but we'd have to be careful * of the order of updating our page state. */ - if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, from, pagesize, rb)) { + if (qemu_ufd_copy_ioctl(mis, host, from, pagesize, rb)) { int e = errno; error_report("%s: %s copy host: %p from: %p (size: %zd)", __func__, strerror(e), host, from, pagesize); @@ -1212,7 +1214,7 @@ int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, * but it's not available for everything (e.g. hugetlbpages) */ if (qemu_ram_is_uf_zeroable(rb)) { - if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, NULL, pagesize, rb)) { + if (qemu_ufd_copy_ioctl(mis, host, NULL, pagesize, rb)) { int e = errno; error_report("%s: %s zero host: %p", __func__, strerror(e), host);
It'll be used in follow up patches to access more fields out of it. Meanwhile fetch the userfaultfd inside the function. Signed-off-by: Peter Xu <peterx@redhat.com> --- migration/postcopy-ram.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)