Re: Can HyperV KVP daemon detect if running under Windows Server

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



----- Original Message -----
> 于 2013年03月19日 16:58, Tomas Hozza 写道:
> > ----- Original Message -----
> >>> -----Original Message-----
> >>> From: Tomas Hozza [mailto:thozza@xxxxxxxxxx]
> >>> Sent: Monday, March 18, 2013 11:39 AM
> >>> To: KY Srinivasan
> >>> Cc: Jason Wang
> >>> Subject: Re: Can HyperV KVP daemon detect if running under
> >>> Windows
> >>> Server
> >>>
> >>> ----- Original Message -----
> >>>>> -----Original Message-----
> >>>>> From: Tomas Hozza [mailto:thozza@xxxxxxxxxx]
> >>>>> Sent: Monday, March 18, 2013 11:15 AM
> >>>>> To: KY Srinivasan
> >>>>> Cc: Jason Wang
> >>>>> Subject: Re: Can HyperV KVP daemon detect if running under
> >>>>> Windows
> >>>>> Server
> >>>>>
> >>>>> I tested the hyperv KVP daemon on RHEL-6.4 running on libvirt
> >>>>> KVM virtual machine. None of hv_* kmod-s was loaded. The daemon
> >>>>> is running just fine and netlink_send() completes successfully
> >>>>> even if proper drivers are not loaded.
> >>>>>
> >>>>> [root@localhost ~]# modprobe hv_vmbus
> >>>>> FATAL: Error inserting hv_vmbus (/lib/modules/2.6.32-
> >>>>> 358.el6.x86_64/kernel/drivers/hv/hv_vmbus.ko): No such device
> >>>>> [root@localhost ~]# modprobe hv_utils
> >>>>> FATAL: Error inserting hv_utils (/lib/modules/2.6.32-
> >>>>> 358.el6.x86_64/kernel/drivers/hv/hv_utils.ko): No such device
> >>>>> [root@localhost ~]# lsmod | grep hv
> >>>>> [root@localhost ~]# service hypervkvpd start
> >>>>> Starting Hyper-V KVP daemon                                [
> >>>>>   OK  ]
> >>>>> [root@localhost ~]# service hypervkvpd status
> >>>>> hv_kvp_daemon (pid 1509) is running...
> >>>>> [root@localhost ~]# grep KVP /var/log/messages
> >>>>> Mar 18 16:00:50 localhost KVP: KVP starting; pid is:1509
> >>>>> [root@localhost ~]# uname -a
> >>>>> Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Tue
> >>>>> Jan 29
> >>>>> 11:47:41 EST
> >>>>> 2013 x86_64 x86_64 x86_64 GNU/Linux
> >>>>>
> >>>>> Maybe there could be some timeout for driver registration.
> >>>>> After it the daemon would exit if it got no reply from
> >>>>> kernel driver.
> >>>> In that case, as you suggest maybe we can have a timeout on the
> >>>> first
> >>>> receive from the kernel. In the current code, once the daemon
> >>>> registers, the kernel component sends the LIS version number and
> >>>> this message is guaranteed to come soon after the daemon
> >>>> registers.
> >>>> If this does not happen, we can conclude that we are not on
> >>>> Hyper-V.
> >>>>
> >>>>> After having a look on the kernel driver I know this can not
> >>>>> be done before some issues in the kernel driver are fixed.
> >>>>>
> >>>>> The problem is that the kernel driver at the moment handles
> >>>>> daemon registration only for the first time. On the other
> >>>>> hand the daemon wants to register with the driver every time
> >>>>> it is started. This can be real problem for example when
> >>>>> the daemon is restarted (stopped and started). You can read
> >>>>> my longer and more explanatory comment in Red Hat Bugzilla [1].
> >>>> Why would you want to stop/restart the daemon. Not having the
> >>>> daemon,
> >>>> can only create more problems since the kernel component holds
> >>>> onto
> >>>> the host transaction until the daemon registers. We should view
> >>>> the
> >>>> daemon as simply an extension of the kernel driver.
> >>> If you update the hypervkvpd package the daemon is restarted. In
> >>> the
> >>> current daemon code the registration part is written as:
> >>>
> >>> ...
> >>> if ((in_hand_shake) && (op == KVP_OP_REGISTER1)) {
> >>>      /* handle registration */
> >>> }
> >>> ...
> >>>
> >>> so it is possible that you update the daemon, it is restarted and
> >>> wants
> >>> to register with the driver. It sends the registration message to
> >>> driver.
> >>> The driver ignores this message since it has no transaction
> >>> active
> >>> from
> >>> the Host so it is not expecting any messages from Guest. The
> >>> daemon
> >>> ends up in a state when it is "in_hand_shake" and waiting for the
> >>> registration
> >>> to complete, BUT (because how the registration part is written)
> >>> it
> >>> will
> >>> handle requests from the driver (Host). I think this is not very
> >>> fortunate
> >>> and it is kind of "design issue". User should NOT have to restart
> >>> (or unload
> >>> kernel modules and load them again) after he updated the daemon.
> I agree that in_hand_shake snippet like this is not good enough to
> guarantee a registration is mandatory and can't be skipped.
> I thought code like below:
> if (in_hand_shake) {
> if (op == KVP_OP_REGISTER1) {
> ...
> in_hand_shake = 0;
> }
> if (in_hand_shake) {
> continue;
> }
> }
> is more reasonable and fault tolerable.
> I suppose I've already encountered an issue like this -- kvp
> receviced
> messages sent by libcgroup, registration phase is skipped and fault
> packets are regarded as kvp packets.
> 
> to K. Y:
> remind you on
> http://driverdev.linuxdriverproject.org/pipermail/devel/2013-March/036306.html.
> I updated it and asked Evgeniy Polyakov on how to subscribe group
> using
> connector, waiting his feedback.

