Compare commits

...

No commits in common. "c8" and "c8s" have entirely different histories.
c8 ... c8s

14 changed files with 41720 additions and 1005 deletions

2
.gitignore vendored
View File

@ -1,3 +1,3 @@
SOURCES/cmsfs-1.1.8c.tar.gz
SOURCES/s390-tools-2.25.0.tar.gz
SOURCES/s390-tools-2.6.0.tar.gz
SOURCES/src_vipa-2.1.0.tar.gz

View File

@ -1,3 +1,3 @@
9c9a4e89bddb2b4e6e09ef6fc7c2e6f2ad6316de SOURCES/cmsfs-1.1.8c.tar.gz
e8e0d3f651179fd14dc4a40d53a1e4ef6edaae7d SOURCES/s390-tools-2.25.0.tar.gz
46a09493030c3c80987b7710e34a33462e4b90f4 SOURCES/s390-tools-2.6.0.tar.gz
8ed8592a0a9370ce8422df9231ccb17f6cf49bed SOURCES/src_vipa-2.1.0.tar.gz

View File

@ -132,12 +132,8 @@ case "$COMMAND" in
fi
fi
if [ -n "$NEWDEFAULT" ] && [ -f "${ZIPLCFG}" ]; then
if grep -q "^default=" "${ZIPLCFG}"; then
sed -i -e "s,^default=.*,default=${NEWDEFAULT}," "${ZIPLCFG}"
else
echo "default=${NEWDEFAULT}" >> "${ZIPLCFG}"
fi
if [ -n "$NEWDEFAULT" ]; then
sed -i -e "s,^default=.*,default=${NEWDEFAULT}," "${ZIPLCFG}"
fi
exit 0
@ -155,10 +151,8 @@ case "$COMMAND" in
BLS_TARGET="${BLS_DIR}/${MACHINE_ID}-${KERNEL_VERSION}.conf"
BLS_DEBUG="$(echo ${BLS_TARGET} | sed -e "s/${KERNEL_VERSION}/${KERNEL_VERSION}~debug/")"
if [ -f "${BLS_TARGET}" ] && [ -f "${ZIPLCFG}" ]; then
TITLE="$(grep '^title[ \t]' "${BLS_TARGET}" | sed -e 's/^title[ \t]*//')"
sed -i -e "/^default=${TITLE}/d" "${ZIPLCFG}"
fi
TITLE="$(grep '^title[ \t]' "${BLS_TARGET}" | sed -e 's/^title[ \t]*//')"
sed -i -e "/^default=${TITLE}/d" "${ZIPLCFG}"
if [[ -f "${BLS_DEBUG}" ]]; then
TITLE="$(grep '^title[ \t]' "${BLS_DEBUG}" | sed -e 's/^title[ \t]*//')"

View File

@ -24,25 +24,6 @@ get_config_line_by_subchannel()
return 1
}
# borrowed from network-scrips, initscripts along with the get_config_by_subchannel
[ -z "$__sed_discard_ignored_files" ] && __sed_discard_ignored_files='/\(~\|\.bak\|\.old\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
get_config_by_subchannel ()
{
LANG=C grep -E -i -l \
"^[[:space:]]*SUBCHANNELS=['\"]?([0-9]\.[0-9]\.[a-f0-9]+,){0,2}${1}(,[0-9]\.[0-9]\.[a-f0-9]+){0,2}['\"]?([[:space:]]+#|[[:space:]]*$)" \
/etc/sysconfig/network-scripts/ifcfg-* \
| LC_ALL=C sed -e "$__sed_discard_ignored_files"
}
get_config_by_subchannel_nm ()
{
LANG=C grep -E -i -l \
"^s390-subchannels=([0-9]\.[0-9]\.[a-f0-9]+;){0,2}${1};([0-9]\.[0-9]\.[a-f0-9]+;){0,2}$" \
/etc/NetworkManager/system-connections/*.nmconnection \
| LC_ALL=C sed -e "$__sed_discard_ignored_files"
}
CHANNEL=${DEVPATH##*/}
if [ $MODE = "dracut" ]; then
@ -68,19 +49,14 @@ if [ $MODE = "dracut" ]; then
elif [ $MODE = "normal" ]; then
NOLOCALE="yes"
. /etc/sysconfig/network-scripts/network-functions
CONFIG_FILE=$(get_config_by_subchannel $CHANNEL)
if [ -n "$CONFIG_FILE" ]; then
. $CONFIG_FILE
else
CONFIG_FILE=$(get_config_by_subchannel_nm $CHANNEL)
if [ -n "$CONFIG_FILE" ]; then
NETTYPE=$(sed -nr "/^\[ethernet\]/ { :l /^s390-nettype[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" $CONFIG_FILE)
SUBCHANNELS=$(sed -nr "/^\[ethernet\]/ { :l /^s390-subchannels[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" $CONFIG_FILE | sed -e "s/;/,/g" -e "s/,$//")
LAYER2=$(sed -nr "/^\[ethernet-s390-options\]/ { :l /^layer2[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" $CONFIG_FILE)
else
exit 1
fi
exit 1
fi
else
echo "Unknown mode=$MODE"

View File

