[libvirt] [PATCH 1/2] util: Add "shareable" field for virSCSIDevice struct

John Ferlan jferlan at redhat.com
Mon Jan 6 15:53:16 UTC 2014



On 01/02/2014 09:45 AM, Osier Yang wrote:
> Unlike the host devices of other types, SCSI host device XML supports
> "shareable" tag. This patch introduces it for the virSCSIDevice struct
> for a later patch use (to detect if the SCSI device is shareable when
> preparing the SCSI host device in QEMU driver).
> ---
>  src/libvirt_private.syms         |  1 +
>  src/qemu/qemu_cgroup.c           |  3 ++-
>  src/qemu/qemu_hostdev.c          |  9 ++++++---
>  src/security/security_apparmor.c |  3 ++-
>  src/security/security_dac.c      |  6 ++++--
>  src/security/security_selinux.c  |  6 ++++--
>  src/util/virscsi.c               | 11 ++++++++++-
>  src/util/virscsi.h               |  4 +++-
>  8 files changed, 32 insertions(+), 11 deletions(-)
> 
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 2dbb8f8..68ca5da 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1671,6 +1671,7 @@ virSCSIDeviceGetDevName;
>  virSCSIDeviceGetName;
>  virSCSIDeviceGetReadonly;
>  virSCSIDeviceGetSgName;
> +virSCSIDeviceGetShareable;
>  virSCSIDeviceGetTarget;
>  virSCSIDeviceGetUnit;
>  virSCSIDeviceGetUsedBy;
> diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
> index a18955e..10b1131 100644
> --- a/src/qemu/qemu_cgroup.c
> +++ b/src/qemu/qemu_cgroup.c
> @@ -295,7 +295,8 @@ qemuSetupHostdevCGroup(virDomainObjPtr vm,
>                                           dev->source.subsys.u.scsi.bus,
>                                           dev->source.subsys.u.scsi.target,
>                                           dev->source.subsys.u.scsi.unit,
> -                                         dev->readonly)) == NULL)
> +                                         dev->readonly,
> +                                         dev->shareable)) == NULL)
>                  goto cleanup;
>  
>              if (virSCSIDeviceFileIterate(scsi,
> diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c
> index dee61e7..86a463a 100644
> --- a/src/qemu/qemu_hostdev.c
> +++ b/src/qemu/qemu_hostdev.c
> @@ -267,7 +267,8 @@ qemuUpdateActiveScsiHostdevs(virQEMUDriverPtr driver,
>                                        hostdev->source.subsys.u.scsi.bus,
>                                        hostdev->source.subsys.u.scsi.target,
>                                        hostdev->source.subsys.u.scsi.unit,
> -                                      hostdev->readonly)))
> +                                      hostdev->readonly,
> +                                      hostdev->shareable)))
>              goto cleanup;
>  
>          virSCSIDeviceSetUsedBy(scsi, def->name);
> @@ -1097,7 +1098,8 @@ qemuPrepareHostdevSCSIDevices(virQEMUDriverPtr driver,
>                                        hostdev->source.subsys.u.scsi.bus,
>                                        hostdev->source.subsys.u.scsi.target,
>                                        hostdev->source.subsys.u.scsi.unit,
> -                                      hostdev->readonly)))
> +                                      hostdev->readonly,
> +                                      hostdev->shareable)))
>              goto cleanup;
>  
>          if (scsi && virSCSIDeviceListAdd(list, scsi) < 0) {
> @@ -1395,7 +1397,8 @@ qemuDomainReAttachHostScsiDevices(virQEMUDriverPtr driver,
>                                        hostdev->source.subsys.u.scsi.bus,
>                                        hostdev->source.subsys.u.scsi.target,
>                                        hostdev->source.subsys.u.scsi.unit,
> -                                      hostdev->readonly))) {
> +                                      hostdev->readonly,
> +                                      hostdev->shareable))) {
>              VIR_WARN("Unable to reattach SCSI device %s:%d:%d:%d on domain %s",
>                       hostdev->source.subsys.u.scsi.adapter,
>                       hostdev->source.subsys.u.scsi.bus,
> diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c
> index a9f04d2..86a033f 100644
> --- a/src/security/security_apparmor.c
> +++ b/src/security/security_apparmor.c
> @@ -833,7 +833,8 @@ AppArmorSetSecurityHostdevLabel(virSecurityManagerPtr mgr,
>                               dev->source.subsys.u.scsi.bus,
>                               dev->source.subsys.u.scsi.target,
>                               dev->source.subsys.u.scsi.unit,
> -                             dev->readonly);
> +                             dev->readonly,
> +                             dev->shareable);
>  
>           if (!scsi)
>               goto done;
> diff --git a/src/security/security_dac.c b/src/security/security_dac.c
> index cb7d322..0952df9 100644
> --- a/src/security/security_dac.c
> +++ b/src/security/security_dac.c
> @@ -536,7 +536,8 @@ virSecurityDACSetSecurityHostdevLabel(virSecurityManagerPtr mgr,
>                               dev->source.subsys.u.scsi.bus,
>                               dev->source.subsys.u.scsi.target,
>                               dev->source.subsys.u.scsi.unit,
> -                             dev->readonly);
> +                             dev->readonly,
> +                             dev->shareable);
>  
>          if (!scsi)
>              goto done;
> @@ -653,7 +654,8 @@ virSecurityDACRestoreSecurityHostdevLabel(virSecurityManagerPtr mgr,
>                               dev->source.subsys.u.scsi.bus,
>                               dev->source.subsys.u.scsi.target,
>                               dev->source.subsys.u.scsi.unit,
> -                             dev->readonly);
> +                             dev->readonly,
> +                             dev->shareable);
>  
>          if (!scsi)
>              goto done;
> diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
> index 11c0c3b..37f755c 100644
> --- a/src/security/security_selinux.c
> +++ b/src/security/security_selinux.c
> @@ -1353,7 +1353,8 @@ virSecuritySELinuxSetSecurityHostdevSubsysLabel(virDomainDefPtr def,
>                               dev->source.subsys.u.scsi.bus,
>                               dev->source.subsys.u.scsi.target,
>                               dev->source.subsys.u.scsi.unit,
> -                             dev->readonly);
> +                             dev->readonly,
> +                             dev->shareable);
>  
>          if (!scsi)
>              goto done;
> @@ -1544,7 +1545,8 @@ virSecuritySELinuxRestoreSecurityHostdevSubsysLabel(virSecurityManagerPtr mgr,
>                               dev->source.subsys.u.scsi.bus,
>                               dev->source.subsys.u.scsi.target,
>                               dev->source.subsys.u.scsi.unit,
> -                             dev->readonly);
> +                             dev->readonly,
> +                             dev->shareable);
>  
>              if (!scsi)
>                  goto done;
> diff --git a/src/util/virscsi.c b/src/util/virscsi.c
> index 7aca9e6..7462f9d 100644
> --- a/src/util/virscsi.c
> +++ b/src/util/virscsi.c
> @@ -58,6 +58,7 @@ struct _virSCSIDevice {
>      const char *used_by; /* name of the domain using this dev */
>  
>      bool readonly;
> +    bool shareable;
>  };
>  
>  struct _virSCSIDeviceList {
> @@ -185,7 +186,8 @@ virSCSIDeviceNew(const char *adapter,
>                   unsigned int bus,
>                   unsigned int target,
>                   unsigned int unit,
> -                 bool readonly)
> +                 bool readonly,
> +                 bool shareable)
>  {
>      virSCSIDevicePtr dev, ret = NULL;
>      char *sg = NULL;
> @@ -201,6 +203,7 @@ virSCSIDeviceNew(const char *adapter,
>      dev->target = target;
>      dev->unit = unit;
>      dev->readonly = readonly;
> +    dev->shareable= shareable;

Need a space prior to the "=" (dev->shareable = shareable)

ACK with the adjustment.


>  
>      if (!(sg = virSCSIDeviceGetSgName(adapter, bus, target, unit)))
>          goto cleanup;
> @@ -311,6 +314,12 @@ virSCSIDeviceGetReadonly(virSCSIDevicePtr dev)
>      return dev->readonly;
>  }
>  
> +bool
> +virSCSIDeviceGetShareable(virSCSIDevicePtr dev)
> +{
> +    return dev->shareable;
> +}
> +
>  int
>  virSCSIDeviceFileIterate(virSCSIDevicePtr dev,
>                           virSCSIDeviceFileActor actor,
> diff --git a/src/util/virscsi.h b/src/util/virscsi.h
> index cce5df4..84890be 100644
> --- a/src/util/virscsi.h
> +++ b/src/util/virscsi.h
> @@ -46,7 +46,8 @@ virSCSIDevicePtr virSCSIDeviceNew(const char *adapter,
>                                    unsigned int bus,
>                                    unsigned int target,
>                                    unsigned int unit,
> -                                  bool readonly);
> +                                  bool readonly,
> +                                  bool shareable);
>  
>  void virSCSIDeviceFree(virSCSIDevicePtr dev);
>  void virSCSIDeviceSetUsedBy(virSCSIDevicePtr dev, const char *name);
> @@ -57,6 +58,7 @@ unsigned int virSCSIDeviceGetBus(virSCSIDevicePtr dev);
>  unsigned int virSCSIDeviceGetTarget(virSCSIDevicePtr dev);
>  unsigned int virSCSIDeviceGetUnit(virSCSIDevicePtr dev);
>  bool virSCSIDeviceGetReadonly(virSCSIDevicePtr dev);
> +bool virSCSIDeviceGetShareable(virSCSIDevicePtr dev);
>  
>  /*
>   * Callback that will be invoked once for each file
> 




More information about the libvir-list mailing list