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

xen-blkfront: BUG_ON(info->nr_rings)


  • To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Jason Andryuk <jandryuk@xxxxxxxxx>
  • Date: Wed, 10 Mar 2021 09:58:57 -0500
  • Delivery-date: Wed, 10 Mar 2021 14:59:13 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi,

I was running a loop of `xl block-attach ; xl block-detach` and I
triggered a BUG in xen-blkfront, drivers/block/xen-blkfront.c:1917
This is BUG_ON(info->nr_rings) in negotiate_mq called by blkback_changed.

I'm using Linux 5.4.103 and blktap3 on Xen 4.12 (OpenXT), though I
don't think that matters.  The backtrace and some preceding logs (from
the reproducer) are below.

I just repro-ed with this:
path=<backend path/state>
xenstore-write $path 5 ; xenstore-write $path 4

info->nr_rings is still set because of the unexpected transition
XenbusStateClosing -> XenbusStateConnected:
dom7: [ 2866.574853] vbd vbd-51728: blkfront:blkback_changed to state 5.
dom7: [ 2866.578385] vbd vbd-51728: blkfront:blkback_changed to state 4.

I'm not totally sure how to handle this.  The XenbusStateConnected
event should be creating a new blkfront device, but instead it's seen
by the old one which hasn't been cleaned up yet.

After this BUG, the xenwatch thread is gone.  The VM is still running,
but watches aren't triggering anymore.

Regards,
Jason

