[Qemu-devel] [PATCH v2 0/7] qga: add support for re-opening channel on error

Bishara AbuHattoum posted 7 patches 5 years, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20181007110223.129692-1-bishara@daynix.com
Test docker-clang@ubuntu failed
Test checkpatch passed
qga/channel-win32.c       |   3 +-
qga/installer/qemu-ga.wxs |   2 +-
qga/main.c                | 288 +++++++++++++++++++++++++++++---------
qga/service-win32.h       |   4 +
4 files changed, 229 insertions(+), 68 deletions(-)
[Qemu-devel] [PATCH v2 0/7] qga: add support for re-opening channel on error
Posted by Bishara AbuHattoum 5 years, 7 months ago
Changes from v1:
 [1/7] qga: group agent init/cleanup init separate routines
         Fixed typo in the commit message and dropped the unnecessary message ID
 [2/7] qga: hang GAConfig/socket_activation off of GAState global
         Dropped the unnecessary message ID
 [3/7] qga: move w32 service handling out of run_agent()
         Fixed run_agent() extra call and dropped the unnecessary message ID 
 [4/7] qga: add --retry-path option for re-initializing channel on failure
         Dropped the unnecessary message ID
 [5/7] qga-win: install service with --retry-path set by default
         Dropped the unnecessary message ID
 [6/7] qga-win: report specific error when failing to open channel
         Dropped the unnecessary message ID
 [7/7] qga-win: changing --retry-path option behavior
         Dropped the use of two events and WaitForMultipleObjects, and used
         one 'wakeup_event'.

A patch series was firstly introduced about a year ago which resolves an issue
with qemu-ga and virtio-serial functionality. The issue was discussed in the
following thread:
  https://lists.gnu.org/archive/html/qemu-devel/2018-01/msg06256.html

In short, Sameeh sent an implementation which uses udev on Linux and device
events API on Windows. Since udev API is only supported for kernels 2.6+ it is
not a good approach and Michael suggested his alternative series which uses a
loop and checks if the serial is present or not. Since the Windows API is
supported and has backward compatibility up until Windows xp, there is no reason
for not using the Windows API. It was finally agreed by Michael and Sameeh that
a combination of both approaches should be used.

This series does just that, it rebases Michael's patches on top of upstream and
merges Sameeh's patches for Windows API into Michael's implementation.

Michael's series:
  https://github.com/mdroth/qemu/commits/qga-retry-path
Sameeh's series:
  https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg02400.html
  https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg02399.html
  https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg02401.html

Bishara AbuHattoum (1):
  qga-win: changing --retry-path option behavior

Michael Roth (6):
  qga: group agent init/cleanup init separate routines
  qga: hang GAConfig/socket_activation off of GAState global
  qga: move w32 service handling out of run_agent()
  qga: add --retry-path option for re-initializing channel on failure
  qga-win: install service with --retry-path set by default
  qga-win: report specific error when failing to open channel

 qga/channel-win32.c       |   3 +-
 qga/installer/qemu-ga.wxs |   2 +-
 qga/main.c                | 288 +++++++++++++++++++++++++++++---------
 qga/service-win32.h       |   4 +
 4 files changed, 229 insertions(+), 68 deletions(-)

-- 
2.17.0


Re: [Qemu-devel] [PATCH v2 0/7] qga: add support for re-opening channel on error
Posted by Michael Roth 5 years, 6 months ago
Quoting Bishara AbuHattoum (2018-10-07 06:02:16)
> Changes from v1:
>  [1/7] qga: group agent init/cleanup init separate routines
>          Fixed typo in the commit message and dropped the unnecessary message ID
>  [2/7] qga: hang GAConfig/socket_activation off of GAState global
>          Dropped the unnecessary message ID
>  [3/7] qga: move w32 service handling out of run_agent()
>          Fixed run_agent() extra call and dropped the unnecessary message ID 
>  [4/7] qga: add --retry-path option for re-initializing channel on failure
>          Dropped the unnecessary message ID
>  [5/7] qga-win: install service with --retry-path set by default
>          Dropped the unnecessary message ID
>  [6/7] qga-win: report specific error when failing to open channel
>          Dropped the unnecessary message ID
>  [7/7] qga-win: changing --retry-path option behavior
>          Dropped the use of two events and WaitForMultipleObjects, and used
>          one 'wakeup_event'.
> 
> A patch series was firstly introduced about a year ago which resolves an issue
> with qemu-ga and virtio-serial functionality. The issue was discussed in the
> following thread:
>   https://lists.gnu.org/archive/html/qemu-devel/2018-01/msg06256.html
> 
> In short, Sameeh sent an implementation which uses udev on Linux and device
> events API on Windows. Since udev API is only supported for kernels 2.6+ it is
> not a good approach and Michael suggested his alternative series which uses a
> loop and checks if the serial is present or not. Since the Windows API is
> supported and has backward compatibility up until Windows xp, there is no reason
> for not using the Windows API. It was finally agreed by Michael and Sameeh that
> a combination of both approaches should be used.
> 
> This series does just that, it rebases Michael's patches on top of upstream and
> merges Sameeh's patches for Windows API into Michael's implementation.
> 
> Michael's series:
>   https://github.com/mdroth/qemu/commits/qga-retry-path
> Sameeh's series:
>   https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg02400.html
>   https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg02399.html
>   https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg02401.html

Thanks, applied to qga tree with some minor fix-ups:
  https://github.com/mdroth/qemu/commits/qga

> 
> Bishara AbuHattoum (1):
>   qga-win: changing --retry-path option behavior
> 
> Michael Roth (6):
>   qga: group agent init/cleanup init separate routines
>   qga: hang GAConfig/socket_activation off of GAState global
>   qga: move w32 service handling out of run_agent()
>   qga: add --retry-path option for re-initializing channel on failure
>   qga-win: install service with --retry-path set by default
>   qga-win: report specific error when failing to open channel
> 
>  qga/channel-win32.c       |   3 +-
>  qga/installer/qemu-ga.wxs |   2 +-
>  qga/main.c                | 288 +++++++++++++++++++++++++++++---------
>  qga/service-win32.h       |   4 +
>  4 files changed, 229 insertions(+), 68 deletions(-)
> 
> -- 
> 2.17.0
>