[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for-6.0] qga/commands-posix: Send CCW address on s390x with t
From: |
Thomas Huth |
Subject: |
Re: [PATCH for-6.0] qga/commands-posix: Send CCW address on s390x with the fsinfo data |
Date: |
Mon, 14 Dec 2020 09:53:21 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 |
On 25/11/2020 11.54, Thomas Huth wrote:
> We need the CCW address on the libvirt side to correctly identify
> the disk, so add this information to the GuestDiskAddress on s390x.
>
> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1755075
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> qga/commands-posix.c | 34 ++++++++++++++++++++++++++++++++++
> qga/qapi-schema.json | 19 ++++++++++++++++++-
> 2 files changed, 52 insertions(+), 1 deletion(-)
>
> diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> index c089e38120..5aa5eff84f 100644
> --- a/qga/commands-posix.c
> +++ b/qga/commands-posix.c
> @@ -1029,6 +1029,38 @@ static bool build_guest_fsinfo_for_nonpci_virtio(char
> const *syspath,
> return true;
> }
>
> +/*
> + * Store disk device info for CCW devices (s390x channel I/O devices).
> + * Returns true if information has been stored, or false for failure.
> + */
> +static bool build_guest_fsinfo_for_ccw_dev(char const *syspath,
> + GuestDiskAddress *disk,
> + Error **errp)
> +{
> + unsigned int cssid, ssid, subchno, devno;
> + char *p;
> +
> + p = strstr(syspath, "/devices/css");
> + if (!p || sscanf(p + 12, "%*x/%x.%x.%x/%*x.%*x.%x/",
> + &cssid, &ssid, &subchno, &devno) < 4) {
> + g_debug("could not parse ccw device sysfs path: %s", syspath);
> + return false;
> + }
> +
> + disk->has_ccw_address = true;
> + disk->ccw_address = g_new0(GuestCCWAddress, 1);
> + disk->ccw_address->cssid = cssid;
> + disk->ccw_address->ssid = ssid;
> + disk->ccw_address->subchno = subchno;
> + disk->ccw_address->devno = devno;
> +
> + if (strstr(p, "/virtio")) {
> + build_guest_fsinfo_for_nonpci_virtio(syspath, disk, errp);
> + }
> +
> + return true;
> +}
> +
> /* Store disk device info specified by @sysfs into @fs */
> static void build_guest_fsinfo_for_real_device(char const *syspath,
> GuestFilesystemInfo *fs,
> @@ -1081,6 +1113,8 @@ static void build_guest_fsinfo_for_real_device(char
> const *syspath,
>
> if (strstr(syspath, "/devices/pci")) {
> has_hwinf = build_guest_fsinfo_for_pci_dev(syspath, disk, errp);
> + } else if (strstr(syspath, "/devices/css")) {
> + has_hwinf = build_guest_fsinfo_for_ccw_dev(syspath, disk, errp);
> } else if (strstr(syspath, "/virtio")) {
> has_hwinf = build_guest_fsinfo_for_nonpci_virtio(syspath, disk,
> errp);
> } else {
> diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
> index 3b3d1d0bd9..8be84b56e9 100644
> --- a/qga/qapi-schema.json
> +++ b/qga/qapi-schema.json
> @@ -846,6 +846,21 @@
> 'data': {'domain': 'int', 'bus': 'int',
> 'slot': 'int', 'function': 'int'} }
>
> +##
> +# @GuestCCWAddress:
> +#
> +# @cssid: channel subsystem image id
> +# @ssid: subchannel set id
> +# @devno: device number
> +#
> +# Since: 6.0
> +##
> +{ 'struct': 'GuestCCWAddress',
> + 'data': {'cssid': 'int',
> + 'ssid': 'int',
> + 'subchno': 'int',
> + 'devno': 'int'} }
> +
> ##
> # @GuestDiskAddress:
> #
> @@ -856,6 +871,7 @@
> # @unit: unit id
> # @serial: serial number (since: 3.1)
> # @dev: device node (POSIX) or device UNC (Windows) (since: 3.1)
> +# @ccw-address: CCW address on s390x (since: 6.0)
> #
> # Since: 2.2
> ##
> @@ -863,7 +879,8 @@
> 'data': {'pci-controller': 'GuestPCIAddress',
> 'bus-type': 'GuestDiskBusType',
> 'bus': 'int', 'target': 'int', 'unit': 'int',
> - '*serial': 'str', '*dev': 'str'} }
> + '*serial': 'str', '*dev': 'str',
> + '*ccw-address': 'GuestCCWAddress'} }
>
> ##
> # @GuestDiskInfo:
>
Ping!
Michael, any comments on this, or do you think that it ready to go?
Thanks,
Thomas
- Re: [PATCH for-6.0] qga/commands-posix: Send CCW address on s390x with the fsinfo data,
Thomas Huth <=