@ -1,12 +0,0 @@
diff -up cmsfs-1.1.8c/cmsfslst.c.orig cmsfs-1.1.8c/cmsfslst.c
--- cmsfs-1.1.8c/cmsfslst.c.orig 2020-08-19 09:47:36.459063820 +0000
+++ cmsfs-1.1.8c/cmsfslst.c 2020-08-19 09:47:45.619063820 +0000
@@ -49,7 +49,7 @@ int main(int argc,unsigned char *argv[])
}
/* sanity check */
- if (*devname == 0x00)
+ if ((devname == NULL) || (*devname == 0x00))
{
(void) fprintf(stderr,"Please specify a CMS volume.\n");
(void) fprintf(stderr,USAGE,argv[0]);

View File

@ -306,14 +306,6 @@ if [ $MODE_ZNET ]; then
eval "$line"
free_device $SUBCHANNELS
done
for line in $(LANG=C grep -E -i -h \
"^s390-subchannels=([0-9]\.[0-9]\.[a-f0-9]+;){2,3}$" \
$( (ls /etc/NetworkManager/system-connections/*.nmconnection 2> /dev/null || echo "__no_config_file") | \
LC_ALL=C sed -e "$__sed_discard_ignored_files") 2> /dev/null)
do
SUBCHANNELS="$(echo $line | sed -e "s/s390-subchannels=//" -e "s/;/,/g")"
free_device $SUBCHANNELS
done
fi
[ -z "$ALL_DEVICES" ] && exit 0

41274
SOURCES/s390-tools-rhel.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
From ecf5a4ecb909bfd91306678d0c460ab2f2837a33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Mon, 18 Nov 2019 04:10:06 -0500
Subject: [PATCH 1/3] zipl: drop redundant string duplication
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Dan Horák <dan@danny.cz>
---
zipl/src/scan.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/zipl/src/scan.c b/zipl/src/scan.c
index 38fa5454..0ea37efa 100644
--- a/zipl/src/scan.c
+++ b/zipl/src/scan.c
@@ -1575,7 +1575,6 @@ scan_check_bls(struct scan_token *scan)
int i, rc;
char *target_value = NULL;
char *img_value = NULL;
- char *buffer = NULL;
/*
* In the BLS case, each BLS section heading inherits a keyword
* assignment target= from zipl.conf, and they are all the same.
@@ -1609,14 +1608,8 @@ scan_check_bls(struct scan_token *scan)
scan[i].content.keyword.value);
return rc;
}
- buffer = (char *)
- misc_malloc(strlen(img_value) + 1);
- if (buffer == NULL)
- return -1;
- memcpy(buffer, img_value, strlen(img_value));
- buffer[strlen(img_value)] = 0;
free(scan[i].content.keyword.value);
- scan[i].content.keyword.value = buffer;
+ scan[i].content.keyword.value = img_value;
}
}
}
From 05f83569960e2774e819fe0942da1f92d0cce35b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Mon, 18 Nov 2019 04:29:04 -0500
Subject: [PATCH 2/3] zipl: set reason not text for failed check
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Dan Horák <dan@danny.cz>
---
zipl/src/scan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/zipl/src/scan.c b/zipl/src/scan.c
index 0ea37efa..0f01cac9 100644
--- a/zipl/src/scan.c
+++ b/zipl/src/scan.c
@@ -1603,7 +1603,7 @@ scan_check_bls(struct scan_token *scan)
scan[i].content.keyword.value);
rc = misc_check_readable_file(img_value);
if (rc) {
- error_text(
+ error_reason(
"Image file '%s' is not accessible",
scan[i].content.keyword.value);
return rc;
From 8ab552b430f109d80966d0c56bed0d204d917d30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Mon, 18 Nov 2019 11:45:50 -0500
Subject: [PATCH 3/3] zipl: fix handling of values with load address in BLS
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Various keywords (like image or ramdisk) allow specifying a load address
as an optional argument. Adapt the logic for checking the presence of
the files to take this into the account.
Fixes: https://github.com/ibm-s390-tools/s390-tools/commit/d71628326d80e623fc9f008fe4ea93edb5592b2e
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1772054
Signed-off-by: Dan Horák <dan@danny.cz>
---
zipl/src/scan.c | 32 ++++++++++++++++++++++++++------
1 file changed, 26 insertions(+), 6 deletions(-)
diff --git a/zipl/src/scan.c b/zipl/src/scan.c
index 0f01cac9..a34edf62 100644
--- a/zipl/src/scan.c
+++ b/zipl/src/scan.c
@@ -1575,6 +1575,8 @@ scan_check_bls(struct scan_token *scan)
int i, rc;
char *target_value = NULL;
char *img_value = NULL;
+ char *file = NULL;
+ char *tmp, *value;
/*
* In the BLS case, each BLS section heading inherits a keyword
* assignment target= from zipl.conf, and they are all the same.
@@ -1595,19 +1597,37 @@ scan_check_bls(struct scan_token *scan)
if (scan[i].content.keyword.keyword == scan_keyword_image ||
scan[i].content.keyword.keyword == scan_keyword_ramdisk) {
- rc = misc_check_readable_file(
- scan[i].content.keyword.value);
+ value = scan[i].content.keyword.value;
+ /*
+ * put the filename only into the file var before
+ * checking its presence
+ */
+ if (contains_address(value)) {
+ tmp = strrchr(value, ',');
+ file = strndup(value, tmp - value);
+ } else {
+ file = value;
+ }
+ rc = misc_check_readable_file(file);
if (rc) {
misc_asprintf(&img_value, "%s%s",
- target_value,
- scan[i].content.keyword.value);
+ target_value, file);
rc = misc_check_readable_file(img_value);
if (rc) {
error_reason(
- "Image file '%s' is not accessible",
- scan[i].content.keyword.value);
+ "File '%s' not accessible", file);
return rc;
}
+ /*
+ * when file has stripped the load address part,
+ * do generate a prefixed value
+ */
+ if (file != value) {
+ free(file);
+ free(img_value);
+ misc_asprintf(&img_value, "%s%s",
+ target_value, value);
+ }
free(scan[i].content.keyword.value);
scan[i].content.keyword.value = img_value;
}

View File

@ -1,348 +0,0 @@
From a17c57bf2b7b6d64a509cb5fb02fe46849bc550c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Mon, 20 Jun 2022 17:43:05 +0200
Subject: [PATCH 1/2] Revert "zipl/src: Implement sorting bls entries by
versions"
This reverts commit a0dba6bfdb50ff373fa710ffe2a307cc0748f18b.
---
zipl/src/scan.c | 139 ++----------------------------------------------
1 file changed, 3 insertions(+), 136 deletions(-)
diff --git a/zipl/src/scan.c b/zipl/src/scan.c
index 0cea1d4..9352f76 100644
--- a/zipl/src/scan.c
+++ b/zipl/src/scan.c
@@ -10,7 +10,6 @@
*
*/
-static const char *VERSION_KEYWORD = "version";
/* Need ISOC99 function isblank() in ctype.h */
#ifndef __USE_ISOC99
@@ -646,7 +645,7 @@ scan_file(const char* filename, struct scan_token** token)
static int
-bls_filter_by_names(const struct dirent *ent)
+bls_filter(const struct dirent *ent)
{
int offset = strlen(ent->d_name) - strlen(".conf");
@@ -656,111 +655,13 @@ bls_filter_by_names(const struct dirent *ent)
return strncmp(ent->d_name + offset, ".conf", strlen(".conf")) == 0;
}
-struct version {
- char *line; /* pointer to a line with version keyword */
- int offset; /* offset of version value in the line */
-};
-
-/*
- * Locate version in bls file represented by ENT
- */
-static void get_version(const struct dirent *ent, struct version *v)
-{
- char *line = NULL;
- size_t len = 0;
- char *d_name;
- FILE *stream;
- ssize_t read;
-
- memset(v, 0, sizeof(*v));
- d_name = misc_make_path((char *)blsdir, (char *)ent->d_name);
- if (!d_name)
- return;
-
- stream = fopen(d_name, "r");
- free(d_name);
- if (!stream)
- return;
-
- while ((read = getline(&line, &len, stream)) != -1) {
- if (line[read - 1] == '\n') {
- line[read - 1] = '\0';
- read--;
- }
- if ((size_t)read <= strlen(VERSION_KEYWORD) + 1)
- continue;
- if (strcmp(VERSION_KEYWORD, line) > 0)
- continue;
- if (!isblank(line[strlen(VERSION_KEYWORD)]))
- continue;
- /* skip blanks */
- v->offset = strlen(VERSION_KEYWORD) + 1;
- while (v->offset < read - 1 && isblank(line[v->offset]))
- v->offset++;
- if (isblank(line[v->offset]))
- /*
- * all characters after the keyword
- * are blanks. Invalid version
- */
- continue;
- v->line = line;
- fclose(stream);
- return;
- }
- free(line);
- fclose(stream);
-}
-
-static void put_version(struct version *v)
-{
- free(v->line);
-}
-
-/**
- * Check version in bls file represented by ENT.
- * Return 1 if version is valid. Otherwise return 0
- */
-static int bls_filter_by_versions(const struct dirent *ent)
-{
- struct version v;
-
- if (bls_filter_by_names(ent) == 0)
- return 0;
-
- get_version(ent, &v);
- if (v.line) {
- put_version(&v);
- return 1;
- }
- return 0;
-}
-
static int
-bls_sort_by_names(const struct dirent **ent_a, const struct dirent **ent_b)
+bls_sort(const struct dirent **ent_a, const struct dirent **ent_b)
{
return strverscmp((*ent_a)->d_name, (*ent_b)->d_name);
}
-static int
-bls_sort_by_versions(const struct dirent **ent_a, const struct dirent **ent_b)
-{
- struct version v1, v2;
- int ret;
-
- get_version(*ent_a, &v1);
- get_version(*ent_b, &v2);
- /*
- * Both versions are valid.
- * It is guaranteed by bls_filter_by_versions()
- */
- ret = strverscmp(v1.line + v1.offset, v2.line + v2.offset);
-
- put_version(&v1);
- put_version(&v2);
-
- return ret;
-}
static int
scan_append_section_heading(struct scan_token* scan, int* index, char* name);
@@ -1110,40 +1011,6 @@ scan_count_target_keywords(char* keyword[])
return num;
}
-static int bls_scandir(struct dirent ***bls_entries)
-{
- struct dirent **entries1;
- struct dirent **entries2;
- int n1, n2;
-
- /* arrange by names */
- n1 = scandir(blsdir, &entries1,
- bls_filter_by_names, bls_sort_by_names);
- if (n1 <= 0)
- return n1;
- /* arrange by versions */
- n2 = scandir(blsdir, &entries2,
- bls_filter_by_versions, bls_sort_by_versions);
-
- if (n2 <= 0 || n2 < n1) {
- /*
- * failed to sort by versions,
- * fall back to sorting by filenames
- */
- *bls_entries = entries1;
- while (n2--)
- free(entries2[n2]);
- free(entries2);
- return n1;
- }
- /* use arrangement by versions */
- *bls_entries = entries2;
- while (n1--)
- free(entries1[n1]);
- free(entries1);
- return n2;
-}
-
int
scan_check_target_data(char* keyword[], int* line)
{
@@ -1464,7 +1331,7 @@ int scan_bls(struct scan_token **token, int scan_size)
if (!(stat(blsdir, &sb) == 0 && S_ISDIR(sb.st_mode)))
return 0;
- n = bls_scandir(&bls_entries);
+ n = scandir(blsdir, &bls_entries, bls_filter, bls_sort);
if (n <= 0)
return n;
--
2.38.1
From 7a51cfc15b870d90bffe1e24a1da922663ffe1d7 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Mon, 20 Jun 2022 17:46:59 +0200
Subject: [PATCH 2/2] blscfg: sort like rpm nvr, not like a single version
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Peter Jones <pjones@redhat.com>
Signed-off-by: Dan Horák <dan@danny.cz>
---
zipl/src/Makefile | 1 +
zipl/src/scan.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 95 insertions(+), 2 deletions(-)
diff --git a/zipl/src/Makefile b/zipl/src/Makefile
index 64eabe4..7043005 100644
--- a/zipl/src/Makefile
+++ b/zipl/src/Makefile
@@ -9,6 +9,7 @@ ALL_LDFLAGS += -Wl,-z,noexecstack $(NO_PIE_LDFLAGS)
libs = $(rootdir)/libutil/libutil.a \
$(rootdir)/libvtoc/libvtoc.a \
+ -lrpmio -lrpm
objects = misc.o error.o scan.o job.o boot.o bootmap.o fs-map.o disk.o \
bootmap_header.o envblk.o install.o zipl.o $(rootdir)/zipl/boot/data.o
diff --git a/zipl/src/scan.c b/zipl/src/scan.c
index 9352f76..3327e2d 100644
--- a/zipl/src/scan.c
+++ b/zipl/src/scan.c
@@ -35,6 +35,8 @@
#include "lib/util_base.h"
+#include <rpm/rpmlib.h>
+
#include "boot.h"
#include "error.h"
#include "misc.h"
@@ -655,13 +657,103 @@ bls_filter(const struct dirent *ent)
return strncmp(ent->d_name + offset, ".conf", strlen(".conf")) == 0;
}
+/* returns name/version/release */
+/* NULL string pointer returned if nothing found */
+static void
+split_package_string (char *package_string, char **name,
+ char **version, char **release)
+{
+ char *package_version, *package_release;
+
+ /* Release */
+ package_release = strrchr (package_string, '-');
+
+ if (package_release != NULL)
+ *package_release++ = '\0';
+
+ *release = package_release;
+
+ /* Version */
+ package_version = strrchr(package_string, '-');
+
+ if (package_version != NULL)
+ *package_version++ = '\0';
+
+ *version = package_version;
+ /* Name */
+ *name = package_string;
+
+ /* Bubble up non-null values from release to name */
+ if (name != NULL && *name == NULL) {
+ *name = (*version == NULL ? *release : *version);
+ *version = *release;
+ *release = NULL;
+ }
+ if (*version == NULL) {
+ *version = *release;
+ *release = NULL;
+ }
+}
static int
-bls_sort(const struct dirent **ent_a, const struct dirent **ent_b)
+split_cmp(char *nvr0, char *nvr1, int has_name)
+{
+ int ret = 0;
+ char *name0, *version0, *release0;
+ char *name1, *version1, *release1;
+
+ split_package_string(nvr0, has_name ? &name0 : NULL, &version0, &release0);
+ split_package_string(nvr1, has_name ? &name1 : NULL, &version1, &release1);
+
+ if (has_name) {
+ ret = rpmvercmp(name0 == NULL ? "" : name0,
+ name1 == NULL ? "" : name1);
+ if (ret != 0)
+ return ret;
+ }
+
+ ret = rpmvercmp(version0 == NULL ? "" : version0,
+ version1 == NULL ? "" : version1);
+ if (ret != 0)
+ return ret;
+
+ ret = rpmvercmp(release0 == NULL ? "" : release0,
+ release1 == NULL ? "" : release1);
+ return ret;
+}
+
+/* return 1: filename0 is newer than filename1 */
+/* 0: filename0 and filename1 are the same version */
+/* -1: filename1 is newer than filename0 */
+static int bls_cmp(const char *filename0, const char *filename1)
{
- return strverscmp((*ent_a)->d_name, (*ent_b)->d_name);
+ char *id0, *id1;
+ int l, r;
+
+ id0 = strdup(filename0);
+ id1 = strdup(filename1);
+
+ l = strlen(id0);
+ if (l > 5 && strcmp(id0 + l - 5, ".conf"))
+ id0[l-5] = '\0';
+
+ l = strlen(id1);
+ if (l > 5 && strcmp(id1 + l - 5, ".conf"))
+ id1[l-5] = '\0';
+
+ r = split_cmp(id0, id1, 1);
+
+ free(id0);
+ free(id1);
+
+ return r;
}
+static int
+bls_sort(const struct dirent **ent_a, const struct dirent **ent_b)
+{
+ return bls_cmp((*ent_a)->d_name, (*ent_b)->d_name);
+}
static int
scan_append_section_heading(struct scan_token* scan, int* index, char* name);
--
2.38.1

View File

@ -61,10 +61,10 @@ index 871935c783f..d8d5eca5867 100755
;;
--)
shift
diff --git a/scripts/zipl-switch-to-blscfg.8 b/scripts/zipl-switch-to-blscfg.8
diff --git a/scripts/zipl-switch-to-blscfg.1 b/scripts/zipl-switch-to-blscfg.1
index 6bd14d00d14..71b904ffd1c 100644
--- a/scripts/zipl-switch-to-blscfg.8
+++ b/scripts/zipl-switch-to-blscfg.8
--- a/scripts/zipl-switch-to-blscfg.1
+++ b/scripts/zipl-switch-to-blscfg.1
@@ -37,9 +37,9 @@ The DIRECTORY where the BLS fragments will be generated. The directory is create
The FILE used for zipl configuration file, defaults to /etc/zipl.conf.

