Hi On Wed, Nov 12, 2025 at 5:42 PM Philippe Mathieu-Daudé <[email protected]> wrote:
> If qemu_chr_write_buffer() returned an error, but could > write some characters, return the number of character > written. Otherwise frontends able to recover and resume > writes re-write the partial chars already written. > > Cc: [email protected] > Suggested-by: Alex Bennée <[email protected]> > Signed-off-by: Philippe Mathieu-Daudé <[email protected]> > --- > chardev/char.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/chardev/char.c b/chardev/char.c > index 105b0d53184..7931f4e0832 100644 > --- a/chardev/char.c > +++ b/chardev/char.c > @@ -186,6 +186,11 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, > int len, bool write_all) > > res = qemu_chr_write_buffer(s, buf, len, &offset, write_all); > > + if (!write_all && res < 0 && offset == 0) { > + /* Allow partial writes */ > + return res; > + } > + > I don't understand this, as below it has: if (res < 0) { return res; } Is it just the final return value that should be changed? "offset && !write_all ? offset : res" ? if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) { > replay_char_write_event_save(res, offset); > } > -- > 2.51.0 > >
