[libvirt] [PATCH v4 02/14] conf: hostdev: Introduce virDomainHostdevSubsysSCSIClear
Laine Stump
laine at laine.org
Fri Mar 24 03:09:10 UTC 2017
On 03/22/2017 11:27 AM, Erik Skultety wrote:
> Just a tiny wrapper over the SCSI def clearing logic to drop some
> if-else branches from a switch, mainly because extending the switch in
> the future would render the current code with branching less readable.
>
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
> src/conf/domain_conf.c | 33 ++++++++++++++++++++++-----------
> 1 file changed, 22 insertions(+), 11 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 17909820be..568bf6722e 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -2303,6 +2303,17 @@ virDomainHostdevSubsysSCSIiSCSIClear(virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc
> iscsisrc->auth = NULL;
> }
>
> +
> +static void
> +virDomainHostdevSubsysSCSIClear(virDomainHostdevSubsysSCSIPtr scsisrc)
> +{
> + if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI)
> + virDomainHostdevSubsysSCSIiSCSIClear(&scsisrc->u.iscsi);
> + else
> + VIR_FREE(scsisrc->u.host.adapter);
> +}
> +
> +
> void virDomainHostdevDefClear(virDomainHostdevDefPtr def)
> {
> if (!def)
> @@ -2336,17 +2347,17 @@ void virDomainHostdevDefClear(virDomainHostdevDefPtr def)
> }
> break;
> case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS:
> - if (def->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
> - virDomainHostdevSubsysSCSIPtr scsisrc = &def->source.subsys.u.scsi;
> - if (scsisrc->protocol ==
> - VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) {
> - virDomainHostdevSubsysSCSIiSCSIClear(&scsisrc->u.iscsi);
> - } else {
> - VIR_FREE(scsisrc->u.host.adapter);
> - }
> - } else if (def->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST) {
> - virDomainHostdevSubsysSCSIVHostPtr hostsrc = &def->source.subsys.u.scsi_host;
> - VIR_FREE(hostsrc->wwpn);
> + switch ((virDomainHostdevSubsysType) def->source.subsys.type) {
> + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
> + virDomainHostdevSubsysSCSIClear(&def->source.subsys.u.scsi);
> + break;
> + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
> + VIR_FREE(def->source.subsys.u.scsi_host.wwpn);
> + break;
> + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
> + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
> + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
> + break;
> }
> break;
> }
>
ACK.
More information about the libvir-list
mailing list