On 2013年03月20日 11:35, Gao feng wrote: > Intend to reduce the redundant code,use virNumaSetupMemoryPolicy > to replace virLXCControllerSetupNUMAPolicy and > qemuProcessInitNumaMemoryPolicy. > > This patch also moves the numa related codes to the > file virnuma.c and virnuma.h > > Signed-off-by: Gao feng<gaofeng@xxxxxxxxxxxxxx> > --- > src/conf/domain_conf.c | 31 ++++-------- > src/conf/domain_conf.h | 25 +--------- > src/libvirt_private.syms | 9 ++-- > src/lxc/lxc_controller.c | 116 +------------------------------------------ > src/qemu/qemu_cgroup.c | 4 +- > src/qemu/qemu_driver.c | 6 +-- > src/qemu/qemu_process.c | 123 +-------------------------------------------- > src/util/virnuma.c | 126 +++++++++++++++++++++++++++++++++++++++++++++++ > src/util/virnuma.h | 30 +++++++++++ > 9 files changed, 182 insertions(+), 288 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index a1cfc76..fa70329 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -690,11 +690,6 @@ VIR_ENUM_IMPL(virDomainTimerMode, VIR_DOMAIN_TIMER_MODE_LAST, > "paravirt", > "smpsafe"); > > -VIR_ENUM_IMPL(virDomainNumatuneMemMode, VIR_DOMAIN_NUMATUNE_MEM_LAST, > - "strict", > - "preferred", > - "interleave"); > - > VIR_ENUM_IMPL(virDomainStartupPolicy, VIR_DOMAIN_STARTUP_POLICY_LAST, > "default", > "mandatory", > @@ -709,12 +704,6 @@ VIR_ENUM_IMPL(virDomainDiskTray, VIR_DOMAIN_DISK_TRAY_LAST, > "closed", > "open"); > > -VIR_ENUM_IMPL(virDomainNumatuneMemPlacementMode, > - VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_LAST, > - "default", > - "static", > - "auto"); > - > VIR_ENUM_IMPL(virDomainRNGModel, > VIR_DOMAIN_RNG_MODEL_LAST, > "virtio"); > @@ -9852,7 +9841,7 @@ virDomainDefParseXML(virCapsPtr caps, > int placement_mode = 0; > if (placement) { > if ((placement_mode = > - virDomainNumatuneMemPlacementModeTypeFromString(placement))< 0) { > + virNumaTuneMemPlacementModeTypeFromString(placement))< 0) { > virReportError(VIR_ERR_XML_ERROR, > _("Unsupported memory placement " > "mode '%s'"), placement); > @@ -9862,18 +9851,18 @@ virDomainDefParseXML(virCapsPtr caps, > VIR_FREE(placement); > } else if (def->numatune.memory.nodemask) { > /* Defaults to "static" if nodeset is specified. */ > - placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC; > + placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC; > } else { > /* Defaults to "placement" of<vcpu> if nodeset is > * not specified. > */ > if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC) > - placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC; > + placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC; > else > - placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO; > + placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO; > } > > - if (placement_mode == VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC&& > + if (placement_mode == VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC&& > !def->numatune.memory.nodemask) { > virReportError(VIR_ERR_XML_ERROR, "%s", > _("nodeset for NUMA memory tuning must be set " > @@ -9882,13 +9871,13 @@ virDomainDefParseXML(virCapsPtr caps, > } > > /* Ignore 'nodeset' if 'placement' is 'auto' finally */ > - if (placement_mode == VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO) > + if (placement_mode == VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO) > virBitmapFree(def->numatune.memory.nodemask); > > /* Copy 'placement' of<numatune> to<vcpu> if its 'placement' > * is not specified and 'placement' of<numatune> is specified. > */ > - if (placement_mode == VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO&& > + if (placement_mode == VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO&& > !def->cpumask) > def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO; > > @@ -9907,7 +9896,7 @@ virDomainDefParseXML(virCapsPtr caps, > * and 'placement' of<vcpu> is 'auto'. > */ > if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) { > - def->numatune.memory.placement_mode = VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO; > + def->numatune.memory.placement_mode = VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO; > def->numatune.memory.mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; > } > } > @@ -14818,7 +14807,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, > virBufferAsprintf(buf, "<memory mode='%s' ", mode); > > if (def->numatune.memory.placement_mode == > - VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC) { > + VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_STATIC) { > nodemask = virBitmapFormat(def->numatune.memory.nodemask); > if (nodemask == NULL) { > virReportError(VIR_ERR_INTERNAL_ERROR, "%s", > @@ -14829,7 +14818,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, > virBufferAsprintf(buf, "nodeset='%s'/>\n", nodemask); > VIR_FREE(nodemask); > } else if (def->numatune.memory.placement_mode) { > - placement = virDomainNumatuneMemPlacementModeTypeToString(def->numatune.memory.placement_mode); > + placement = virNumaTuneMemPlacementModeTypeToString(def->numatune.memory.placement_mode); > virBufferAsprintf(buf, "placement='%s'/>\n", placement); > } > virBufferAddLit(buf, "</numatune>\n"); > diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h > index bfc37a0..6d856a3 100644 > --- a/src/conf/domain_conf.h > +++ b/src/conf/domain_conf.h > @@ -47,6 +47,7 @@ > # include "device_conf.h" > # include "virbitmap.h" > # include "virstoragefile.h" > +# include "virnuma.h" > > /* forward declarations of all device types, required by > * virDomainDeviceDef > @@ -1605,14 +1606,6 @@ enum virDomainCpuPlacementMode { > VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST > }; > > -enum virDomainNumatuneMemPlacementMode { > - VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_DEFAULT = 0, > - VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC, > - VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO, > - > - VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_LAST > -}; > - > typedef struct _virDomainTimerCatchupDef virDomainTimerCatchupDef; > typedef virDomainTimerCatchupDef *virDomainTimerCatchupDefPtr; > struct _virDomainTimerCatchupDef { > @@ -1701,18 +1694,6 @@ virDomainVcpuPinDefPtr virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def, > int nvcpupin, > int vcpu); > > -typedef struct _virDomainNumatuneDef virDomainNumatuneDef; > -typedef virDomainNumatuneDef *virDomainNumatuneDefPtr; > -struct _virDomainNumatuneDef { > - struct { > - virBitmapPtr nodemask; > - int mode; > - int placement_mode; /* enum virDomainNumatuneMemPlacementMode */ > - } memory; > - > - /* Future NUMA tuning related stuff should go here. */ > -}; > - > typedef struct _virBlkioDeviceWeight virBlkioDeviceWeight; > typedef virBlkioDeviceWeight *virBlkioDeviceWeightPtr; > struct _virBlkioDeviceWeight { > @@ -1802,7 +1783,7 @@ struct _virDomainDef { > virDomainVcpuPinDefPtr emulatorpin; > } cputune; > > - virDomainNumatuneDef numatune; > + virNumaTuneDef numatune; > > /* These 3 are based on virDomainLifeCycleAction enum flags */ > int onReboot; > @@ -2397,8 +2378,6 @@ VIR_ENUM_DECL(virDomainGraphicsSpicePlaybackCompression) > VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode) > VIR_ENUM_DECL(virDomainGraphicsSpiceClipboardCopypaste) > VIR_ENUM_DECL(virDomainGraphicsSpiceMouseMode) > -VIR_ENUM_DECL(virDomainNumatuneMemMode) > -VIR_ENUM_DECL(virDomainNumatuneMemPlacementMode) > VIR_ENUM_DECL(virDomainHyperv) > VIR_ENUM_DECL(virDomainRNGModel) > VIR_ENUM_DECL(virDomainRNGBackend) > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index dc01bfa..8890859 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -252,10 +252,6 @@ virDomainNetRemove; > virDomainNetTypeToString; > virDomainNostateReasonTypeFromString; > virDomainNostateReasonTypeToString; > -virDomainNumatuneMemModeTypeFromString; > -virDomainNumatuneMemModeTypeToString; > -virDomainNumatuneMemPlacementModeTypeFromString; > -virDomainNumatuneMemPlacementModeTypeToString; > virDomainObjAssignDef; > virDomainObjCopyPersistentDef; > virDomainObjGetPersistentDef; > @@ -1557,7 +1553,12 @@ virNodeSuspendGetTargetMask; > > > # util/virnuma.h > +virDomainNumatuneMemModeTypeFromString; > +virDomainNumatuneMemModeTypeToString; > +virNumaTuneMemPlacementModeTypeFromString; > +virNumaTuneMemPlacementModeTypeToString; > virNumaGetAutoPlacementAdvice; Not alphabetically sorted. Just for your reference, I have an alias like below to build after every changing: alias $name="make && make syntax-check && make check" This helps me a lot as I'm careless enough to make mistakes just like what you do. :-) > +virNumaSetupMemoryPolicy; > Others look good, ACK. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list