On Wed, Apr 26, 2023 at 09:56:30 +0800, Jiang Jiacheng wrote: > On 2023/4/24 18:57, Jiri Denemark wrote: > > On Fri, Apr 21, 2023 at 17:39:12 +0800, Jiang Jiacheng wrote: > >> > >> Thank you for your reply and review, I'd appreciate for you to do that. > >> > >> And I'd also like to confirm that we have the following usages after the > >> modification. > >> for non-parallel migration, we can use > >> > >> --compressed > >> default to use XBZRLE for migration > >> > >> --compressed --comp-methods ... > >> use the specificed methods for migration > >> > >> --comp-methods ... > >> use the specificed methods for migration, and set the corresponding cap > >> > >> and those are forbidden since the method isn't supported with > >> non-parallel migration > >> > >> [--compressed] --comp-methods=zlib > >> [--compressed] --comp-methods=zstd > > > > Correct. > > > >> for parallel migration, we have to enable the cap using "--parallel", > >> and can use like: > >> > >> --parallel > >> default to NONE compression method for parallel migration > >> > >> --parallel --comp-methods ... > >> use the specificed methods for parallel migration > >> > >> --parallel --compressed --comp-methods ... > >> use the specificed methods for parallel migration, it's same as the > >> above > >> > >> and those are forbidden since the method isn't supported with parallel > >> migration > >> > >> --parallel [--compressed] --comp-methods=mt > >> --parallel [--compressed] --comp-methods=xbzrle > > > > Right, but see below... > > > >> In particular, > >> > >> --parallel --compressed > >> > >> is forbiddene because it leads to a result that NONE compression method > >> is chosen but compressed flag is set. > >> And I test it on libvirt-6.2.0 with qemu-6.2.0, '--parallel > >> --compressed' will set cap 'xbzrle' and 'multifd' both to true, which I > >> think is unreasonable though the migration is succeed. > > > > Hmm, that would mean xbzrle is supported even for parallel migrations > > and we should not break this functionality. I experimented a bit and > > both mt and xbzrle compression methods seem to work with parallel > > migration. Even query-migrate reports compression statistics that > > suggest it actually works since they are similar for both normal and > > --parallel migrations. > > > > On the other hand according to Juan from QEMU none of them is compatible > > with parallel migration. I will try to discuss this a bit more with him, > > but so far I think we should allow both xbzrle and mt with parallel > > migration to avoid breaking things people might be using. > > > > I found that there is a patch about this in qemu, which disables multifd > capability explicitly when compression=on. Maybe xbzrle have the same > problem as mt? > > ref:https://github.com/qemu/qemu/commit/6f39c90b86b9d3772779f873ed88aaa75a220aba Yeah, I discussed the situation with Juan and he said both mt and xbzrle compressions are incompatible with multifd. QEMU would just ignore either multifd or compression when asked for both. The mt case will already report an error since QEMU 7.2.0 and xbzrle case may eventually do similar thing. So apparently allowing these two compression methods with --parallel is actually a bug and we can fix it properly in this series. That said, I will push this with the suggested changes squashed in. Reviewed-by: Jiri Denemark <jdenemar@xxxxxxxxxx>