[pve-devel] [PATCH qemu-server] block job: mirror: always detach the target node upon cancelling
Friedrich Weber
f.weber at proxmox.com
Thu Jul 31 11:16:05 CEST 2025
On 31/07/2025 11:09, Fiona Ebner wrote:
> This is a further improvement after commit 8e671e79 ("block job:
> mirror: always detach the target node upon error"). It might be
> that a cancelled job ends up in concluded state without an error
> being set in the result of the 'query-block-jobs' QMP command and
> the target node would not be detached. To fix it, also detach the
> target node when cancelling the job. This is correct even when the job
> was cancelled after completion, as in that case, the drive is not
> switched over to use the target node.
>
> Reported-by: Friedrich Weber <f.weber at proxmox.com>
> Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
> ---
Thanks for the patch!
Seems to fix my reproducer:
Without this patch (`opt` being a directory storage):
# qm stop 101; qm destroy 101; qm create 101 --scsi0 local-lvm:1; qm start 101; timeout 1 qm disk move 101 scsi0 opt; qm disk move 101 scsi0 opt
Logical volume "vm-101-disk-0" successfully removed.
Logical volume "vm-101-disk-0" created.
Logical volume pve/vm-101-disk-0 changed.
scsi0: successfully created disk 'local-lvm:vm-101-disk-0,size=1G'
create full clone of drive scsi0 (local-lvm:vm-101-disk-0)
Formatting '/opt/images/101/vm-101-disk-0.raw', fmt=raw size=1073741824 preallocation=off
drive mirror is starting for drive-scsi0
mirror-scsi0: transferred 85.0 MiB of 1.0 GiB (8.30%) in 0s
mirror-scsi0: Cancelling block job
mirror-scsi0: Done.
storage migration failed: block job (mirror) error: interrupted by signal
create full clone of drive scsi0 (local-lvm:vm-101-disk-0)
Formatting '/opt/images/101/vm-101-disk-0.raw', fmt=raw size=1073741824 preallocation=off
storage migration failed: adding blockdev 'zc34a13b971104aab98614370f1a40f' failed : VM 101 qmp command 'blockdev-add' failed - Duplicate nodes with node-name='zc34a13b971104aab98614370f1a40f'
With this patch:
# qm stop 101; qm destroy 101; qm create 101 --scsi0 local-lvm:1; qm start 101; timeout 1 qm disk move 101 scsi0 opt; qm disk move 101 scsi0 opt
Logical volume "vm-101-disk-0" successfully removed.
Logical volume "vm-101-disk-0" created.
Logical volume pve/vm-101-disk-0 changed.
scsi0: successfully created disk 'local-lvm:vm-101-disk-0,size=1G'
create full clone of drive scsi0 (local-lvm:vm-101-disk-0)
Formatting '/opt/images/101/vm-101-disk-0.raw', fmt=raw size=1073741824 preallocation=off
drive mirror is starting for drive-scsi0
mirror-scsi0: transferred 142.0 MiB of 1.0 GiB (13.87%) in 0s
mirror-scsi0: Cancelling block job
mirror-scsi0: Done.
storage migration failed: block job (mirror) error: interrupted by signal
create full clone of drive scsi0 (local-lvm:vm-101-disk-0)
Formatting '/opt/images/101/vm-101-disk-0.raw', fmt=raw size=1073741824 preallocation=off
drive mirror is starting for drive-scsi0
mirror-scsi0: transferred 13.0 MiB of 1.0 GiB (1.27%) in 0s
mirror-scsi0: transferred 1.0 GiB of 1.0 GiB (100.00%) in 1s, ready
all 'mirror' jobs are ready
mirror-scsi0: Completing block job...
mirror-scsi0: Completed successfully.
mirror-scsi0: mirror-job finished
So consider this
Tested-by: Friedrich Weber <f.weber at proxmox.com>
More information about the pve-devel
mailing list