On 17.04.23 20:19, Vladimir Sementsov-Ogievskiy wrote:
On 16.04.23 21:44, Zhang, Chen wrote:
-----Original Message-----
From: Vladimir Sementsov-Ogievskiy <vsement...@yandex-team.ru>
Sent: Friday, April 14, 2023 5:51 PM
To: Zhang, Chen <chen.zh...@intel.com>; qemu-de...@nongnu.org
Cc: qemu-block@nongnu.org; pbonz...@redhat.com; arm...@redhat.com;
ebl...@redhat.com; jasow...@redhat.com; dgilb...@redhat.com;
quint...@redhat.com; hre...@redhat.com; kw...@redhat.com; Zhang,
Hailiang <zhanghaili...@xfusion.com>; lizhij...@fujitsu.com;
wencongya...@huawei.com; xiechanglon...@gmail.com; den-
plotni...@yandex-team.ru
Subject: Re: [PATCH] replication: compile out some staff when replication is
not configured
On 14.04.23 04:24, Zhang, Chen wrote:
So, if I want to have an option to disable all COLO modules, do you
mean it should be additional --disable-colo option? Or better keep
one option -- disable-replication (and, maybe just rename to to --disable-
colo)?
I think keep the option --disable-replication is enough.
Generally speaking, these three modules do not belong to COLO, It has
been decoupled at the time of design.
Instead, COLO is formed when these three modules are used in
combination.
But it's not enough to me, I want to have a possibility to not build the
subsystem I don't need.
As I said, COLO not a specific subsystem, It is a usage of three general
subsystems.
Let's back to this patch, it try to not build block replication when not
configured. It's OK.
Although COLO may be the only user of replication, but can't assume all the
COLO used subsystem
not needed, even have a --disable-colo. For example in this patch disabled the
net/filter-mirror/redirector....
Qemu network filter is a general framework with many submodules:
filter-buffer/replay/mirror/rewriter.....
Logically speaking, It is completely irrelevant with COLO.
OK, understand now, thanks for explanation!
Hmm, OK, filters are separate.
But what's the sense in COLO subsystem when replication is disabled?
We have an explicit check in migration.c in migrate_caps_check():
#ifndef CONFIG_REPLICATION
if (cap_list[MIGRATION_CAPABILITY_X_COLO]) {
error_setg(errp, "QEMU compiled without replication module"
" can't enable COLO");
error_append_hint(errp, "Please enable replication before COLO.\n");
return false;
}
#endif
So, x-colo capability - an entry point to COLO can't be used anyway. So, no
reason to build it in?
--
Best regards,
Vladimir