Thank you for your opinion. I agree that the registration phase should be made
mandatory. Regarding the subscription group when using connector I already sent
patches to Greg KH and they were merged into Greg's tree.

See:
http://driverdev.linuxdriverproject.org/pipermail/devel/2013-March/036284.html

Regards,

Tomas Hozza

> 
> 
> Regards,
> Vaughan
> 
> >> True; but as I said the daemon is to be viewed as simply an
> >> extension
> >> of the kernel component. If this is done, then you would not be
> >> updating the daemon independently of the kernel component. I guess
> >> the problem you are running into is because you are  viewing the
> >> daemon as an independent component that can be updated
> >> independently
> >> of the kernel piece. Perhaps, this is a packaging issue.
> >>
> >> Regards,
> >>
> >> K. Y
> > I see your point. It is true that we ship hyperv daemon as a
> > separate
> > package. I understand the daemon is just an extension to kernel
> > driver
> > and has no purpose without it.
> >
> > But I don't like the way it is now anyway. Even if you look at the
> > daemon
> > as just an extension to the kernel part user should not need to
> > restart
> > whole Guest to get it to an "initial" state of module and the
> > daemon.
> > There might be some bug in the daemon, but the driver can be just
> > fine.
> > In that case I would expect that the daemon can be updated without
> > any
> > problems and without restarting the system (or unloading and
> > loading driver).
> >
> > I would like to know what other people think about this. CC-ing
> > Haiyang Zhang and devel@xxxxxxxxxxxxxxxxxxxxxx.
> >
> > Regards,
> >
> > Tomas Hozza
> >
> >>> Regards,
> >>>
> >>> Tomas Hozza
> >>>
> >>>>> Regards,
> >>>>>
> >>>>> Tomas Hozza
> >>>>>
> >>>>> ----- Original Message -----
> >>>>>> Tomas,
> >>>>>>
> >>>>>> Sorry for the delayed response. The kernel driver only loads
> >>>>>> when
> >>>>>> Linux is running on Hyper-V. We could leverage this to not
> >>>>>> have
> >>>>>> the
> >>>>>> daemon running when not hosted on Hyper-V. The current code
> >>>>>> as it
> >>>>>> stands, the daemon  exits if the netlink_send() fails. When
> >>>>>> not
> >>>>>> running on Hyper-V, does the initial send that registers the
> >>>>>> daemon
> >>>>>> succeed.
> >>>>>>
> >>>>>> Regards,
> >>>>>>
> >>>>>> K. Y
> >>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: Tomas Hozza [mailto:thozza@xxxxxxxxxx]
> >>>>>>> Sent: Monday, March 18, 2013 7:13 AM
> >>>>>>> To: Jason Wang
> >>>>>>> Cc: KY Srinivasan
> >>>>>>> Subject: Fwd: Can HyperV KVP daemon detect if running under
> >>>>>>> Windows
> >>>>>>> Server
> >>>>>>> Importance: High
> >>>>>>>
> >>>>>>> Hi.
> >>>>>>>
> >>>>>>> I got no response to my email I sent some time ago
> >>>>>>> so I'm sending it again. Maybe you just overlooked
> >>>>>>> it. Thank you in advance for the response.
> >>>>>>>
> >>>>>>> Regards,
> >>>>>>>
> >>>>>>> Tomas Hozza
> >>>>>>>
> >>>>>>> ----- Forwarded Message -----
> >>>>>>>> Hi.
> >>>>>>>>
> >>>>>>>> I'm wondering if there is any way for the hyperv kvp
> >>>>>>>> daemon
> >>>>>>>> detect if it is running as a guest on Windows Server host
> >>>>>>>> or
> >>>>>>>> not. And furthermore run only if it is a guest under
> >>>>>>>> Windows
> >>>>>>>> Server. Now hyperv kvp daemon is a default package in a
> >>>>>>>> Virtualization group of packages on RHEL 6.4. Some people
> >>>>>>>> are
> >>>>>>>> not happy that it is installed and running by default
> >>>>>>>> when
> >>>>>>>> the Virtualization group is selected.
> >>>>>>>>
> >>>>>>>> Do you have any suggestions? I don't know how the kernel
> >>>>>>>> driver
> >>>>>>>> is working (one that hyperv kvp daemon registers with).
> >>>>>>>> Would
> >>>>>>>> it
> >>>>>>>> be possible to get some useful information from it?
> >>>>>>>>
> >>>>>>>> Thank you.
> >>>>>>>>
> >>>>>>>> Regards,
> >>>>>>>>
> >>>>>>>> Tomas Hozza
> >>>>>>
> >>>>
> >>
> > _______________________________________________
> > devel mailing list
> > devel@xxxxxxxxxxxxxxxxxxxxxx
> > http://driverdev.linuxdriverproject.org/mailman/listinfo/devel
> 
> 
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux