<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
.MsoPapDefault
        {mso-style-type:export-only;
        margin-bottom:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi All,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I'm seeing tapdisk processes not being terminated after a HVM vm is shutdown or migrated away. I don't see this problem with linux paravirt domu's, just windows hvm ones.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>xl.cfg:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>name = 'nathanwin'<o:p></o:p></p><p class=MsoNormal>memory = 4096<o:p></o:p></p><p class=MsoNormal>vcpus = 2<o:p></o:p></p><p class=MsoNormal>disk = [ 'file:/mnt/gtc_disk_p1/nathanwin/drive_c,hda,w' ]<o:p></o:p></p><p class=MsoNormal>vif = [ 'mac=00:16:3D:01:03:E0,bridge=vlan208' ]<o:p></o:p></p><p class=MsoNormal>builder = "hvm"<o:p></o:p></p><p class=MsoNormal>kernel = "/usr/lib/xen/boot/hvmloader"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>localtime = 0<o:p></o:p></p><p class=MsoNormal>on_poweroff = "destroy"<o:p></o:p></p><p class=MsoNormal>on_reboot = "restart"<o:p></o:p></p><p class=MsoNormal>on_crash = "destroy"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>vnc = 1<o:p></o:p></p><p class=MsoNormal>vncunused = 1<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>cpuid  = [<o:p></o:p></p><p class=MsoNormal>            '0:eax=00000000000000000000000000001011',<o:p></o:p></p><p class=MsoNormal>            '1:eax=00000000000000100000011011000010,ecx=10000011101110100010001000000011,edx=00010111100010111111101111111111',<o:p></o:p></p><p class=MsoNormal>            '2:eax=01010101000000110101101000000001',<o:p></o:p></p><p class=MsoNormal>          '7,0:eax=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,ebx=00000000000000000000000000000000,ecx=00000000000000000000000000000000,edx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',<o:p></o:p></p><p class=MsoNormal>         '13,1:eax=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0',<o:p></o:p></p><p class=MsoNormal>           '10:ebx=00000000000000000000000000000000',<o:p></o:p></p><p class=MsoNormal>           '11:edx=00000000000000000000000000000000',<o:p></o:p></p><p class=MsoNormal>   '2147483650:eax=01100101011101000110111001001001,ebx=00101001010100100010100001101100,ecx=01101111011001010101100000100000,edx=00101001010100100010100001101110',<o:p></o:p></p><p class=MsoNormal>   '2147483651:eax=01010101010100000100001100100000,ebx=00100000001000000010000000100000,ecx=00100000001000000010000000100000,edx=01001100001000000010000000100000',<o:p></o:p></p><p class=MsoNormal>   '2147483652:eax=00110000001101000011011000110101,ebx=00100000010000000010000000100000,ecx=00110111001100100010111000110010,edx=00000000011110100100100001000111',<o:p></o:p></p><p class=MsoNormal>   '2147483656:eax=00000000000000000011000000101000',<o:p></o:p></p><p class=MsoNormal>         ]<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Starting with the VM running initially on another host, I migrate it in:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>migration target: Ready to receive domain.<o:p></o:p></p><p class=MsoNormal>Saving to migration stream new xl format (info 0x0/0x0/1450)<o:p></o:p></p><p class=MsoNormal>Loading new save file <incoming migration stream> (new xl fmt info 0x0/0x0/1450)<o:p></o:p></p><p class=MsoNormal> Savefile contains xl domain config<o:p></o:p></p><p class=MsoNormal>WARNING: ignoring "kernel" directive for HVM guest. Use "firmware_override" instead if you really want a non-default firmware<o:p></o:p></p><p class=MsoNormal>xc: progress: Reloading memory pages: 56320/1114193    5%<o:p></o:p></p><p class=MsoNormal>xc: progress: Reloading memory pages: 1003520/1114193   90%<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 37 aio:/mnt/gtc_disk_p1/nathanwin/drive_c<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 40 /dev/xen/blktap-2/tapdev0<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 37 aio:/mnt/gtc_disk_p1/nathanwin/drive_c<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 40 /dev/xen/blktap-2/tapdev2<o:p></o:p></p><p class=MsoNormal>migration target: Transfer complete, requesting permission to start domain.<o:p></o:p></p><p class=MsoNormal>migration sender: Target has acknowledged transfer.<o:p></o:p></p><p class=MsoNormal>migration sender: Giving target permission to start.<o:p></o:p></p><p class=MsoNormal>migration target: Got permission, starting domain.<o:p></o:p></p><p class=MsoNormal>migration target: Domain started successsfully.<o:p></o:p></p><p class=MsoNormal>migration sender: Target reports successful startup.<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__device_destroy_tapdisk 66 type=aio:/mnt/gtc_disk_p1/nathanwin/drive_c disk=:/mnt/gtc_disk_p1/nathanwin/drive_c<o:p></o:p></p><p class=MsoNormal>Migration successful.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>and now I have 2 tapdisk procs:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>gtc-vana-005 ~ # ps auxf | grep tapdisk<o:p></o:p></p><p class=MsoNormal>root     32491  0.1  0.2  20364  4636 ?        SLs  11:06   0:00 tapdisk<o:p></o:p></p><p class=MsoNormal>root     32520  0.0  0.2  20364  4636 ?        SLs  11:06   0:00 tapdisk<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Which seems odd given that the VM in question only has a single disk attached to it and the qemu proc indicates it's using tapdev2:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>root     32524  0.4  0.7 323208 15040 ?        SLsl 11:06   0:00 /usr/lib/xen/bin/qemu-system-i386 -xen-domid 3 -chardev socket,id=libxl-cmd,path=/var/run/xen/qmp-libxl-3,server,nowait -mon chardev=libxl-cmd,mode=control -nodefaults -name nathanwin--incoming -vnc 127.0.0.1:0,to=99 -device cirrus-vga -global vga.vram_size_mb=8 -boot order=cda -smp 2,maxcpus=2 -device rtl8139,id=nic0,netdev=net0,mac=00:16:3d:01:03:e0 -netdev type=tap,id=net0,ifname=vif3.0-emu,script=no,downscript=no -incoming fd:13 -machine xenfv -m 4088 -drive file=/dev/xen/blktap-2/tapdev2,if=ide,index=0,media=disk,format=raw,cache=writeback<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>gtc-vana-005 ~ # lsof -p 32520 | grep blktap-2<o:p></o:p></p><p class=MsoNormal>tapdisk 32520 root  mem    CHR              246,2               886671 /dev/xen/blktap-2/blktap2<o:p></o:p></p><p class=MsoNormal>tapdisk 32520 root   19u   CHR              246,2         0t0   886671 /dev/xen/blktap-2/blktap2<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>gtc-vana-005 ~ # lsof -p 32491 | grep blktap-2   <o:p></o:p></p><p class=MsoNormal>tapdisk 32491 root  mem    CHR              246,0               903999 /dev/xen/blktap-2/blktap0<o:p></o:p></p><p class=MsoNormal>tapdisk 32491 root   14u   CHR              246,0         0t0   903999 /dev/xen/blktap-2/blktap0<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I then migrate this VM off to another host:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>migration target: Ready to receive domain.<o:p></o:p></p><p class=MsoNormal>Saving to migration stream new xl format (info 0x0/0x0/1450)<o:p></o:p></p><p class=MsoNormal>Loading new save file <incoming migration stream> (new xl fmt info 0x0/0x0/1450)<o:p></o:p></p><p class=MsoNormal> Savefile contains xl domain config<o:p></o:p></p><p class=MsoNormal>WARNING: ignoring "kernel" directive for HVM guest. Use "firmware_override" instead if you really want a non-default firmware<o:p></o:p></p><p class=MsoNormal>xc: progress: Reloading memory pages: 56320/1114193    5%<o:p></o:p></p><p class=MsoNormal>xc: progress: Reloading memory pages: 1003520/1114193   90%<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 37 aio:/mnt/gtc_disk_p1/nathanwin/drive_c<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 40 /dev/xen/blktap-2/tapdev2<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 37 aio:/mnt/gtc_disk_p1/nathanwin/drive_c<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__blktap_devpath 40 /dev/xen/blktap-2/tapdev3<o:p></o:p></p><p class=MsoNormal>migration target: Transfer complete, requesting permission to start domain.<o:p></o:p></p><p class=MsoNormal>migration sender: Target has acknowledged transfer.<o:p></o:p></p><p class=MsoNormal>migration sender: Giving target permission to start.<o:p></o:p></p><p class=MsoNormal>migration target: Got permission, starting domain.<o:p></o:p></p><p class=MsoNormal>migration target: Domain started successsfully.<o:p></o:p></p><p class=MsoNormal>migration sender: Target reports successful startup.<o:p></o:p></p><p class=MsoNormal>DEBUG libxl__device_destroy_tapdisk 66 type=aio:/mnt/gtc_disk_p1/nathanwin/drive_c disk=:/mnt/gtc_disk_p1/nathanwin/drive_c<o:p></o:p></p><p class=MsoNormal>Migration successful.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>and I'm down to one tapdisk proc that didn't get cleaned up:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>gtc-vana-005 ~ # ps auxf | grep tapdisk<o:p></o:p></p><p class=MsoNormal>root     32520  0.0  0.2  20364  4636 ?        SLs  11:06   0:00 tapdisk<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So it seems like xen is creating a second tapdisk proc on startup for some reason when it doesn't need to, then on cleanup it's only killing one of the two procs.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Any thoughts? This is on the latest 4.4.1-7.el6 packages.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- Nathan<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>