On-behalf-of: SAP stefan.ko...@sap.com
Signed-off-by: Stefan Kober <stefan.ko...@cyberus-technology.de>
---
 src/ch/ch_alias.c  | 59 ++++++++++++++++++++++++++++++++++++++++++++++
 src/ch/ch_alias.h  | 27 +++++++++++++++++++++
 src/ch/meson.build |  2 ++
 3 files changed, 88 insertions(+)
 create mode 100644 src/ch/ch_alias.c
 create mode 100644 src/ch/ch_alias.h

diff --git a/src/ch/ch_alias.c b/src/ch/ch_alias.c
new file mode 100644
index 0000000000..63bcd9f212
--- /dev/null
+++ b/src/ch/ch_alias.c
@@ -0,0 +1,59 @@
+/*
+ * ch_alias.c: CH device alias handling
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "virutil.h"
+
+#include "ch_alias.h"
+
+#define VIR_FROM_THIS VIR_FROM_CH
+
+int chAssignDeviceDiskAlias(virDomainDiskDef *disk)
+{
+    const char *prefix = virDomainDiskBusTypeToString(disk->bus);
+    int idx = -1;
+
+    if (disk->info.alias) {
+        return 0;
+    }
+
+    idx = virDiskNameToIndex(disk->dst);
+
+    if (idx < 0) {
+        return -1;
+    }
+
+    disk->info.alias = g_strdup_printf("%s-disk%d", prefix, idx);
+
+    return 0;
+}
+
+int chAssignDeviceAliases(virDomainDef *def)
+{
+    size_t i;
+
+    for (i = 0; i < def->ndisks; i++) {
+        if (chAssignDeviceDiskAlias(def->disks[i]) < 0)
+            return -1;
+    }
+
+    /* TODO: handle other devices */
+
+    return 0;
+}
diff --git a/src/ch/ch_alias.h b/src/ch/ch_alias.h
new file mode 100644
index 0000000000..81e20c27c7
--- /dev/null
+++ b/src/ch/ch_alias.h
@@ -0,0 +1,27 @@
+/*
+ * ch_alias.h: CH device alias handling
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "domain_conf.h"
+
+int
+chAssignDeviceDiskAlias(virDomainDiskDef *disk);
+
+int
+chAssignDeviceAliases(virDomainDef *def);
diff --git a/src/ch/meson.build b/src/ch/meson.build
index bba7ee90ee..b3e9c03832 100644
--- a/src/ch/meson.build
+++ b/src/ch/meson.build
@@ -19,6 +19,8 @@ ch_driver_sources = [
   'ch_hostdev.h',
   'ch_hotplug.c',
   'ch_hotplug.h',
+  'ch_alias.c',
+  'ch_alias.h',
 ]
 
 driver_source_files += files(ch_driver_sources)
-- 
2.50.1

Reply via email to