View File

@ -0,0 +1,147 @@
From 8ec7b75204f3c7bf691e14b89c73c5dd28d2a824 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Mon, 15 Oct 2018 13:54:16 -0400
Subject: [PATCH] blscfg: sort like rpm nvr, not like a single version
Signed-off-by: Peter Jones <pjones@redhat.com>
---
zipl/src/scan.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++-
zipl/src/Makefile | 3 +-
2 files changed, 96 insertions(+), 3 deletions(-)
diff --git a/zipl/src/scan.c b/zipl/src/scan.c
index fe72e9ab13d..63186222783 100644
--- a/zipl/src/scan.c
+++ b/zipl/src/scan.c
@@ -33,6 +33,8 @@
#include "lib/util_base.h"
+#include <rpm/rpmlib.h>
+
#include "boot.h"
#include "error.h"
#include "misc.h"
@@ -652,14 +654,104 @@ bls_filter(const struct dirent *ent)
return strncmp(ent->d_name + offset, ".conf", strlen(".conf")) == 0;
}
+/* returns name/version/release */
+/* NULL string pointer returned if nothing found */
+static void
+split_package_string (char *package_string, char **name,
+ char **version, char **release)
+{
+ char *package_version, *package_release;
+
+ /* Release */
+ package_release = strrchr (package_string, '-');
+
+ if (package_release != NULL)
+ *package_release++ = '\0';
+
+ *release = package_release;
+
+ /* Version */
+ package_version = strrchr(package_string, '-');
+
+ if (package_version != NULL)
+ *package_version++ = '\0';
+
+ *version = package_version;
+ /* Name */
+ *name = package_string;
+
+ /* Bubble up non-null values from release to name */
+ if (name != NULL && *name == NULL) {
+ *name = (*version == NULL ? *release : *version);
+ *version = *release;
+ *release = NULL;
+ }
+ if (*version == NULL) {
+ *version = *release;
+ *release = NULL;
+ }
+}
+
+static int
+split_cmp(char *nvr0, char *nvr1, int has_name)
+{
+ int ret = 0;
+ char *name0, *version0, *release0;
+ char *name1, *version1, *release1;
+
+ split_package_string(nvr0, has_name ? &name0 : NULL, &version0, &release0);
+ split_package_string(nvr1, has_name ? &name1 : NULL, &version1, &release1);
+
+ if (has_name) {
+ ret = rpmvercmp(name0 == NULL ? "" : name0,
+ name1 == NULL ? "" : name1);
+ if (ret != 0)
+ return ret;
+ }
+
+ ret = rpmvercmp(version0 == NULL ? "" : version0,
+ version1 == NULL ? "" : version1);
+ if (ret != 0)
+ return ret;
+
+ ret = rpmvercmp(release0 == NULL ? "" : release0,
+ release1 == NULL ? "" : release1);
+ return ret;
+}
+
+/* return 1: filename0 is newer than filename1 */
+/* 0: filename0 and filename1 are the same version */
+/* -1: filename1 is newer than filename0 */
+static int bls_cmp(const char *filename0, const char *filename1)
+{
+ char *id0, *id1;
+ int l, r;
+
+ id0 = strdup(filename0);
+ id1 = strdup(filename1);
+
+ l = strlen(id0);
+ if (l > 5 && strcmp(id0 + l - 5, ".conf"))
+ id0[l-5] = '\0';
+
+ l = strlen(id1);
+ if (l > 5 && strcmp(id1 + l - 5, ".conf"))
+ id1[l-5] = '\0';
+
+ r = split_cmp(id0, id1, 1);
+
+ free(id0);
+ free(id1);
+
+ return r;
+}
static int
bls_sort(const struct dirent **ent_a, const struct dirent **ent_b)
{
- return strverscmp((*ent_a)->d_name, (*ent_b)->d_name);
+ return bls_cmp((*ent_a)->d_name, (*ent_b)->d_name);
}
-
static int
scan_append_section_heading(struct scan_token* scan, int* index, char* name);
static int
diff --git a/zipl/src/Makefile b/zipl/src/Makefile
index 1634c0d5121..bc797990652 100644
--- a/zipl/src/Makefile
+++ b/zipl/src/Makefile
@@ -7,7 +7,7 @@ ALL_CPPFLAGS += -I../include -I../boot \
-D_FILE_OFFSET_BITS=64 $(NO_PIE_CFLAGS)
ALL_LDFLAGS += -Wl,-z,noexecstack $(NO_PIE_LDFLAGS)
-libs = $(rootdir)/libutil/libutil.a
+libs = $(rootdir)/libutil/libutil.a -lrpm
objects = misc.o error.o scan.o job.o boot.o bootmap.o disk.o \
install.o zipl.o $(rootdir)/zipl/boot/data.o
--
2.17.1

View File

