On Thu, May 14, 2026 at 01:21:37PM +0530, Aadeshveer Singh wrote:
> Replace read() and write() syscalls on eventfd with glibc wrappers
> eventfd_read() and eventfd_write(), to make code more robust, readable
> and future-proof.
> 
> Signed-off-by: Aadeshveer Singh <[email protected]>
> ---
>  migration/postcopy-ram.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
> index f5ef93f193..16113b166d 100644
> --- a/migration/postcopy-ram.c
> +++ b/migration/postcopy-ram.c
> @@ -1330,12 +1330,12 @@ static void *postcopy_ram_fault_thread(void *opaque)
>          }
>  
>          if (pfd[1].revents) {
> -            uint64_t tmp64 = 0;
> +            eventfd_t tmp_event = 0;
>  
>              /* Consume the signal */
> -            if (read(mis->userfault_event_fd, &tmp64, 8) != 8) {
> +            if (eventfd_read(mis->userfault_event_fd, &tmp_event)) {
>                  /* Nothing obviously nicer than posting this error. */
> -                error_report("%s: read() failed", __func__);
> +                error_report("%s: eventfd_read() failed", __func__);
>              }
>  
>              if (qatomic_read(&mis->fault_thread_quit)) {
> @@ -1773,13 +1773,11 @@ void postcopy_temp_page_reset(PostcopyTmpPage 
> *tmp_page)
>  
>  void postcopy_fault_thread_notify(MigrationIncomingState *mis)
>  {
> -    uint64_t tmp64 = 1;
> -
>      /*
>       * Wakeup the fault_thread.  It's an eventfd that should currently
>       * be at 0, we're going to increment it to 1
>       */
> -    if (write(mis->userfault_event_fd, &tmp64, 8) != 8) {
> +    if (eventfd_write(mis->userfault_event_fd, 1)) {
>          /* Not much we can do here, but may as well report it */
>          error_report("%s: incrementing failed: %s", __func__,
>                       strerror(errno));
> -- 
> 2.54.0
> 

Unfortunately this will break win builds.  It's because these functions are
compiled even for windows, and windows doesn't have eventfd.

Ideally we shouldn't compile postcopy code in windows at all.  So it's not
really this patch's problem.  But fixing that would either need temporary
CONFIG_LINUX check here just to use the glibc API or a larger refactor to
opt-out compilation of postcopy.

I'll drop this patch for now.  Aadeshveer, if you want you can try to have
a look later on how to not compile postcopy code for windows.  For now, I
suggest you stick with the gsoc project.

Thanks,

-- 
Peter Xu


Reply via email to