dom7: [ 2866.494691] vbd vbd-51728: blkfront:blkback_changed to state 1.
tapback[27208]: backend.c:276 51728 physical_device_changed
tapback[27208]: backend.c:362 51728 found tapdisk[17223], for 254:9
tapdisk[17223]: VBD 9 got disk info: sectors=147456 sector size=512, info=0
xl: [18012] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18012] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
dom7: [ 2866.507702] vbd vbd-51728: blkfront:blkback_changed to state 2.
xl: [18022] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18026] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18024] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18022] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18018] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18026] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18024] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18018] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18038] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18034] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18038] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18034] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18030] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18030] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
tapback[27208]: frontend.c:216 51728 front-end supports persistent
grants but we don't
tapdisk[17223]: connecting VBD 9 domid=7, devid=51728, pool (null),
evt 12, poll duration 0, poll idle threshold 0
tapdisk[17223]: ring 0x74ce10 connected
dom7: [ 2866.536144] vbd vbd-51728: blkfront:blkback_changed to state 5.
xl: [18020] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18016] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
xl: [18020] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18016] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
xl: [18036] libxl_disk.c:303:device_disk_add:Domain 7:device already
exists in xenstore
dom7: [ 2866.544439] vbd vbd-51728: blkfront:blkback_changed to state 5.
xl: [18036] libxl_device.c:1468:device_addrm_aocomplete:unable to add device
dom7: [ 2866.555778] vbd vbd-51728: blkfront:blkback_changed to state 5.
dom7: [ 2866.565810] vbd vbd-51728: blkfront:blkback_changed to state 5.
dom7: [ 2866.574853] vbd vbd-51728: blkfront:blkback_changed to state 5.
dom7: [ 2866.578385] vbd vbd-51728: blkfront:blkback_changed to state 4.
dom7: [ 2866.578655] ------------[ cut here ]------------
dom7: [ 2866.578662] kernel BUG at .../drivers/block/xen-blkfront.c:1917!
dom7: [ 2866.578681] invalid opcode: 0000 [#1] SMP PTI
dom7: [ 2866.578688] CPU: 0 PID: 76 Comm: xenwatch Tainted: G  O      5.4.103 #1
dom7: [ 2866.578699] RIP: 0010:talk_to_blkback+0x7b7/0xdb0
dom7: [ 2866.578706] Code: ff ff fa ff e9 5d fb ff ff 49 8b 56 08 48
8b b3 08 01 00 00 8b 7c 24 1c e8 96 bb ff ff 85 c0 0f 84 60 ff ff ff
e9 4b ff ff ff <0f> 0b 48 c7 c2 0c e7 c0 81 be f4 ff ff ff 4c 89 f7 e8
c3 ff fa ff
dom7: [ 2866.578727] RSP: 0018:ffffc900004e3d80 EFLAGS: 00010202
dom7: [ 2866.578734] RAX: 0000000000000001 RBX: ffff88801df68200 RCX:
0000000000000000
dom7: [ 2866.578743] RDX: 000000000000004a RSI: ffff88801d20ab80 RDI:
0000000000000000
dom7: [ 2866.578752] RBP: ffff88801e31a800 R08: 00000000000003c6 R09:
0000000000000800
dom7: [ 2866.578761] R10: ffffc900004d3db0 R11: 00000000000002da R12:
ffffffff81ea4410
dom7: [ 2866.578770] R13: dead000000000122 R14: ffff88801e31a800 R15:
ffff88801df68200
dom7: [ 2866.578779] FS:  0000000000000000(0000)
GS:ffff88801f200000(0000) knlGS:0000000000000000
dom7: [ 2866.578789] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
dom7: [ 2866.578797] CR2: 00007f34ade5a0d4 CR3: 000000001d0bc003 CR4:
00000000003606b0
dom7: [ 2866.578807] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
dom7: [ 2866.578815] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400
dom7: [ 2866.578825] Call Trace:
dom7: [ 2866.578830]  blkback_changed+0x14a/0xc50
dom7: [ 2866.578836]  ? find_watch+0x40/0x40
dom7: [ 2866.578841]  ? xenbus_read_driver_state+0x34/0x60
dom7: [ 2866.578848]  ? find_watch+0x40/0x40
dom7: [ 2866.578853]  xenwatch_thread+0x97/0x160
dom7: [ 2866.578859]  ? wait_woken+0x80/0x80
dom7: [ 2866.578866]  kthread+0xf3/0x130
dom7: [ 2866.578871]  ? kthread_create_worker_on_cpu+0x70/0x70
dom7: [ 2866.578879]  ret_from_fork+0x35/0x40
dom7: [ 2866.578884] Modules linked in: xen_argo(O)
dom7: [ 2866.578890] ---[ end trace 06163b0483faf9c0 ]---
dom7: [ 2866.578898] RIP: 0010:talk_to_blkback+0x7b7/0xdb0
dom7: [ 2866.586251] Code: ff ff fa ff e9 5d fb ff ff 49 8b 56 08 48
8b b3 08 01 00 00 8b 7c 24 1c e8 96 bb ff ff 85 c0 0f 84 60 ff ff ff
e9 4b ff ff ff <0f> 0b 48 c7 c2 0c e7 c0 81 be f4 ff ff ff 4c 89 f7 e8
c3 ff fa ff
dom7: [ 2866.586276] RSP: 0018:ffffc900004e3d80 EFLAGS: 00010202
dom7: [ 2866.586288] RAX: 0000000000000001 RBX: ffff88801df68200 RCX:
0000000000000000
dom7: [ 2866.586301] RDX: 000000000000004a RSI: ffff88801d20ab80 RDI:
0000000000000000
dom7: [ 2866.586315] RBP: ffff88801e31a800 R08: 00000000000003c6 R09:
0000000000000800
dom7: [ 2866.586325] R10: ffffc900004d3db0 R11: 00000000000002da R12:
ffffffff81ea4410
dom7: [ 2866.586339] R13: dead000000000122 R14: ffff88801e31a800 R15:
ffff88801df68200
dom7: [ 2866.586354] FS:  0000000000000000(0000)
GS:ffff88801f200000(0000) knlGS:0000000000000000
dom7: [ 2866.586368] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
dom7: [ 2866.586376] CR2: 00007f34ade5a0d4 CR3: 000000001d0bc003 CR4:
00000000003606b0
dom7: [ 2866.586390] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
dom7: [ 2866.586404] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400
tapdisk[17223]: disconnecting domid=7, devid=51728



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.