[LTP] [PATCH v2 1/1] lib/tst_virt: support IBM/Z LPAR and z/VM virtualization environments
Cyril Hrubis
chrubis@suse.cz
Mon Nov 9 16:09:43 CET 2020
Hi!
Actually we can simplify the code like this:
+static int is_ibmz(int virt_type)
+{
+ FILE *sysinfo;
+ char line[64];
+ int found_lpar, found_zvm;
+
+ if (virt_type != VIRT_IBMZ_LPAR && virt_type != VIRT_IBMZ_ZVM)
+ return 0;
+
+ if (access("/proc/sysinfo", F_OK) != 0)
+ return 0;
+
+ sysinfo = SAFE_FOPEN(NULL, "/proc/sysinfo", "r");
+ found_lpar = 0;
+ found_zvm = 0;
+ while (fgets(line, sizeof(line), sysinfo) != NULL) {
+ if (strstr(line, "LPAR"))
+ found_lpar = 1;
+ else if (strstr(line, "z/VM"))
+ found_zvm = 1;
+ }
+
+ SAFE_FCLOSE(NULL, sysinfo);
+
+ switch (virt_type) {
+ case VIRT_IBMZ:
+ return found_lpar;
+ case VIRT_IBMZ_LPAR:
+ return found_lpar && !found_zvm;
+ case VIRT_IBMZ_ZVM:
+ return found_lpar && found_zvm;
+ default:
+ return 0;
+ }
+}
+
static int try_systemd_detect_virt(void)
{
FILE *f;
@@ -102,6 +138,9 @@ static int try_systemd_detect_virt(void)
if (!strncmp("xen", virt_type, 3))
return VIRT_XEN;
+ if (!strncmp("zvm", virt_type, 3))
+ return VIRT_IBMZ_ZVM;
+
return VIRT_OTHER;
}
@@ -118,11 +157,15 @@ int tst_is_virt(int virt_type)
switch (virt_type) {
case VIRT_ANY:
- return is_xen() || is_kvm();
+ return is_xen() || is_kvm() || is_ibmz(VIRT_IBMZ);
case VIRT_XEN:
return is_xen();
case VIRT_KVM:
return is_kvm();
+ case VIRT_IBMZ:
+ case VIRT_IBMZ_LPAR:
+ case VIRT_IBMZ_ZVM:
+ return is_ibmz(virt_type);
case VIRT_OTHER:
return 0;
}
Do you agree with these changes?
--
Cyril Hrubis
chrubis@suse.cz
More information about the ltp
mailing list