← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1643017] [NEW] libvirtError: block copy still active: disk 'vdb' not ready for pivot yet

 

Public bug reported:

This is an additional corner case for swap_volume not covered by
bug#1630600.

The following failure is taken from the devstack change enabling the new
swap_volume tempest test :

tempest: configure compute-feature-enabled.swap_volume if libvirt
https://review.openstack.org/#/c/374373/

http://logs.openstack.org/73/374373/3/check/gate-tempest-dsvm-neutron-
full-ubuntu-
xenial/961698c/logs/screen-n-cpu.txt.gz#_2016-11-18_16_11_39_759

2016-11-18 16:11:39.759 4511 ERROR root [req-f40054e1-f18d-478a-
ae14-9c738bb961f2 tempest-TestVolumeSwap-1057055027 tempest-
TestVolumeSwap-1057055027] Original exception being dropped: ['Traceback
(most recent call last):\n', '  File
"/opt/stack/new/nova/nova/virt/libvirt/driver.py", line 1228, in
_swap_volume\n    dev.abort_job(pivot=True)\n', '  File
"/opt/stack/new/nova/nova/virt/libvirt/guest.py", line 647, in
abort_job\n    self._guest._domain.blockJobAbort(self._disk,
flags=flags)\n', '  File "/usr/local/lib/python2.7/dist-
packages/eventlet/tpool.py", line 186, in doit\n    result =
proxy_call(self._autowrap, f, *args, **kwargs)\n', '  File
"/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 144, in
proxy_call\n    rv = execute(f, *args, **kwargs)\n', '  File
"/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 125, in
execute\n    six.reraise(c, e, tb)\n', '  File "/usr/local/lib/python2.7
/dist-packages/eventlet/tpool.py", line 83, in tworker\n    rv =
meth(*args, **kwargs)\n', '  File "/usr/local/lib/python2.7/dist-
packages/libvirt.py", line 739, in blockJobAbort\n    if ret == -1:
raise libvirtError (\'virDomainBlockJobAbort() failed\', dom=self)\n',
"libvirtError: block copy still active: disk 'vdb' not ready for pivot
yet\n"]

As discussed in bug#1630600 and at length in RHBZ#1382165 the issue here
is that QEMU reports the progress of the block job as complete
(status.cur == status.end) _before_ updating the ready field of the
block job. This causes the following attempt to pivot to fail.

Nova should attempt to use the ready field of the block job when
available (libvirt >1.2.18) to ensure that we are able to pivot.

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1643017

Title:
  libvirtError: block copy still active: disk 'vdb' not ready for pivot
  yet

Status in OpenStack Compute (nova):
  New

Bug description:
  This is an additional corner case for swap_volume not covered by
  bug#1630600.

  The following failure is taken from the devstack change enabling the
  new swap_volume tempest test :

  tempest: configure compute-feature-enabled.swap_volume if libvirt
  https://review.openstack.org/#/c/374373/

  http://logs.openstack.org/73/374373/3/check/gate-tempest-dsvm-neutron-
  full-ubuntu-
  xenial/961698c/logs/screen-n-cpu.txt.gz#_2016-11-18_16_11_39_759

  2016-11-18 16:11:39.759 4511 ERROR root [req-f40054e1-f18d-478a-
  ae14-9c738bb961f2 tempest-TestVolumeSwap-1057055027 tempest-
  TestVolumeSwap-1057055027] Original exception being dropped:
  ['Traceback (most recent call last):\n', '  File
  "/opt/stack/new/nova/nova/virt/libvirt/driver.py", line 1228, in
  _swap_volume\n    dev.abort_job(pivot=True)\n', '  File
  "/opt/stack/new/nova/nova/virt/libvirt/guest.py", line 647, in
  abort_job\n    self._guest._domain.blockJobAbort(self._disk,
  flags=flags)\n', '  File "/usr/local/lib/python2.7/dist-
  packages/eventlet/tpool.py", line 186, in doit\n    result =
  proxy_call(self._autowrap, f, *args, **kwargs)\n', '  File
  "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 144,
  in proxy_call\n    rv = execute(f, *args, **kwargs)\n', '  File
  "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 125,
  in execute\n    six.reraise(c, e, tb)\n', '  File
  "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 83,
  in tworker\n    rv = meth(*args, **kwargs)\n', '  File
  "/usr/local/lib/python2.7/dist-packages/libvirt.py", line 739, in
  blockJobAbort\n    if ret == -1: raise libvirtError
  (\'virDomainBlockJobAbort() failed\', dom=self)\n', "libvirtError:
  block copy still active: disk 'vdb' not ready for pivot yet\n"]

  As discussed in bug#1630600 and at length in RHBZ#1382165 the issue
  here is that QEMU reports the progress of the block job as complete
  (status.cur == status.end) _before_ updating the ready field of the
  block job. This causes the following attempt to pivot to fail.

  Nova should attempt to use the ready field of the block job when
  available (libvirt >1.2.18) to ensure that we are able to pivot.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1643017/+subscriptions


Follow ups