locked
How can I fine-tune Linux integration components

    Întrebare

  • My question is related to the Linux integration components version 2.  My current environment is MS Hyper-V 2008 hosting a multitude of CentOS VMs (yes, I realize CentOS is not an officially supported distro).  The VM I'm seeing this problem with is running CentOS 5.4 kernel 2.6.18-167-11.1.el5 using LVM.  When I initially created the machine, I neglected to remove the uneeded SCSI controller at first but subsequently pulled it.  I'm not positive it's relevant, but one of the errors is definitely related to STORVSC.

    Anyway, I'm not sure whether anyone can assist in debugging this, but here's my dmesg output:

    [deadlines@vlad ~]# dmesg | grep ERROR
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_2 (ffff81001ec10488) on driver blkvsc (-16)...
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_5 (ffff81001f29a488) on driver blkvsc (-16)...
    VMBUS_DRV: vmbus_child_device_register() ERROR!! unable to register child device (ffff81001f29a488) (517406016)
    VMBUS: VmbusChannelProcessOffer() ERROR!! unable to add child device object (relid 2)
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    STORVSC: StorVscOnChannelCallback() ERROR!! unable to get stor device...device being destroyed?
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_6 (ffff81001f29a488) on driver blkvsc (-16)...
    VMBUS_DRV: vmbus_child_device_register() ERROR!! unable to register child device (ffff81001f29a488) (518192448)
    VMBUS: VmbusChannelProcessOffer() ERROR!! unable to add child device object (relid 2)

    The Linux IC drivers and modules installed correctly using the setup.pl script, although I did get a warning related to an unused variable.  Here's the content of that:

    [deadlines@vlad linux_ic]# cat drvinstall.err
      Building modules, stage 2.
    WARNING: could not find /opt/linux_ic/drivers/dist/vmbus/../hv/vmbus/.vmbus.x86_64.cmd for /opt/linux_ic/drivers/dist/vmbus/../hv/vmbus/vmbus.x86_64
    /opt/linux_ic/drivers/dist/blkvsc/blkvsc_drv.c: In function blkvsc_ioctl:
    /opt/linux_ic/drivers/dist/blkvsc/blkvsc_drv.c:1490: warning: unused variable blkdev
      Building modules, stage 2.
    WARNING: could not find /opt/linux_ic/drivers/dist/blkvsc/../hv/blkvsc/.blkvsc.x86_64.cmd for /opt/linux_ic/drivers/dist/blkvsc/../hv/blkvsc/blkvsc.x86_64
      Building modules, stage 2.
    WARNING: could not find /opt/linux_ic/drivers/dist/storvsc/../hv/storvsc/.storvsc.x86_64.cmd for /opt/linux_ic/drivers/dist/storvsc/../hv/storvsc/storvsc.x86_64
      Building modules, stage 2.
    WARNING: could not find /opt/linux_ic/drivers/dist/netvsc/../hv/netvsc/.netvsc.x86_64.cmd for /opt/linux_ic/drivers/dist/netvsc/../hv/netvsc/netvsc.x86_64


    The drivers seem to be loading properly for my IDE drive, but these strange probe errors persist during boot.  Is there any way to view/modify the list of GUIDs the VMBUS or BLKSVC probes use to enumerate devices?
    2 februarie 2010 16:05

Răspunsuri

  • I just received this responce from one of the team members at Microsoft:

    "
    Looks like the boot options line in GRUB might be incorrect.
     
    Make sure that you add the following lines to your ‘kernel;  line in grub;
     
                    Ide0=noprobe ide1=noprobe hda=noprobe hdb=noprobe
                   
    And that the blk driver is loaded early in the modules file.  
    "
     
    Brian Ehlert (hopefully you have found this useful)
    • Marcat ca răspuns de Deadlines 8 februarie 2010 19:33
    8 februarie 2010 19:03

