On Sun, Feb 01, 2026 at 08:36:29PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> logfd is blocking, so we don't need to care about EAGAIN.
> Let's simply use qemu_write_full().

Are you sure logfd is always blocking ?  It can be an FD passed in
from outside QEMU, and off-hand, I'm not sure where we force that to
be blocking. Though we could argue it is the client't fault if they
passed a non-blocking FD to QEMU.

NB, we can *not* assume logfd is a plain file as libvirt will pass
in a pipe to send logging via virtlogd.


> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
> ---
>  chardev/char.c | 22 +++++-----------------
>  1 file changed, 5 insertions(+), 17 deletions(-)
> 
> diff --git a/chardev/char.c b/chardev/char.c
> index 3e432195a5..64006a3119 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -82,29 +82,17 @@ void qemu_chr_be_event(Chardev *s, QEMUChrEvent event)
>      CHARDEV_GET_CLASS(s)->chr_be_event(s, event);
>  }
>  
> -/* Not reporting errors from writing to logfile, as logs are
> - * defined to be "best effort" only */
>  static void qemu_chr_write_log(Chardev *s, const uint8_t *buf, size_t len)
>  {
> -    size_t done = 0;
> -    ssize_t ret;
> -
>      if (s->logfd < 0) {
>          return;
>      }
>  
> -    while (done < len) {
> -    retry:
> -        ret = write(s->logfd, buf + done, len - done);
> -        if (ret == -1 && errno == EAGAIN) {
> -            g_usleep(100);
> -            goto retry;
> -        }
> -
> -        if (ret <= 0) {
> -            return;
> -        }
> -        done += ret;
> +    if (qemu_write_full(s->logfd, buf, len) < len) {
> +        /*
> +         * qemu_write_full() is defined with G_GNUC_WARN_UNUSED_RESULT,
> +         * but logging is best‑effort, we do ignore errors.
> +         */
>      }
>  }
>  
> -- 
> 2.52.0
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Reply via email to