@ -1,205 +0,0 @@
From 48324b579e825a30110abac0369e9d544350ead1 Mon Sep 17 00:00:00 2001
From: Steffen Eiden <seiden@linux.ibm.com>
Date: Wed, 14 Dec 2022 14:25:21 +0100
Subject: [PATCH 1/4] zdump: replace atomic refcount with atomic int
(Atomic) refcounting was introduced in glib2.58.
We want to support v2.56 as well, so replace it with int and the atomic
operations introduced in glib 2.4.
Fixes: https://github.com/ibm-s390-linux/s390-tools/issues/146
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
---
zdump/pv_utils.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/zdump/pv_utils.c b/zdump/pv_utils.c
index 6d9f0bb..a39bfc5 100644
--- a/zdump/pv_utils.c
+++ b/zdump/pv_utils.c
@@ -674,7 +674,7 @@ struct _storage_state_mmap {
size_t mapped_size;
pv_tweak_component_t *tweak_components;
size_t num_tweaks;
- gatomicrefcount ref_count;
+ int ref_count;
};
storage_state_mmap_t *storage_state_mmap_new(const int fd, const size_t file_size, const u64 offset,
@@ -733,14 +733,14 @@ storage_state_mmap_t *storage_state_mmap_new(const int fd, const size_t file_siz
ret->tweak_components = (pv_tweak_component_t *)(ptr + in_page_offset);
ret->num_tweaks = tweak_components_cnt;
ret->mapped_size = mmapped_size;
- g_atomic_ref_count_init(&ret->ref_count);
+ ret->ref_count = 1;
return g_steal_pointer(&ret);
}
storage_state_mmap_t *storage_state_mmap_ref(storage_state_mmap_t *storage_state)
{
g_assert(storage_state);
- g_atomic_ref_count_inc(&storage_state->ref_count);
+ g_atomic_int_inc(&storage_state->ref_count);
return storage_state;
}
@@ -748,7 +748,7 @@ void storage_state_mmap_unref(storage_state_mmap_t *storage_state)
{
if (!storage_state)
return;
- if (storage_state->ref_count && !g_atomic_ref_count_dec(&storage_state->ref_count))
+ if (storage_state->ref_count && !g_atomic_int_dec_and_test(&storage_state->ref_count))
return;
if (storage_state->first_page_ptr) {
int rc = munmap(storage_state->first_page_ptr, storage_state->mapped_size);
--
2.39.1
From 4007220d35a9e33186fdfe3a4b5c22cd2eea9bb9 Mon Sep 17 00:00:00 2001
From: Steffen Eiden <seiden@linux.ibm.com>
Date: Wed, 14 Dec 2022 13:53:29 +0100
Subject: [PATCH 2/4] libpv: disallow glib features from after 2.56
Enforce that the first glib.h include is done via glib-helper.h for libpv
so that glib version checks are in place.
Change zdump and pvattest such that they never include glibstuff before
libpv/glib-helper.h
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
---
include/libpv/glib-helper.h | 6 ++++++
pvattest/src/common.h | 2 +-
zdump/dfi_pv_elf.c | 1 -
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/include/libpv/glib-helper.h b/include/libpv/glib-helper.h
index 5d3df50..9f90b28 100644
--- a/include/libpv/glib-helper.h
+++ b/include/libpv/glib-helper.h
@@ -18,6 +18,12 @@
#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_56
#endif
+#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_56
+
+#ifdef __G_LIB_H__
+#error "glib.h must be included via libpv/glib-helper.h"
+#endif
+
#include <glib.h>
#include <gmodule.h>
#include <stdio.h>
diff --git a/pvattest/src/common.h b/pvattest/src/common.h
index e2e3ef1..43d2ab9 100644
--- a/pvattest/src/common.h
+++ b/pvattest/src/common.h
@@ -11,10 +11,10 @@
/* Must be included before any other header */
#include "config.h"
-#include <glib/gi18n.h>
#include <stdio.h>
#include "libpv/glib-helper.h"
+#include <glib/gi18n.h>
#include "libpv/macros.h"
#include "lib/zt_common.h"
diff --git a/zdump/dfi_pv_elf.c b/zdump/dfi_pv_elf.c
index 8d1021e..9d33e8f 100644
--- a/zdump/dfi_pv_elf.c
+++ b/zdump/dfi_pv_elf.c
@@ -21,7 +21,6 @@
#include <elf.h>
#include <errno.h>
-#include <glib.h>
#include <openssl/bio.h>
#include <openssl/crypto.h>
--
2.39.1
From fb01fb45bb6a9e62313e9cdb79ad5ed39471cfe7 Mon Sep 17 00:00:00 2001
From: Marc Hartmayer <mhartmay@linux.ibm.com>
Date: Mon, 19 Dec 2022 09:51:51 +0000
Subject: [PATCH 3/4] zgetdump/Makefile: don't use `.check_dep_zgetdump` as
linker input
The `.check_dep_zgetdump` file is used to cache the result of the
dependency checks and should not be used as input for linking or
anything else. Let's add it as dependency for the objects file. This
shouldn't cause any problems since the Makefile rule for object files is
defined in `common.mak` as follows:
%.o: %.c
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c $< -o $@
Fixes: https://github.com/ibm-s390-linux/s390-tools/issues/147
Fixes: 8d8d5e9746a4 ("zdump: Fix Makefile dependencies")
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: Jan Hoeppner <hoeppner@linux.ibm.com>
---
zdump/Makefile | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/zdump/Makefile b/zdump/Makefile
index ca8aadc..934dc47 100644
--- a/zdump/Makefile
+++ b/zdump/Makefile
@@ -119,7 +119,9 @@ libs = $(rootdir)/libutil/libutil.a $(LIBPV)
all: $(BUILD_TARGETS)
-zgetdump: .check_dep_zgetdump $(OBJECTS) $(libs)
+$(OBJECTS): .check_dep_zgetdump
+
+zgetdump: $(OBJECTS) $(libs)
skip-zgetdump:
echo " SKIP zgetdump due to unresolved dependencies"
--
2.39.1
From 1ad208c17a0edc65e6abd47b68a7d9c206faf2a6 Mon Sep 17 00:00:00 2001
From: Ingo Franzki <ifranzki@linux.ibm.com>
Date: Fri, 20 Jan 2023 11:04:18 +0100
Subject: [PATCH 4/4] zkey: Support EP11 host library version 4 (#2165811)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Try to load libep11.so.4 if available, but fallback to older
library versions if not.
Reviewed-by: Jörg Schmidbauer <jschmidb@de.ibm.com>
Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com>
Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
(cherry picked from commit 6222c384958729bc4b5bad61ad38967647cc3248)
---
zkey/ep11.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/zkey/ep11.c b/zkey/ep11.c
index 58dc3c5..8359929 100644
--- a/zkey/ep11.c
+++ b/zkey/ep11.c
@@ -35,7 +35,7 @@
* Definitions for the EP11 library
*/
#define EP11_LIBRARY_NAME "libep11.so"
-#define EP11_LIBRARY_VERSION 3
+#define EP11_LIBRARY_VERSION 4
#define EP11_WEB_PAGE "http://www.ibm.com/security/cryptocards"
/**
--
2.39.1

View File

@ -2,12 +2,10 @@
# config file syntax:
# deviceno WWPN FCPLUN
# deviceno # allowed when auto LUN scan is enabled and port is in NPIV mode
#
# Example:
# 0.0.4000 0x5005076300C213e9 0x5022000000000000
# 0.0.4001 0x5005076300c213e9 0x5023000000000000
# 0.0.5000
#
#
# manual setup:
@ -23,20 +21,12 @@
CONFIG=/etc/zfcp.conf
PATH=/bin:/sbin
set_online()
{
DEVICE=$1
[ `cat /sys/bus/ccw/drivers/zfcp/${DEVICE}/online` = "0" ] \
&& echo 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE}/online
}
if [ -f "$CONFIG" ]; then
if [ ! -d /sys/bus/ccw/drivers/zfcp ]; then
modprobe zfcp
fi
if [ ! -d /sys/bus/ccw/drivers/zfcp ]; then
exit 1
return
fi
sed 'y/ABCDEF/abcdef/' < $CONFIG | while read line; do
case $line in
@ -44,17 +34,6 @@ if [ -f "$CONFIG" ]; then
*)
[ -z "$line" ] && continue
set $line
if [ $# -eq 1 ]; then
DEVICE=${1##*0x}
if [ `cat /sys/module/zfcp/parameters/allow_lun_scan` = "Y" ]; then
set_online ${DEVICE}
grep -q NPIV /sys/bus/ccw/devices/${DEVICE}/host*/fc_host/host*/port_type || \
echo "Error: Only device ID (${DEVICE}) given, but port not in NPIV mode"
else
echo "Error: Only device ID (${DEVICE}) given, but LUN scan is disabled for the zfcp module"
fi
continue
fi
if [ $# -eq 5 ]; then
DEVICE=$1
SCSIID=$2
@ -67,11 +46,11 @@ if [ -f "$CONFIG" ]; then
WWPN=$2
FCPLUN=$3
fi
set_online ${DEVICE}
[ `cat /sys/bus/ccw/drivers/zfcp/${DEVICE}/online` = "0" ] \
&& echo 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE}/online
[ ! -d /sys/bus/ccw/drivers/zfcp/${DEVICE}/${WWPN}/${FCPLUN} ] \
&& echo $FCPLUN > /sys/bus/ccw/drivers/zfcp/${DEVICE}/${WWPN}/unit_add
;;
esac
done
fi
exit 0

View File

@ -1,19 +1,15 @@
%define cmsfsver 1.1.8c
%define vipaver 2.1.0
# secure boot support is for RHEL only
%if 0%{?rhel} >= 8
%global signzipl 1
%endif
%if 0%{?fedora}
%global with_pandoc 1
%endif
Name: s390utils
Summary: Utilities and daemons for IBM z Systems
Version: 2.25.0
Release: 2%{?dist}
Group: System Environment/Base
Version: 2.6.0
Release: 29%{?dist}
Epoch: 2
License: MIT
ExclusiveArch: s390 s390x
@ -33,30 +29,32 @@ Source15: device_cio_free.service
Source16: ccw_init
Source17: ccw.udev
Source21: normalize_dasd_arg
Source23: 00-zipl-prepare.install
Source24: 20-zipl-kernel.install
Source25: 52-zipl-rescue.install
Source26: 91-zipl.install
Source22: 00-zipl-prepare.install
Source23: 20-zipl-kernel.install
Source24: 52-zipl-rescue.install
Source25: 91-zipl.install
# for secure boot
%if 0%{?signzipl}
%define pesign_name redhatsecureboot302
%endif
# backported stuff for RHEL
Patch0: s390-tools-rhel.patch
# BLS support in zipl
# change the defaults to match Fedora environment
Patch0: s390-tools-zipl-invert-script-options.patch
Patch1: s390-tools-zipl-blscfg-rpm-nvr-sort.patch
# upstream fixes/updates
Patch100: s390utils-%%{version}-rhel.patch
Patch100: s390-tools-zipl-invert-script-options.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1640968
Patch102: s390-tools-zipl-sort-like-rpm.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1772054
Patch103: s390-tools-zipl-bls-loadaddr.patch
Patch1000: cmsfs-1.1.8-warnings.patch
Patch1001: cmsfs-1.1.8-kernel26.patch
Patch1002: cmsfs-1.1.8-use-detected-filesystem-block-size-on-FBA-devices.patch
Patch1003: cmsfs-1.1.8-args.patch
Patch2000: src_vipa-2.1.0-deprecate.patch
Requires: s390utils-core = %{epoch}:%{version}-%{release}
Requires: s390utils-base = %{epoch}:%{version}-%{release}
Requires: s390utils-osasnmpd = %{epoch}:%{version}-%{release}
Requires: s390utils-cpuplugd = %{epoch}:%{version}-%{release}
@ -66,6 +64,7 @@ Requires: s390utils-ziomon = %{epoch}:%{version}-%{release}
Requires: s390utils-cmsfs = %{epoch}:%{version}-%{release}
BuildRequires: gcc-c++
BuildRequires: rpm-devel
%description
This is a meta package for installing the default s390-tools sub packages.
@ -78,12 +77,13 @@ be used together with the zSeries (s390) Linux kernel and device drivers.
%prep
%setup -q -n s390-tools-%{version} -a 4 -a 6
# Fedora/RHEL changes
%patch0 -p1 -b .zipl-invert-script-options
%patch1 -p1 -b .blscfg-rpm-nvr-sort
# Backported stuff for RHEL
%patch0 -p1
# upstream fixes/updates
%%patch100 -p1
# BLS support in zipl
%patch100 -p1 -b .zipl-invert-script-options
%patch102 -p1 -b .zipl-sort-like-rpm
%patch103 -p1 -b .zipl-bls-loadaddr
#
# cmsfs
@ -97,9 +97,6 @@ pushd cmsfs-%{cmsfsver}
# use detected filesystem block size (#651012)
%patch1002 -p1 -b .use-detected-block-size
# fix args processing (#1866872)
%patch1003 -p1 -b .args
popd
#
@ -126,12 +123,7 @@ popd
%build
make \
CFLAGS="%{build_cflags}" CXXFLAGS="%{build_cxxflags}" LDFLAGS="%{build_ldflags}" \
HAVE_DRACUT=1 \
%if 0%{?with_pandoc}
ENABLE_DOC=1 \
%endif
NO_PIE_LDFLAGS="" \
CFLAGS="%{build_cflags}" CXXFLAGS="%{build_cflags}" LDFLAGS="%{build_ldflags}" \
BINDIR=/usr/sbin \
DISTRELEASE=%{release} \
V=1
@ -149,10 +141,7 @@ popd
%install
make install \
HAVE_DRACUT=1 \
%if 0%{?with_pandoc}
ENABLE_DOC=1 \
%endif
DESTDIR=%{buildroot} \
DESTDIR=$RPM_BUILD_ROOT \
BINDIR=/usr/sbin \
SYSTEMDSYSTEMUNITDIR=%{_unitdir} \
DISTRELEASE=%{release} \
@ -170,166 +159,67 @@ else
fi
%endif
# move tools to searchable dir
mv %{buildroot}%{_datadir}/s390-tools/netboot/mk-s390image %{buildroot}%{_bindir}
mkdir -p $RPM_BUILD_ROOT{/boot,%{_udevrulesdir},%{_sysconfdir}/{profile.d,sysconfig},%{_prefix}/lib/modules-load.d}
install -p -m 644 zipl/boot/tape0.bin $RPM_BUILD_ROOT/boot/tape0
install -p -m 755 %{SOURCE5} $RPM_BUILD_ROOT%{_sbindir}
install -p -m 755 %{SOURCE13} $RPM_BUILD_ROOT%{_sbindir}
install -p -m 755 %{SOURCE21} $RPM_BUILD_ROOT%{_sbindir}
install -p -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_udevrulesdir}/56-zfcp.rules
install -p -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_udevrulesdir}/56-dasd.rules
mkdir -p %{buildroot}{/boot,%{_udevrulesdir},%{_sysconfdir}/{profile.d,sysconfig},%{_prefix}/lib/modules-load.d}
install -p -m 644 zipl/boot/tape0.bin %{buildroot}/boot/tape0
install -p -m 755 %{SOURCE5} %{buildroot}%{_sbindir}
install -p -m 755 %{SOURCE13} %{buildroot}%{_sbindir}
install -p -m 755 %{SOURCE21} %{buildroot}%{_sbindir}
install -p -m 644 %{SOURCE7} %{buildroot}%{_udevrulesdir}/56-zfcp.rules
install -p -m 644 %{SOURCE12} %{buildroot}%{_udevrulesdir}/56-dasd.rules
touch %{buildroot}%{_sysconfdir}/{zfcp.conf,dasd.conf}
touch $RPM_BUILD_ROOT%{_sysconfdir}/{zfcp.conf,dasd.conf}
# upstream udev rules
install -Dp -m 644 etc/udev/rules.d/*.rules %{buildroot}%{_udevrulesdir}
install -Dp -m 644 etc/udev/rules.d/*.rules $RPM_BUILD_ROOT%{_udevrulesdir}
# upstream modules config
install -Dp -m 644 etc/modules-load.d/*.conf %{buildroot}%{_prefix}/lib/modules-load.d
install -Dp -m 644 etc/modules-load.d/*.conf $RPM_BUILD_ROOT%{_prefix}/lib/modules-load.d
# Install kernel-install scripts
install -d -m 0755 %{buildroot}%{_prefix}/lib/kernel/install.d/
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE22}
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ zfcpdump/10-zfcpdump.install
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE23}
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE24}
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE25}
install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE26}
install -d -m 0755 %{buildroot}%{_sysconfdir}/kernel/install.d/
install -m 0644 /dev/null %{buildroot}%{_sysconfdir}/kernel/install.d/20-grubby.install
# cmsfs tools must be available in /sbin
for f in cat lst vol cp ck; do
install -p -m 755 cmsfs-%{cmsfsver}/cmsfs${f} %{buildroot}%{_sbindir}
install -p -m 644 cmsfs-%{cmsfsver}/cmsfs${f}.8 %{buildroot}%{_mandir}/man8
install -p -m 755 cmsfs-%{cmsfsver}/cmsfs${f} $RPM_BUILD_ROOT%{_sbindir}
install -p -m 644 cmsfs-%{cmsfsver}/cmsfs${f}.8 $RPM_BUILD_ROOT%{_mandir}/man8
done
# src_vipa
pushd src_vipa-%{vipaver}
make install LIBDIR=%{_libdir} SBINDIR=%{_bindir} INSTROOT=%{buildroot} LDCONFIG=/bin/true
make install LIBDIR=%{_libdir} SBINDIR=%{_bindir} INSTROOT=$RPM_BUILD_ROOT LDCONFIG=/bin/true
popd
# install usefull headers for devel subpackage
mkdir -p %{buildroot}%{_includedir}/%{name}
install -p -m 644 include/lib/vtoc.h %{buildroot}%{_includedir}/%{name}
mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name}
install -p -m 644 include/lib/vtoc.h $RPM_BUILD_ROOT%{_includedir}/%{name}
# device_cio_free
install -p -m 755 %{SOURCE14} %{buildroot}%{_sbindir}
pushd %{buildroot}%{_sbindir}
install -p -m 755 %{SOURCE14} $RPM_BUILD_ROOT%{_sbindir}
pushd $RPM_BUILD_ROOT%{_sbindir}
for lnk in dasd zfcp znet; do
ln -sf device_cio_free ${lnk}_cio_free
done
popd
install -p -m 644 %{SOURCE15} %{buildroot}%{_unitdir}
install -p -m 644 %{SOURCE15} $RPM_BUILD_ROOT%{_unitdir}
# ccw
install -p -m 755 %{SOURCE16} %{buildroot}/usr/lib/udev/ccw_init
install -p -m 644 %{SOURCE17} %{buildroot}%{_udevrulesdir}/81-ccw.rules
install -p -m 755 %{SOURCE16} $RPM_BUILD_ROOT/usr/lib/udev/ccw_init
install -p -m 644 %{SOURCE17} $RPM_BUILD_ROOT%{_udevrulesdir}/81-ccw.rules
# zipl.conf to be ghosted
touch %{buildroot}%{_sysconfdir}/zipl.conf
touch $RPM_BUILD_ROOT%{_sysconfdir}/zipl.conf
%files
%doc README.md
# ************************* s390-tools core package *************************
#
%package core
License: MIT
Summary: S390 core tools
Requires: coreutils
%{?systemd_requires}
# BRs are covered via the base package
%description core
This package provides minimal set of tools needed to system to boot.
%post core
%if 0
# enable in F-31
%systemd_post device_cio_free.service
%else
# explicit enable for upgrade patch from s390utils-base < 2.6.0-4
systemctl --no-reload preset device_cio_free.service >/dev/null 2>&1 || :
%endif
%systemd_post cpi.service
%preun core
%systemd_preun device_cio_free.service
%systemd_preun cpi.service
%postun core
%systemd_postun_with_restart cpi.service
%files core
%doc README.md zdev/src/chzdev_usage.txt
%doc LICENSE
%{_sbindir}/chreipl
%{_sbindir}/chzdev
%{_sbindir}/cio_ignore
%{_sbindir}/dasdfmt
%{_sbindir}/dasdinfo
%{_sbindir}/fdasd
%{_sbindir}/lszdev
%{_sbindir}/vmcp
%{_sbindir}/zipl
%{_sbindir}/zipl-editenv
%dir /lib/s390-tools
/lib/s390-tools/{zipl,chreipl}_helper.*
/lib/s390-tools/cpictl
/lib/s390-tools/stage3.bin
/lib/s390-tools/zdev_id
/lib/s390-tools/zdev-root-update
/lib/s390-tools/zipl.conf
%ghost %config(noreplace) %{_sysconfdir}/zipl.conf
%config(noreplace) %{_sysconfdir}/ziplenv
%{_unitdir}/cpi.service
%config(noreplace) %{_sysconfdir}/sysconfig/cpi
/usr/lib/dracut/modules.d/95zdev/
%{_mandir}/man5/zipl.conf.5*
%{_mandir}/man8/chreipl.8*
%{_mandir}/man8/chzdev.8*
%{_mandir}/man8/cio_ignore.8*
%{_mandir}/man8/dasdfmt.8*
%{_mandir}/man8/dasdinfo.8*
%{_mandir}/man8/fdasd.8*
%{_mandir}/man8/lszdev.8*
%{_mandir}/man8/vmcp.8*
%{_mandir}/man8/zipl.8*
%{_mandir}/man8/zipl-editenv.8*
# Additional Fedora/RHEL specific stuff
%ghost %config(noreplace) %{_sysconfdir}/dasd.conf
%ghost %config(noreplace) %{_sysconfdir}/zfcp.conf
%{_sbindir}/dasdconf.sh
%{_sbindir}/normalize_dasd_arg
%{_sbindir}/zfcpconf.sh
%{_sbindir}/device_cio_free
%{_sbindir}/dasd_cio_free
%{_sbindir}/zfcp_cio_free
%{_sbindir}/znet_cio_free
%{_unitdir}/device_cio_free.service
/usr/lib/udev/ccw_init
%{_udevrulesdir}/40-z90crypt.rules
%{_udevrulesdir}/56-dasd.rules
%{_udevrulesdir}/56-zfcp.rules
%{_udevrulesdir}/59-dasd.rules
%{_udevrulesdir}/60-readahead.rules
%{_udevrulesdir}/81-ccw.rules
%{_udevrulesdir}/81-dpm.rules
%{_udevrulesdir}/90-cpi.rules
%{_sysconfdir}/kernel/install.d/20-grubby.install
%{_prefix}/lib/kernel/install.d/00-zipl-prepare.install
%{_prefix}/lib/kernel/install.d/10-zfcpdump.install
%{_prefix}/lib/kernel/install.d/20-zipl-kernel.install
%{_prefix}/lib/kernel/install.d/52-zipl-rescue.install
%{_prefix}/lib/kernel/install.d/91-zipl.install
%{_prefix}/lib/modules-load.d/s390-pkey.conf
#
# ************************* s390-tools base package *************************
#
@ -337,21 +227,20 @@ systemctl --no-reload preset device_cio_free.service >/dev/null 2>&1 || :
# src_vipa is CPL
License: MIT and CPL
Summary: S390 base tools
Group: System Environment/Base
Requires: gawk sed coreutils
Requires: sysfsutils
Requires: sg3_utils
Requires: ethtool
Requires: tar
Requires: file
Requires: s390utils-core = %{epoch}:%{version}-%{release}
Requires: network-scripts
%{?systemd_requires}
BuildRequires: perl-generators
BuildRequires: ncurses-devel
BuildRequires: libpfm-devel
BuildRequires: glibc-static
BuildRequires: cryptsetup-devel >= 2.0.3
BuildRequires: json-c-devel
BuildRequires: rpm-devel
BuildRequires: glib2-devel
BuildRequires: libxml2-devel
%description base
@ -493,131 +382,127 @@ For more information refer to the following publications:
getent group zkeyadm > /dev/null || groupadd -r zkeyadm
%post base
%systemd_post cpi.service
%if 0
# enable in F-31
%systemd_post device_cio_free.service
%else
# explicit enable for upgrade patch from s390utils-base < 2.6.0-4
systemctl --no-reload preset device_cio_free.service >/dev/null 2>&1 || :
%endif
%systemd_post dumpconf.service
%preun base
%systemd_preun cpi.service
%systemd_preun device_cio_free.service
%systemd_preun dumpconf.service
%postun base
%systemd_postun_with_restart cpi.service
%systemd_postun_with_restart dumpconf.service
%files base
%doc README.md zdev/src/lszdev_usage.txt
%doc README.md zdev/src/*.txt
%doc LICENSE
%{_sbindir}/chccwdev
%{_sbindir}/chchp
%{_sbindir}/chcpumf
%{_sbindir}/chreipl
%{_sbindir}/chshut
%{_sbindir}/chzcrypt
%{_sbindir}/chzdev
%{_sbindir}/cio_ignore
%{_sbindir}/dasdfmt
%{_sbindir}/dasdinfo
%{_sbindir}/dasdstat
%{_sbindir}/dasdview
%{_sbindir}/dbginfo.sh
%{_sbindir}/hsavmcore
%{_sbindir}/hsci
%{_sbindir}/fdasd
%{_sbindir}/hyptop
%{_sbindir}/ip_watcher.pl
%{_sbindir}/lschp
%{_sbindir}/lscpumf
%{_sbindir}/lscss
%{_sbindir}/lsdasd
%{_sbindir}/lshwc
%{_sbindir}/lsqeth
%{_sbindir}/lsluns
%{_sbindir}/lsreipl
%{_sbindir}/lsscm
%{_sbindir}/lsshut
%{_sbindir}/lsstp
%{_sbindir}/lstape
%{_sbindir}/lszcrypt
%{_sbindir}/lszdev
%{_sbindir}/lszfcp
%{_sbindir}/pai
%{_sbindir}/qetharp
%{_sbindir}/qethconf
%{_sbindir}/qethqoat
%{_sbindir}/scsi_logging_level
%{_sbindir}/sclpdbf
%{_sbindir}/start_hsnc.sh
%{_sbindir}/tape390_crypt
%{_sbindir}/tape390_display
%{_sbindir}/ttyrun
%{_sbindir}/tunedasd
%{_sbindir}/vmcp
%{_sbindir}/vmur
%{_sbindir}/xcec-bridge
%{_sbindir}/zcryptctl
%{_sbindir}/zcryptstats
%{_sbindir}/zfcpdbf
%{_sbindir}/zgetdump
%{_sbindir}/zipl
%{_sbindir}/zipl-switch-to-blscfg
%{_sbindir}/znetconf
%{_sbindir}/zpcictl
%{_bindir}/lscpumf
%{_bindir}/dump2tar
%{_bindir}/genprotimg
%{_bindir}/mk-s390image
%{_bindir}/pvattest
%{_bindir}/pvextract-hdr
%{_bindir}/vmconvert
%{_bindir}/zkey
%{_bindir}/zkey-cryptsetup
%{_unitdir}/cpi.service
%{_unitdir}/dumpconf.service
%ghost %config(noreplace) %{_sysconfdir}/zipl.conf
%config(noreplace) %{_sysconfdir}/sysconfig/cpi
%config(noreplace) %{_sysconfdir}/sysconfig/dumpconf
%{_sysconfdir}/mdevctl.d/*
/usr/lib/dracut/modules.d/99ngdump/
# own the mdevctl dirs until new release is available
%dir /usr/lib/mdevctl
%dir /usr/lib/mdevctl/scripts.d
%dir /usr/lib/mdevctl/scripts.d/callouts
/usr/lib/mdevctl/scripts.d/callouts/ap-check
/lib/s390-tools/dumpconf
/lib/s390-tools/lsznet.raw
%dir /lib/s390-tools/zfcpdump
/lib/s390-tools/zfcpdump/zfcpdump-initrd
/lib/s390-tools/znetcontrolunits
%{_libdir}/libekmfweb.so.*
%{_libdir}/libkmipclient.so.*
%dir %{_libdir}/zkey
%{_libdir}/zkey/zkey-ekmfweb.so
%{_libdir}/zkey/zkey-kmip.so
/lib/s390-tools/
/usr/lib/dracut/modules.d/95zdev/
%{_mandir}/man1/dbginfo.sh.1*
%{_mandir}/man1/dump2tar.1*
%{_mandir}/man1/genprotimg.1*
%{_mandir}/man1/pvattest.1*
%{_mandir}/man1/pvattest-create.1*
%{_mandir}/man1/pvattest-perform.1*
%{_mandir}/man1/pvattest-verify.1*
%{_mandir}/man1/lscpumf.1*
%{_mandir}/man1/vmconvert.1*
%{_mandir}/man1/zfcpdbf.1*
%{_mandir}/man1/zipl-switch-to-blscfg.1*
%{_mandir}/man1/zkey.1*
%{_mandir}/man1/zkey-cryptsetup.1*
%{_mandir}/man1/zkey-ekmfweb.1*
%{_mandir}/man1/zkey-kmip.1*
%{_mandir}/man4/prandom.4*
%{_mandir}/man5/hsavmcore.conf.5*
%{_mandir}/man5/zipl.conf.5*
%{_mandir}/man8/chccwdev.8*
%{_mandir}/man8/chchp.8*
%{_mandir}/man8/chcpumf.8*
%{_mandir}/man8/chreipl.8*
%{_mandir}/man8/chshut.8*
%{_mandir}/man8/chzcrypt.8*
%{_mandir}/man8/chzdev.8*
%{_mandir}/man8/cio_ignore.8*
%{_mandir}/man8/dasdfmt.8*
%{_mandir}/man8/dasdinfo.8*
%{_mandir}/man8/dasdstat.8*
%{_mandir}/man8/dasdview.8*
%{_mandir}/man8/dbginfo.sh.8*
%{_mandir}/man8/dumpconf.8*
%{_mandir}/man8/hsavmcore.8*
%{_mandir}/man8/hsci.8*
%{_mandir}/man8/fdasd.8*
%{_mandir}/man8/genprotimg.8.*
%{_mandir}/man8/hyptop.8*
%{_mandir}/man8/lschp.8*
%{_mandir}/man8/lscpumf.8*
%{_mandir}/man8/lscss.8*
%{_mandir}/man8/lsdasd.8*
%{_mandir}/man8/lshwc.8*
%{_mandir}/man8/lsluns.8*
%{_mandir}/man8/lsqeth.8*
%{_mandir}/man8/lsreipl.8*
%{_mandir}/man8/lsscm.8*
%{_mandir}/man8/lsshut.8*
%{_mandir}/man8/lsstp.8*
%{_mandir}/man8/lstape.8*
%{_mandir}/man8/lszcrypt.8*
%{_mandir}/man8/lszdev.8*
%{_mandir}/man8/lszfcp.8*
%{_mandir}/man8/pai.8*
%{_mandir}/man8/qetharp.8*
%{_mandir}/man8/qethconf.8*
%{_mandir}/man8/qethqoat.8*
@ -625,26 +510,48 @@ getent group zkeyadm > /dev/null || groupadd -r zkeyadm
%{_mandir}/man8/tape390_display.8*
%{_mandir}/man8/ttyrun.8*
%{_mandir}/man8/tunedasd.8*
%{_mandir}/man8/vmcp.8*
%{_mandir}/man8/vmur.8*
%{_mandir}/man8/zcryptctl.8*
%{_mandir}/man8/zcryptstats.8*
%{_mandir}/man8/zfcpdbf.8*
%{_mandir}/man8/zgetdump.8*
%{_mandir}/man8/zipl-switch-to-blscfg.8*
%{_mandir}/man8/zipl.8*
%{_mandir}/man8/znetconf.8*
%{_mandir}/man8/zpcictl.8*
%dir %{_datadir}/s390-tools
%dir %{_datadir}/s390-tools/
%{_datadir}/s390-tools/cpumf/
%{_datadir}/s390-tools/genprotimg/
%{_datadir}/s390-tools/netboot/
%dir %attr(0770,root,zkeyadm) %{_sysconfdir}/zkey
%dir %attr(0770,root,zkeyadm) %{_sysconfdir}/zkey/kmip
%dir %attr(0770,root,zkeyadm) %{_sysconfdir}/zkey/kmip/profiles
%config(noreplace) %attr(0660,root,zkeyadm)%{_sysconfdir}/zkey/kmip/profiles/*.profile
%dir %attr(0770,root,zkeyadm) %{_sysconfdir}/zkey/repository
%config(noreplace) %attr(0660,root,zkeyadm)%{_sysconfdir}/zkey/kms-plugins.conf
# Additional Fedora/RHEL specific stuff
# Additional Redhat specific stuff
/boot/tape0
%ghost %config(noreplace) %{_sysconfdir}/dasd.conf
%ghost %config(noreplace) %{_sysconfdir}/zfcp.conf
%{_sbindir}/dasdconf.sh
%{_sbindir}/zfcpconf.sh
%{_sbindir}/dasd_cio_free
%{_sbindir}/device_cio_free
%{_sbindir}/zfcp_cio_free
%{_sbindir}/znet_cio_free
%{_sbindir}/normalize_dasd_arg
%{_unitdir}/device_cio_free.service
/usr/lib/udev/ccw_init
%{_udevrulesdir}/40-z90crypt.rules
%{_udevrulesdir}/56-zfcp.rules
%{_udevrulesdir}/56-dasd.rules
%{_udevrulesdir}/59-dasd.rules
%{_udevrulesdir}/60-readahead.rules
%{_udevrulesdir}/81-ccw.rules
%{_udevrulesdir}/90-cpi.rules
%{_sysconfdir}/kernel/install.d/20-grubby.install
%{_prefix}/lib/kernel/install.d/00-zipl-prepare.install
%{_prefix}/lib/kernel/install.d/10-zfcpdump.install
%{_prefix}/lib/kernel/install.d/20-zipl-kernel.install
%{_prefix}/lib/kernel/install.d/52-zipl-rescue.install
%{_prefix}/lib/kernel/install.d/91-zipl.install
%{_prefix}/lib/modules-load.d/s390-pkey.conf
# src_vipa
%{_bindir}/src_vipa.sh
@ -656,6 +563,7 @@ getent group zkeyadm > /dev/null || groupadd -r zkeyadm
#
%package osasnmpd
Summary: SNMP sub-agent for OSA-Express cards
Group: System Environment/Daemons
Requires: net-snmp
Requires: psmisc
BuildRequires: net-snmp-devel
@ -675,6 +583,7 @@ ATM Ethernet LAN Emulation in QDIO mode.
#
%package mon_statd
Summary: Monitoring daemons for Linux in z/VM
Group: System Environment/Daemons
Requires: coreutils
%{?systemd_requires}
@ -714,6 +623,7 @@ Monitoring daemons for Linux in z/VM:
#
%package cpuplugd
Summary: Daemon that manages CPU and memory resources
Group: System Environment/Daemons
%{?systemd_requires}
BuildRequires: systemd
@ -743,6 +653,7 @@ memory can be increased or decreased exploiting the CMM1 feature.
#
%package ziomon
Summary: S390 ziomon tools
Group: Applications/System
Requires: blktrace
Requires: coreutils
Requires: device-mapper-multipath
@ -781,6 +692,7 @@ Tool set to collect data for zfcp performance analysis and report.
#
%package iucvterm
Summary: z/VM IUCV terminal applications
Group: Applications/System
Requires(pre): shadow-utils
Requires(post): grep
Requires(postun): grep
@ -843,6 +755,7 @@ fi
%package cmsfs
License: GPLv2
Summary: CMS file system tools
Group: System Environment/Base
URL: http://www.casita.net/pub/cmsfs/cmsfs.html
# Requires:
@ -866,8 +779,9 @@ This package contains the CMS file system tools.
#
%package cmsfs-fuse
Summary: CMS file system based on FUSE
BuildRequires: fuse3-devel
Requires: fuse3
Group: System Environment/Base
BuildRequires: fuse-devel
Requires: fuse
%description cmsfs-fuse
This package contains the CMS file system based on FUSE.
@ -883,9 +797,9 @@ This package contains the CMS file system based on FUSE.
#
%package zdsfs
Summary: z/OS data set access based on FUSE
BuildRequires: fuse3-devel
BuildRequires: libcurl-devel
Requires: fuse3
Group: System Environment/Base
BuildRequires: fuse-devel
Requires: fuse
%description zdsfs
This package contains the z/OS data set access based on FUSE.
@ -899,8 +813,9 @@ This package contains the z/OS data set access based on FUSE.
#
%package hmcdrvfs
Summary: HMC drive file system based on FUSE
BuildRequires: fuse3-devel
Requires: fuse3
Group: System Environment/Base
BuildRequires: fuse-devel
Requires: fuse
%description hmcdrvfs
This package contains a HMC drive file system based on FUSE and a tool
@ -917,12 +832,12 @@ to list files and directories.
#
%package cpacfstatsd
Summary: Monitor and maintain CPACF activity counters
Group: System Environment/Base
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Requires(pre): shadow-utils
BuildRequires: systemd
BuildRequires: systemd-devel
%description cpacfstatsd
The cpacfstats tools provide a client/server application set to monitor
@ -947,164 +862,21 @@ getent group cpacfstats >/dev/null || groupadd -r cpacfstats
%{_mandir}/man8/cpacfstatsd.8*
%{_unitdir}/cpacfstatsd.service
#
# *********************** chreipl-fcp-mpath package ***********************
#
%package chreipl-fcp-mpath
Summary: Use multipath information for re-IPL path failover
BuildRequires: make
BuildRequires: bash
BuildRequires: coreutils
%if 0%{?with_pandoc}
BuildRequires: pandoc
%endif
BuildRequires: gawk
BuildRequires: gzip
BuildRequires: sed
Requires: bash
Requires: coreutils
Requires: util-linux
Requires: systemd-udev
Requires: device-mapper-multipath
Requires: dracut
%description chreipl-fcp-mpath
The chreipl-fcp-mpath toolset monitors udev events about paths to the re-IPL
volume. If the currently configured FCP re-IPL path becomes unavailable, the
toolset checks for operational paths to the same volume. If available, it
reconfigures the FCP re-IPL settings to use an operational path.
%files chreipl-fcp-mpath
%doc chreipl-fcp-mpath/README.md
%if 0%{?with_pandoc}
%doc chreipl-fcp-mpath/README.html
%endif
%dir %{_prefix}/lib/chreipl-fcp-mpath/
%{_prefix}/lib/chreipl-fcp-mpath/*
%{_prefix}/lib/dracut/dracut.conf.d/70-chreipl-fcp-mpath.conf
%{_prefix}/lib/udev/chreipl-fcp-mpath-is-ipl-tgt
%{_prefix}/lib/udev/chreipl-fcp-mpath-is-ipl-vol
%{_prefix}/lib/udev/chreipl-fcp-mpath-is-reipl-zfcp
%{_prefix}/lib/udev/chreipl-fcp-mpath-record-volume-identifier
%{_prefix}/lib/udev/chreipl-fcp-mpath-try-change-ipl-path
%{_udevrulesdir}/70-chreipl-fcp-mpath.rules
%{_mandir}/man7/chreipl-fcp-mpath.7*
#
# *********************** devel package ***********************
#
%package devel
Summary: Development files
Requires: %{name}-base%{?_isa} = %{epoch}:%{version}-%{release}
Group: Development/Libraries
%description devel
User-space development files for the s390/s390x architecture.
%files devel
%{_includedir}/%{name}/
%{_includedir}/ekmfweb/
%{_includedir}/kmipclient/
%{_libdir}/libekmfweb.so
%{_libdir}/libkmipclient.so
%{_includedir}/%{name}
%changelog
* Fri Feb 03 2023 Dan Horák <dhorak@redhat.com> - 2:2.25.0-2
- zkey: Support EP11 host library version 4 (#2165811)
- Resolves: #2165811
* Tue Dec 13 2022 Dan Horák <dhorak@redhat.com> - 2:2.25.0-1
- rebased to 2.25.0 (#2110312)
- KVM: Tool to process encrypted Secure Execution guest dumps (#2043851)
- zipl: Support for Secure Boot IPL and Dump from ECKD DASD (#2043852)
- zdev: Site-aware device configuration (#2043858)
- Display Processor Activity Instrumentation CPACF counters (#2111013)
- Transparent DASD PPRC (Peer-to-Peer Remote Copy) handling (#2126618)
- zipl: Add secure boot trailer (#2142884)
- Resolves: #2110312 #2043851 #2043852 #2043858 #2111013 #2126618 #2142884
* Fri Aug 05 2022 Dan Horák <dhorak@redhat.com> - 2:2.22.0-2
- zipl: Add missing check for a nullpointer (#2113976)
- Resolves: #2113976
* Tue Jul 12 2022 Dan Horák <dhorak@redhat.com> - 2:2.22.0-1
- rebased to 2.22.0 (#2043846)
- add tool to persistently configure vfio-ap devices (#1660911)
- NVMe stand-alone dump support (#1847462)
- KVM: Secure Execution Attestation Userspace Tool (#1984908)
- KVM: Allow long kernel command lines for Secure Execution guests (#2043831)
- KVM: Secure Execution guest dump encryption with customer keys (#2043833)
- zcrypt DD: Exploitation Support of new IBM Z Crypto Hardware (#2043857)
- zipl: Site-aware environment block (#2043913)
- Add additional information to SCLP CPI (#2046681)
- Add new CPU-MF Counters for IBM z16 Hardware (#2047727)
- Long Kernel Commmand Line for s390x (#2060829)
- zkey: Fix re-enciphering of EP11 identity key of KMIP plugin (#2075011)
- genprotimg/check_hostkeydoc: cert. verification is too strict (#2075013)
- Resolves: #2043846 #1660911 #1847462 #1984908 #2043831 #2043833 #2043857 #2043913 #2046681 #2047727 #2060829 #2075011 #2075013
* Thu Nov 18 2021 Dan Horák <dhorak@redhat.com> - 2:2.19.0-1
- rebased to 2.19.0 (#1984976)
- move vmcp to core (#2021071)
- Resolves: #1984976 #2021071
* Tue Jul 20 2021 Dan Horák <dhorak@redhat.com> - 2:2.16.0-2
- add support for NM keyfile format to ccw_init/device_cio_free (#1980708)
- s390-tools: Add support for complete counter set extraction (#1981264)
- Resolves: #1980708 #1981264
* Fri Jul 02 2021 Dan Horák <dhorak@redhat.com> - 2:2.16.0-1
- rebased to 2.16.0 (#1919241)
- move fdasd and lszdev to core
- ttyrun-getty: Avoid conflicts with serial-getty@ (#1907781)
- mk-s390image script requires file (#1973239)
- zfcpconf: set exit code explicitly (#1977434)
- dbginfo.sh: Collect /proc/kallsyms, issue additional commands (#1972041)
- dasd: change default scheduler to reduce CPU consumption (#1972038)
- zdsfs: transparent dataset conversion (#1919238)
- Resolves: #1919241 #1907781 #1973239 #1977434 #1972041 #1972038 #1919238
* Mon Dec 07 2020 Dan Horák <dhorak@redhat.com> - 2:2.15.1-4
- zkey: Fix KMS plugin configuration to store APQNs correctly. (#1901968)
- dasdfmt: Fix bad file descriptor error when running on symlinks (#1901963)
- zcryptstats: Fix handling of partial results with many domains (#1901962)
- s390-tools: add hsci tool (#1847434)
- genprotimg: add host-key document verification support (#1845925)
- genprotimg: require argument for 'ramdisk' and 'parmfile' options (#1845925)
- genprotimg: fix two memory leaks (#1845925)
- genprotimg: abort if one of the recursive targets is failing (#1845925)
- zdev/lsdasd: Add FC Endpoint Security information (#1723844)
- Resolves: #1723844 #1845925 #1847434 #1901962 #1901963 #1901968
* Fri Nov 27 2020 Javier Martinez Canillas <javierm@redhat.com> - 2:2.15.1-2
- add again the 00-zipl-prepare.install script that got dropped (#1902273)
Resolves: #1902273
* Wed Nov 04 2020 Dan Horák <dhorak@redhat.com> - 2:2.15.1-2
- rebased to 2.15.1 (#1851111)
- implement improved auto LUN scan (#1552697)
- fix crash when device is missing in cmsfslst (#1866872)
- introduce s390utils-core to avoid dependency on Perl (#1886201)
- Resolves: #1851111 #1552697 #1866872 #1886201
* Fri Jul 31 2020 Dan Horák <dhorak@redhat.com> - 2:2.6.0-33
- cpacfstats: Bugfix to remove libpfm from cpacfstats (#1861779)
- Resolves: (#1861779)
* Fri Jul 24 2020 Dan Horák <dhorak@redhat.com> - 2:2.6.0-32
- vmcp: Change sequence of failed exit (#1858839)
- zipl: Fix KVM IPL without bootindex (#1858842, #1846960)
- Resolves: #1858839, #1846960
* Fri Jul 03 2020 Javier Martinez Canillas <javierm@redhat.com> - 2:2.6.0-31
- add a default entry in zipl.conf if there isn't one present (#1698363)
- Resolves: #1698363
* Mon Jun 22 2020 Dan Horák <dhorak@redhat.com> - 2:2.6.0-30
- avoid dependency on network-scripts (#1847388)
- Resolves: #1847388
* Thu May 28 2020 Dan Horák <dhorak@redhat.com> - 2:2.6.0-29
- zkey: Add support for EP11 secure keys (#1723845)
- ipl-tools: Add nvme device support to zipl, lsreipl/chreipl (#1525178)