Toate mesajele

  • It appears that the ICs actually didn't install properly - in spite of the script finishing.

    Have you attempted to install them again?

    What is your distribution flavor and kernel revision?

    Brian Ehlert (hopefully you have found this useful)
    2 februarie 2010 18:24
  • Brian,

    Yes, I have tried to install them a couple of times, as for my environment...

    From the original post:

    "The VM I'm seeing this problem with is running CentOS 5.4 kernel 2.6.18-167-11.1.el5 using LVM."

    The strange thing is, the drivers do seem to have installed and loading, but the probes seem to be searching for additional, non-existent GUIDs during the boot process.  At least I *think* that is what's happening. 

    For instance, take a look at this output:

    [deadlines@vlad ~]# lsmod | grep vmbus
    vmbus                  86120  3 netvsc,storvsc,blkvsc
    [deadlines@vlad ~]# ps -eF | grep vm
    root       333    11  0     0     0   0 Feb01 ?        00:00:00 [vmbusQ/0]

    As you can see, the vmbus seems to be loaded and running. 

    Here's a more complete picture of the entire loading process for the ICs during boot:

    VMBUS_DRV: Vmbus initializing.... current log level 0x1f1f0006 (1f1f,6)
    VMBUS: +++++++ Build Date=Jun 29 2009 18:39:53 +++++++
    VMBUS: +++++++ Build Description=Version 2.0 +++++++
    VMBUS: +++++++ Vmbus supported version = 13 +++++++
    VMBUS: +++++++ Vmbus using SINT 2 +++++++
    VMBUS: Windows hypervisor detected! Retrieving more info...
    VMBUS: Vendor ID: Microsoft Hv
    VMBUS: Interface ID: Hv#1
    VMBUS: OS Build:6001-6.0-18-0.18016
    VMBUS: Hypercall page VA=0x00004000, PA=0x1ed05000
    VMBUS_DRV: irq 0x5 vector 0x25
    VMBUS: SynIC version: 1
    VMBUS: Vmbus connected!!
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={c5295816-f63a-4d5f-8d1a4daf999ca185}
    VMBUS: Channel offer notification - child relid 1 monitor id 0 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000000-0000-8899-0000000000000000}
    VMBUS: Channel offer notification - child relid 2 monitor id 1 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000001-0000-8899-0000000000000000}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS_DRV: child device (ffff81001ec10888) registered
    VMBUS: Channel offer notification - child relid 3 monitor id 0 allocated 0, type {cfa8b69e-5b4a-4cc0-b98b8ba1a1f3f95a} instance {58f75a6d-d949-4320-99e1a2a2576d581c}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS_DRV: child device (ffff81001ec10488) registered
    VMBUS: Channel offer notification - child relid 5 monitor id 2 allocated 1, type {f8615163-df3e-46c5-913ff2d2f965ed0e} instance {e4a858ad-c43d-4b7b-8275347baf70c29c}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={cfa8b69e-5b4a-4cc0-b98b8ba1a1f3f95a}
    VMBUS_DRV: child device (ffff81001ec10088) registered
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={f8615163-df3e-46c5-913ff2d2f965ed0e}
    VMBUS_DRV: child device (ffff81001f29ac88) registered
    BLKVSC_DRV: Blkvsc initializing....
    BLKVSC: max io outstd 226
    VMBUS_DRV: child driver (ffffffff881ab120) registering - name blkvsc
    VMBUS_DRV: device object (ffff81001ec10af0) set to driver object (ffffffff881ab278)
    VMBUS: channel <ffff81001ec9fe00> open success!!
    STORVSC: BEGIN_INITIALIZATION_OPERATION...
    STORVSC: QUERY_PROTOCOL_VERSION_OPERATION...
    STORVSC: QUERY_PROPERTIES_OPERATION...
    STORVSC: END_INITIALIZATION_OPERATION...
    STORVSC: **** storage channel up and running!! ****
    BLKVSC_DRV: blkvsc registered for major 3!!
     hda: hda1 hda2
    BLKVSC_DRV: hda added!! capacity 125829120 sector_size 512
    VMBUS_DRV: device object (ffff81001ec106f0) set to driver object (ffffffff881ab278)
    VMBUS: channel <ffff81001ec9f800> open success!!
    STORVSC: BEGIN_INITIALIZATION_OPERATION...
    STORVSC: QUERY_PROTOCOL_VERSION_OPERATION...
    STORVSC: QUERY_PROPERTIES_OPERATION...
    STORVSC: END_INITIALIZATION_OPERATION...
    STORVSC: **** storage channel up and running!! ****
    register_blkdev: cannot get major 22 for ide
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    STORVSC: disabling storage device (ffff81001ec96680)...

    STORVSC: removing storage device (ffff81001ec96680)...
    STORVSC: storage device (ffff81001ec96680) safe to remove
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_2 (ffff81001ec10488) on driver blkvsc (-16)...
    blkvsc: probe of vmbus_0_2 failed with error -16
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS: Channel offer notification - child relid 1 monitor id 0 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000000-0000-8899-0000000000000000}
    VMBUS: Channel offer notification - child relid 2 monitor id 1 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000001-0000-8899-0000000000000000}
    VMBUS: Channel offer notification - child relid 3 monitor id 0 allocated 0, type {cfa8b69e-5b4a-4cc0-b98b8ba1a1f3f95a} instance {58f75a6d-d949-4320-99e1a2a2576d581c}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS_DRV: device object (ffff81001f29a6f0) set to driver object (ffffffff881ab278)
    VMBUS: Channel offer notification - child relid 5 monitor id 2 allocated 1, type {f8615163-df3e-46c5-913ff2d2f965ed0e} instance {e4a858ad-c43d-4b7b-8275347baf70c29c}
    VMBUS: channel <ffff81001ed29400> open success!!
    STORVSC_DRV: Storvsc initializing....
    STORVSC: max io 107, currently 64

    STORVSC_DRV: request extension size 72, max outstanding reqs 107
    VMBUS_DRV: child driver (ffffffff881bd300) registering - name storvsc
    VMBUS: Channel offer notification - child relid 1 monitor id 0 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000000-0000-8899-0000000000000000}
    VMBUS: Channel offer notification - child relid 2 monitor id 1 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000001-0000-8899-0000000000000000}
    VMBUS: Channel offer notification - child relid 3 monitor id 0 allocated 0, type {cfa8b69e-5b4a-4cc0-b98b8ba1a1f3f95a} instance {58f75a6d-d949-4320-99e1a2a2576d581c}
    VMBUS: Channel offer notification - child relid 5 monitor id 2 allocated 1, type {f8615163-df3e-46c5-913ff2d2f965ed0e} instance {e4a858ad-c43d-4b7b-8275347baf70c29c}
    STORVSC: BEGIN_INITIALIZATION_OPERATION...
    STORVSC: QUERY_PROTOCOL_VERSION_OPERATION...
    STORVSC: QUERY_PROPERTIES_OPERATION...
    STORVSC: END_INITIALIZATION_OPERATION...
    STORVSC: **** storage channel up and running!! ****
    register_blkdev: cannot get major 22 for ide
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    STORVSC: disabling storage device (ffff81001ec96580)...
    STORVSC: removing storage device (ffff81001ec96580)...
    STORVSC: storage device (ffff81001ec96580) safe to remove
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_5 (ffff81001f29a488) on driver blkvsc (-16)...
    blkvsc: probe of vmbus_0_5 failed with error -16
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS_DRV: vmbus_child_device_register() ERROR!! unable to register child device (ffff81001f29a488) (517406016)
    VMBUS: VmbusChannelProcessOffer() ERROR!! unable to add child device object (relid 2)
    NETVSC_DRV: Netvsc initializing....
    VMBUS_DRV: child driver (ffffffff881d0d00) registering - name netvsc
    VMBUS_DRV: device object (ffff81001f29aef0) set to driver object (ffffffff881d0e58)
    VMBUS: channel <ffff81001ec9f400> open success!!
    NETVSC: *** NetVSC channel opened successfully! ***
    NETVSC: Sending NvspMessageTypeInit...
    NETVSC: NvspMessageTypeInit status(1) max mdl chain (34)
    NETVSC: Sending NvspMessage1TypeSendNdisVersion...
    NETVSC: Establishing receive buffer's GPADL...
    NETVSC: Sending NvspMessage1TypeSendReceiveBuffer...
    NETVSC: Receive sections info (count 1, offset 0, endoffset 1048576, suballoc size 2048, num suballocs 512)
    NETVSC: Establishing send buffer's GPADL...
    NETVSC: Sending NvspMessage1TypeSendSendBuffer...
    NETVSC: *** NetVSC channel handshake result - 0 ***
    NETVSC: Device 0xffff81001ed00f40 mac addr 00155d173c1c
    NETVSC: Device 0xffff81001ed00f40 link state up
    VMBUS: Channel offer notification - child relid 1 monitor id 0 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000000-0000-8899-0000000000000000}
    VMBUS: Channel offer notification - child relid 2 monitor id 1 allocated 1, type {32412632-86cb-44a2-9b5c50d1417354f5} instance {00000001-0000-8899-0000000000000000}
    VMBUS: Channel offer notification - child relid 3 monitor id 0 allocated 0, type {cfa8b69e-5b4a-4cc0-b98b8ba1a1f3f95a} instance {58f75a6d-d949-4320-99e1a2a2576d581c}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS_DRV: device object (ffff81001f29a6f0) set to driver object (ffffffff881ab278)
    VMBUS: Channel offer notification - child relid 5 monitor id 2 allocated 1, type {f8615163-df3e-46c5-913ff2d2f965ed0e} instance {e4a858ad-c43d-4b7b-8275347baf70c29c}
    VMBUS: channel <ffff81001ed5ca00> open success!!
    STORVSC: BEGIN_INITIALIZATION_OPERATION...
    STORVSC: QUERY_PROTOCOL_VERSION_OPERATION...
    STORVSC: QUERY_PROPERTIES_OPERATION...
    STORVSC: END_INITIALIZATION_OPERATION...
    STORVSC: **** storage channel up and running!! ****
    register_blkdev: cannot get major 22 for ide
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    STORVSC: disabling storage device (ffff81001ed5b980)...
    STORVSC: removing storage device (ffff81001ed5b980)...
    STORVSC: storage device (ffff81001ed5b980) safe to remove
    STORVSC: StorVscOnChannelCallback() ERROR!! unable to get stor device...device being destroyed?
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_6 (ffff81001f29a488) on driver blkvsc (-16)...
    blkvsc: probe of vmbus_0_6 failed with error -16
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS_DRV: vmbus_child_device_register() ERROR!! unable to register child device (ffff81001f29a488) (518192448)
    VMBUS: VmbusChannelProcessOffer() ERROR!! unable to add child device object (relid 2)
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={f8615163-df3e-46c5-913ff2d2f965ed0e}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={cfa8b69e-5b4a-4cc0-b98b8ba1a1f3f95a}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={32412632-86cb-44a2-9b5c50d1417354f5}
    VMBUS_DRV: generating uevent - VMBUS_DEVICE_CLASS_GUID={c5295816-f63a-4d5f-8d1a4daf999ca185}

    I'm pretty sure CentOS 5.4 and the Linux ICs are known to not play nicely at the kernel version I'm running, but thought I'd give it a shot anyways.  Figured I'd throw this out here just to see if anyone has run into similar issues or have an idea on how it might be corrected.


    3 februarie 2010 16:10
  • Deadlines - We are having this exact same issue in our environment.

    Hyper-V running on Server 2008 DC Edition with SP2 (Not R2).

    CentOS 5.4 guest running Kernel 2.6.18-164.11.1.el5 (Not using LVM though and using an IDE disk for the VM, not SCSI.)

    IC's seemed to install ok after I installed kernel-devel and gcc (No errors after this)

    [root@bct-dpm01 ~]# uname -a
    Linux bct-dpm01.hq.bendigotelco.com.au 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 07:39:04 EST 2010 i686 i686 i386 GNU/Linux
    [root@bct-dpm01 ~]# dmesg | grep ERROR
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_2 (c190d854) on driver blkvsc (-16)...
    BLKVSC_DRV: blkvsc_probe() ERROR!! register_blkdev() failed! ret -16
    VMBUS_DRV: vmbus_probe() ERROR!! probe() failed for device vmbus_0_4 (c190d854) on driver blkvsc (-16)...
    VMBUS_DRV: vmbus_child_device_register() ERROR!! unable to register child device (c190d854) (1)
    VMBUS: VmbusChannelProcessOffer() ERROR!! unable to add child device object (relid 2)

    [root@bct-dpm01 ~]# ps -eF | grep vm
    root       332     7  0     0     0   0 21:39 ?        00:00:00 [vmbusQ/0]

    The load process looks basically the same as the post above.

    I don't expect to get any realy support as CentOS is not "Officially Supported", however I thought I'd post this anyway.

    3 februarie 2010 23:53
  • Thanks for the feedback Matt, this is definitely curious.  I'm actually using the IDE controller for my disk as well, which is why this seems so odd to me.  From what I've been reading the STORVSC module is for SCSI controllers, which then begs the question why is it loading it at all? 

    It seems kind of silly to me that the Linux ICs are an all or nothing scenario, that is you have no granularity over what modules are installed.  And yeah, it's definitely not "officially supported" but then again we aren't paying anything to post here so it's not like we're seeking "official" support... hopefully trying to open a discussion in an open forum like this will be just fine.  I'm not sure how much traction we'll get here, but figure it's worth trying.
    4 februarie 2010 15:27
  • I just received this responce from one of the team members at Microsoft:

    "
    Looks like the boot options line in GRUB might be incorrect.
     
    Make sure that you add the following lines to your ‘kernel;  line in grub;
     
                    Ide0=noprobe ide1=noprobe hda=noprobe hdb=noprobe
                   
    And that the blk driver is loaded early in the modules file.  
    "
     
    Brian Ehlert (hopefully you have found this useful)
    • Marcat ca răspuns de Deadlines 8 februarie 2010 19:33
    8 februarie 2010 19:03
  • Thanks Brian, adding the, "ide0=noprobe" & "ide1=noprobe" options to the kernel fixed the issue for me.  The vmbus drivers script adds the, "hda=noprobe" and "hdb=noprobe" commands automatically, but the ide options need to be added manually. 
    8 februarie 2010 19:39
  • ide vs hd depends on  how the distribution 'sees' the disk devices.

    most Linux distros will present an IDE device as /dev/hdX (X = 0 through something)
    A SCSI divice will be /dev/sdX
    A Xen disk is /dev/xvdX

    and so on.

    Normally I have seen CentOS following the /hdX convention but I have not used the latest.

    Interesting tidbit to file away in the back of the mind for later..
    Brian Ehlert (hopefully you have found this useful)
    8 februarie 2010 21:04