[Spice-devel] [PATCH spice] smartcard: set char device state
Marc-André Lureau
marcandre.lureau at gmail.com
Mon Aug 20 13:51:41 UTC 2018
Hi
On Mon, Aug 20, 2018 at 2:06 PM Frediano Ziglio <fziglio at redhat.com> wrote:
>
> Without proper testing I would say Nack.
> I though we agreed on this.
I have done manual testing. We don't have any smartcard channel test
in spice, afaik.
What you asked me about disabling the device from the guest is
unrelated to this change imho.
Please reconsider merging this, it is not changing any current logic,
just informing qemu about channel state to avoid useless work.
>
> Frediano
>
> >
> > ping
> > On Tue, Aug 7, 2018 at 5:27 PM <marcandre.lureau at redhat.com> wrote:
> > >
> > > From: Marc-André Lureau <marcandre.lureau at redhat.com>
> > >
> > > Follow all other char devices implementation (spicevmc, agent,
> > > stream-device) and set the char device state when
> > > connected/disconnected. This allows qemu to discard writes, optimize a
> > > bit the source polling, and will trigger HUP events.
> > >
> > > See related qemu "char/spice: discard write() if backend is
> > > disconnected".
> > >
> > > Note: sif->state() should probably be handled at the char-device
> > > level. I am not sure what the smartcard channel really brings over
> > > plain spicevmc...
> > >
> > > Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
> > > ---
> > > server/smartcard.c | 15 +++++++++++++++
> > > 1 file changed, 15 insertions(+)
> > >
> > > diff --git a/server/smartcard.c b/server/smartcard.c
> > > index 2cb68e06..403805a8 100644
> > > --- a/server/smartcard.c
> > > +++ b/server/smartcard.c
> > > @@ -343,6 +343,11 @@ void
> > > smartcard_char_device_attach_client(SpiceCharDeviceInstance *char_device,
> > > dev->priv->scc = NULL;
> > > smartcard_channel_client_set_char_device(scc, NULL);
> > > red_channel_client_disconnect(RED_CHANNEL_CLIENT(scc));
> > > + } else {
> > > + SpiceCharDeviceInterface *sif =
> > > spice_char_device_get_interface(char_device);
> > > + if (sif->state) {
> > > + sif->state(char_device, 1);
> > > + }
> > > }
> > > }
> > >
> > > @@ -373,11 +378,21 @@ gboolean
> > > smartcard_char_device_notify_reader_remove(RedCharDeviceSmartcard *dev)
> > > void smartcard_char_device_detach_client(RedCharDeviceSmartcard
> > > *smartcard,
> > > SmartCardChannelClient *scc)
> > > {
> > > + SpiceCharDeviceInterface *sif;
> > > + SpiceCharDeviceInstance *sin;
> > > +
> > > + g_object_get(smartcard, "sin", &sin, NULL);
> > > + sif = spice_char_device_get_interface(sin);
> > > +
> > > spice_assert(smartcard->priv->scc == scc);
> > > red_char_device_client_remove(RED_CHAR_DEVICE(smartcard),
> > > red_channel_client_get_client(RED_CHANNEL_CLIENT(scc)));
> > > smartcard_channel_client_set_char_device(scc, NULL);
> > > smartcard->priv->scc = NULL;
> > > +
> > > + if (sif->state) {
> > > + sif->state(sin, 0);
> > > + }
> > > }
> > >
> > > SmartCardChannelClient*
> > > smartcard_char_device_get_client(RedCharDeviceSmartcard *smartcard)
> > > --
> > > 2.18.0.547.g1d89318c48
> > >
> > > _______________________________________________
> > > Spice-devel mailing list
> > > Spice-devel at lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/spice-devel
> >
> >
> >
> > --
> > Marc-André Lureau
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/spice-devel
> >
--
Marc-André Lureau
More information about the Spice-devel
mailing list