migration bandwidth setting quirks with non-shared storage migration

Description of problem

Limiting migration bandwidth when non-shared-storage migration is used is quirky and almost impossible to do correctly for VMs with multiple disks.

Specific problems:

  1. virsh migrate-setspeed does not change the bandwidth limit of the blockjobs handling the migration of storage

    The expectation is that it can modify what's set with virsh migrate --bandwidth although it doesn't modify the speed of the blockjobs at all. Combined with quirk 2) there's no way to actually control the blockjob speed.

  2. virsh blockjob --bandwidth is (likely) not allowed due to the migration async job

    There is no way to set the bandwidth limit individually or control it further once migration is started.

  3. virsh migrate --bandwidth is applied separately to every blockjob handling migration of storage

    While the --bandwidth parameter is applied to the blockjob, the value is applied to every single blockjob. Thus effectively multiplying the allowed speed for multi-disk VMs. Subsequently if the user tired to compensate the memory migration speed would be unnecessarily limited.

Edited by Jano Tomko