Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package s390-tools for openSUSE:Factory checked in at 2026-01-06 17:46:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/s390-tools (Old) and /work/SRC/openSUSE:Factory/.s390-tools.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "s390-tools" Tue Jan 6 17:46:42 2026 rev:103 rq:1325644 version:2.40.0 Changes: -------- --- /work/SRC/openSUSE:Factory/s390-tools/s390-tools.changes 2025-10-16 17:39:47.403031919 +0200 +++ /work/SRC/openSUSE:Factory/.s390-tools.new.1928/s390-tools.changes 2026-01-06 17:47:44.517420523 +0100 @@ -1,0 +2,51 @@ +Mon Jan 5 09:09:46 UTC 2026 - Nikolay Gueorguiev <[email protected]> + +- Upgrade s390-tools to 2.40 (jsc#PED-14586) +- Add new tools / libraries: + * Add project-wide .clang-tidy configuration + * libutil: Introduce util_time for time related functionality + * libutil: Introduce zsh/bash autocompletion tooling based on util_opt + * pvinfo: Tool to display Secure Execution system information + * pvverify: Tool to verify host-key documents +- Changes of existing tools: + * cpumf: Implement zsh and bash autocompletion + * dasdfmt: Implement zsh and bash autocompletion + * dbginfo.sh: Add NetworkManager and netplan + * dbginfo.sh: Add kvm_stat + * dbginfo.sh: Adding stp time information + * dbginfo.sh: Simplify procfs collection + * hyptop: Add physical information row + * hyptop: Calculate sample time delta for physical partition + * hyptop: Replace long option names using _ with - for consistency + For example: --cpu_types -> --cpu-types + (Options with _ are still supported for backward compatibility) + * libekmfweb: Add function to validate a certificate against the identity key + * netboot: Add longer kernel command lines support + * udev/rules.d: Make virtio-blk devices non-rotational + * udev/rules.d: Set default io scheduler to 'none' for virtio-blk + * ziomon: Add support to sample device symlinks (/dev/disk/...) + * ziorep_config: Add fcp-lun details to -M option output + * ziorep_config: Add port_id and failed attributes to -A option output + * netboot: Install on non-s390 architectures +- Bug Fixes: + * lib(ekmfweb|kmipclient): Use ln without -r + * s390-tools: Fix various compilation issues with musl libc + * zipl/boot: Fix unused loadparm when SCLP line-mode console is absent +- Reworked patches + * s390-tools-sles12-create-filesystem-links.patch + * s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch + * s390-tools-sles12-zipl_boot_msg.patch + * s390-tools-sles15-sysconfig-compatible-dumpconf.patch + * s390-tools-sles15sp3-Allow-multiple-device-arguments.patch + * s390-tools-sles15sp3-Format-devices-in-parallel.patch + * s390-tools-sles15sp3-Implement-Y-yast_mode.patch + * s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch + * s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch +- Removed obsolete patch + * s390-tools-sles15sp5-remove-no-pie-link-arguments.patch +- Applied additional patch + * s390-tools-sles15sp3-Format-devices-in-parallel-1.patch +- Re-vendor-ed vendor.tar.zst +- Amended the .spec file, fixed Rust compilation errors + +------------------------------------------------------------------- Old: ---- s390-tools-2.39.0.tar.gz s390-tools-sles15sp5-remove-no-pie-link-arguments.patch New: ---- s390-tools-2.40.0.tar.gz s390-tools-sles15sp3-Format-devices-in-parallel-1.patch ----------(Old B)---------- Old:- Removed obsolete patch * s390-tools-sles15sp5-remove-no-pie-link-arguments.patch - Applied additional patch ----------(Old E)---------- ----------(New B)---------- New:- Applied additional patch * s390-tools-sles15sp3-Format-devices-in-parallel-1.patch - Re-vendor-ed vendor.tar.zst ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ s390-tools.spec ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:46.277492929 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:46.281493094 +0100 @@ -1,7 +1,7 @@ # # spec file for package s390-tools # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -34,7 +34,7 @@ %endif Name: s390-tools -Version: 2.39.0 +Version: 2.40.0 Release: 0 Summary: S/390 tools like zipl and dasdfmt for s390x (plus selected tools for x86_64) License: MIT @@ -145,12 +145,12 @@ %endif Patch904: s390-tools-sles15sp3-Allow-multiple-device-arguments.patch Patch905: s390-tools-sles15sp3-Format-devices-in-parallel.patch -Patch906: s390-tools-sles15sp3-Implement-Y-yast_mode.patch -Patch907: s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch -Patch908: s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch -Patch909: s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch -Patch910: s390-tools-sles15sp1-11-zdev-Do-not-call-zipl-on-initrd-update.patch -Patch911: s390-tools-sles15sp5-remove-no-pie-link-arguments.patch +Patch906: s390-tools-sles15sp3-Format-devices-in-parallel-1.patch +Patch907: s390-tools-sles15sp3-Implement-Y-yast_mode.patch +Patch908: s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch +Patch909: s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch +Patch910: s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch +Patch911: s390-tools-sles15sp1-11-zdev-Do-not-call-zipl-on-initrd-update.patch Patch912: s390-tools-ALP-zdev-live.patch Patch913: s390-tools-sles15sp6-kdump-initrd-59-zfcp-compat-rules.patch ### @@ -187,6 +187,8 @@ BuildRequires: rust BuildRequires: cargo BuildRequires: cargo-packaging +BuildRequires: clang-devel +BuildRequires: llvm-devel BuildRequires: openssl ### # Don't build with pie to avoid problems with zipl @@ -196,6 +198,7 @@ Requires: util-linux %ifarch s390x Requires: gawk +BuildRequires: libica-devel-static Requires: perl-base Requires: rsync Requires: s390-tools-genprotimg-data @@ -371,10 +374,12 @@ # commands, since make install runs sed commands against various scripts to # modify the "-v" output appropriately. -export OPT_FLAGS="%{optflags}" +export OPT_FLAGS="$(echo "%{optflags}" | sed 's/-flto=auto//g')" export KERNELIMAGE_MAKEFLAGS="%%{?_smp_mflags}" %make_build \ + ARCH=s390x \ + RUSTFLAGS="-C link-arg=-fuse-ld=lld" \ ZFCPDUMP_DIR=%{_prefix}/lib/s390-tools/zfcpdump \ DISTRELEASE=%{rbrelease} \ UDEVRUNDIR=/run/udev \ @@ -800,6 +805,7 @@ %files genprotimg-data /lib/s390-tools/stage3.bin %dir %{_datadir}/s390-tools/pvimg +%dir %{_datadir}/s390-tools/netboot %{_datadir}/s390-tools/pvimg/stage3a.bin %{_datadir}/s390-tools/pvimg/stage3b_reloc.bin @@ -833,15 +839,18 @@ %files %{_prefix}/bin/* %dir %{_datadir}/s390-tools -%dir %{_datadir}/s390-tools/pvimg +%{_datadir}/s390-tools/pvimg/ +%{_datadir}/s390-tools/netboot/ %{_datadir}/bash-completion/completions/genprotimg.bash %{_datadir}/bash-completion/completions/pvattest.bash %{_datadir}/bash-completion/completions/pvimg.bash %{_datadir}/bash-completion/completions/pvsecret.bash +%{_datadir}/bash-completion/completions/pvverify.bash %{_datadir}/zsh/site-functions/_genprotimg %{_datadir}/zsh/site-functions/_pvattest %{_datadir}/zsh/site-functions/_pvimg %{_datadir}/zsh/site-functions/_pvsecret +%{_datadir}/zsh/site-functions/_pvverify %{_mandir}/man1/* %endif ++++++ s390-tools-2.39.0.tar.gz -> s390-tools-2.40.0.tar.gz ++++++ ++++ 9417 lines of diff (skipped) ++++++ s390-tools-sles12-create-filesystem-links.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.193571754 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.213572577 +0100 @@ -2,9 +2,11 @@ etc/udev/rules.d/59-dasd.rules | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---- a/etc/udev/rules.d/59-dasd.rules -+++ b/etc/udev/rules.d/59-dasd.rules -@@ -15,7 +15,7 @@ +Index: s390-tools-2.40.0/etc/udev/rules.d/59-dasd.rules +=================================================================== +--- s390-tools-2.40.0.orig/etc/udev/rules.d/59-dasd.rules ++++ s390-tools-2.40.0/etc/udev/rules.d/59-dasd.rules +@@ -15,7 +15,7 @@ KERNEL=="dasd*[!0-9]", ENV{ID_XUID}=="?* LABEL="dasd_block_end" @@ -13,7 +15,7 @@ # for partitions import parent information KERNEL=="dasd*[0-9]", IMPORT{parent}=="ID_*" -@@ -24,6 +24,14 @@ +@@ -24,6 +24,14 @@ KERNEL=="dasd*[0-9]", ENV{ID_SERIAL}=="? KERNEL=="dasd*[0-9]", ENV{ID_UID}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_UID}-part%n" KERNEL=="dasd*[0-9]", ENV{ID_XUID}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_XUID}-part%n" ++++++ s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.245573893 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.249574058 +0100 @@ -15,9 +15,11 @@ fdasd/fdasd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) ---- a/fdasd/fdasd.c -+++ b/fdasd/fdasd.c -@@ -1231,10 +1231,12 @@ +Index: s390-tools-2.40.0/fdasd/fdasd.c +=================================================================== +--- s390-tools-2.40.0.orig/fdasd/fdasd.c ++++ s390-tools-2.40.0/fdasd/fdasd.c +@@ -1232,10 +1232,12 @@ static int fdasd_get_volser(fdasd_anchor */ static void fdasd_reread_partition_table(fdasd_anchor_t *anc) { ++++++ s390-tools-sles12-zipl_boot_msg.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.297576033 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.305576362 +0100 @@ -2,9 +2,11 @@ zipl/boot/menu.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) ---- a/zipl/boot/menu.c -+++ b/zipl/boot/menu.c -@@ -168,8 +168,11 @@ +Index: s390-tools-2.40.0/zipl/boot/menu.c +=================================================================== +--- s390-tools-2.40.0.orig/zipl/boot/menu.c ++++ s390-tools-2.40.0/zipl/boot/menu.c +@@ -191,8 +191,11 @@ int menu(void) /* print config list */ menu_list(); ++++++ s390-tools-sles15-sysconfig-compatible-dumpconf.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.333577514 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.341577843 +0100 @@ -2,8 +2,10 @@ etc/sysconfig/dumpconf | 133 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) ---- a/etc/sysconfig/dumpconf -+++ b/etc/sysconfig/dumpconf +Index: s390-tools-2.40.0/etc/sysconfig/dumpconf +=================================================================== +--- s390-tools-2.40.0.orig/etc/sysconfig/dumpconf ++++ s390-tools-2.40.0/etc/sysconfig/dumpconf @@ -1,3 +1,4 @@ +########################################################################################### # ++++++ s390-tools-sles15sp3-Allow-multiple-device-arguments.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.385579653 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.389579818 +0100 @@ -11,9 +11,11 @@ dasdfmt/dasdfmt.c | 197 +++++++++++++++++++++++++++++++----------------------- 2 files changed, 119 insertions(+), 84 deletions(-) ---- a/dasdfmt/dasdfmt.8 -+++ b/dasdfmt/dasdfmt.8 -@@ -11,14 +11,14 @@ +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8 +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8 ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8 +@@ -11,14 +11,14 @@ dasdfmt \- formatting of DASD (ECKD) dis .br [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d \fIlayout\fR] .br @@ -31,18 +33,20 @@ .br \fBWARNING\fR: Careless usage of \fBdasdfmt\fR can result in ---- a/dasdfmt/dasdfmt.c -+++ b/dasdfmt/dasdfmt.c -@@ -25,6 +25,8 @@ - +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c +@@ -26,6 +26,8 @@ #include "dasdfmt.h" + #include "dasdfmt_cli.h" +#define MAX_DEVICES 512 +#define MAX_LENGTH 256 #define BUSIDSIZE 8 #define SEC_PER_DAY (60 * 60 * 24) #define SEC_PER_HOUR (60 * 60) -@@ -57,7 +59,9 @@ +@@ -58,7 +60,9 @@ static const struct util_prg prg = { static struct dasdfmt_globals { dasd_information2_t dasd_info; char *dev_path; /* device path entered by user */ @@ -52,7 +56,7 @@ int verbosity; int testmode; int withoutprompt; -@@ -484,15 +488,15 @@ +@@ -379,15 +383,15 @@ static void program_interrupt_signal(int program_interrupt_in_progress = 1; if (disk_disabled) { @@ -71,7 +75,7 @@ } else { printf("Exiting...\n"); } -@@ -512,9 +516,6 @@ +@@ -407,9 +411,6 @@ static void get_device_name(int optind, unsigned int maj, min; struct stat dev_stat; @@ -81,7 +85,7 @@ if (optind >= argc) error("No device specified!"); -@@ -610,10 +611,10 @@ +@@ -505,10 +506,10 @@ static void check_disk(void) error("the ioctl call to retrieve read/write status information failed: %s", strerror(err)); if (ro) @@ -94,7 +98,7 @@ } if (strncmp(g.dasd_info.type, "ECKD", 4) != 0) { warnx("Unsupported disk type"); -@@ -700,7 +701,7 @@ +@@ -595,7 +596,7 @@ static void set_geo(unsigned int *cylind struct dasd_eckd_characteristics *characteristics; if (g.verbosity > 0) @@ -103,7 +107,7 @@ characteristics = (struct dasd_eckd_characteristics *) &g.dasd_info.characteristics; -@@ -728,13 +729,13 @@ +@@ -623,13 +624,13 @@ static void set_label(volume_label_t *vl "Cylinders above this limit will not be" " accessible as a linux partition!\n" "Type \"yes\" to continue, no will leave" @@ -120,7 +124,7 @@ return; } } -@@ -872,7 +873,7 @@ +@@ -767,7 +768,7 @@ static void check_disk_format(unsigned i check_params->start_unit = 0; check_params->stop_unit = (cylinders * heads) - 1; @@ -129,7 +133,7 @@ if (g.testmode) { printf("Test mode active, omitting ioctl.\n"); -@@ -896,7 +897,7 @@ +@@ -791,7 +792,7 @@ static void check_disk_format(unsigned i if (process_tracks(cylinders, heads, check_params)) error("Use --mode=full to perform a clean format."); @@ -138,7 +142,7 @@ } /* -@@ -946,8 +947,8 @@ +@@ -841,8 +842,8 @@ static void dasdfmt_print_info(volume_la printf("Device Type: %s Provisioned\n", g.ese ? "Thinly" : "Fully"); @@ -149,7 +153,7 @@ printf(" Device number of device : 0x%x\n", g.dasd_info.devno); printf(" Labelling device : %s\n", (g.writenolabel) ? "no" : "yes"); -@@ -1012,7 +1013,7 @@ +@@ -907,7 +908,7 @@ static void dasdfmt_write_labels(volume_ int ipl1_record_len, ipl2_record_len; if (g.verbosity > 0) @@ -158,7 +162,7 @@ get_blocksize(&blksize); -@@ -1030,7 +1031,7 @@ +@@ -925,7 +926,7 @@ static void dasdfmt_write_labels(volume_ /* write empty bootstrap (initial IPL records) */ if (g.verbosity > 0) @@ -167,7 +171,7 @@ /* * Note: ldl labels do not contain the key field -@@ -1089,7 +1090,7 @@ +@@ -984,7 +985,7 @@ static void dasdfmt_write_labels(volume_ label_position = g.dasd_info.label_block * blksize; if (g.verbosity > 0) @@ -176,7 +180,7 @@ rc = lseek(fd, label_position, SEEK_SET); if (rc != label_position) { -@@ -1120,7 +1121,7 @@ +@@ -1015,7 +1016,7 @@ static void dasdfmt_write_labels(volume_ } if (g.verbosity > 0) @@ -185,7 +189,7 @@ label_position = (VTOC_START_CC * heads + VTOC_START_HH) * geo.sectors * blksize; -@@ -1242,7 +1243,7 @@ +@@ -1137,7 +1138,7 @@ static void dasdfmt_release_space(void) if (!g.ese || g.no_discard) return; @@ -194,7 +198,7 @@ err = dasd_release_space(g.dev_node, &r); if (err) error("Could not release space: %s", strerror(err)); -@@ -1261,20 +1262,21 @@ +@@ -1156,20 +1157,21 @@ static void dasdfmt_prepare_and_format(u int err; if (!(g.withoutprompt && g.verbosity < 1)) @@ -221,7 +225,7 @@ /* except track 0 from standard formatting procss */ p->start_unit = 1; -@@ -1282,19 +1284,19 @@ +@@ -1177,19 +1179,19 @@ static void dasdfmt_prepare_and_format(u process_tracks(cylinders, heads, p); if (g.verbosity > 0) @@ -244,7 +248,7 @@ disk_enable(); } -@@ -1306,18 +1308,18 @@ +@@ -1201,18 +1203,18 @@ static void dasdfmt_expand_format(unsign format_data_t *p) { if (!(g.withoutprompt && g.verbosity < 1)) @@ -267,7 +271,7 @@ if (g.verbosity > 0) printf("Re-accessing the device...\n"); -@@ -1426,16 +1428,16 @@ +@@ -1321,16 +1323,16 @@ static void do_format_dasd(volume_label_ if (!g.withoutprompt) { printf("\n"); if (mode != EXPAND) @@ -288,7 +292,7 @@ return; } } -@@ -1453,12 +1455,12 @@ +@@ -1348,12 +1350,12 @@ static void do_format_dasd(volume_label_ break; } @@ -303,7 +307,7 @@ err = dasd_reread_partition_table(g.dev_node, 5); if (err != 0) { ERRMSG("%s: error during rereading the partition " -@@ -1472,7 +1474,7 @@ +@@ -1367,7 +1369,7 @@ static void do_format_dasd(volume_label_ static void eval_format_mode(void) { if (!g.force && g.mode_specified && g.ese && mode == EXPAND) { @@ -312,7 +316,7 @@ warnx("Format mode 'expand' is not feasible."); error("Use --mode=full or --mode=quick to perform a clean format"); } -@@ -1495,20 +1497,70 @@ +@@ -1390,20 +1392,70 @@ static void set_prog_name(char *s) prog_name = p + 1; } @@ -387,7 +391,7 @@ /* Establish a handler for interrupt signals. */ signal(SIGTERM, program_interrupt_signal); -@@ -1644,6 +1696,9 @@ +@@ -1539,6 +1591,9 @@ int main(int argc, char *argv[]) break; /* exit loop if finished */ } @@ -397,7 +401,7 @@ CHECK_SPEC_MAX_ONCE(g.blksize_specified, "blocksize"); CHECK_SPEC_MAX_ONCE(g.labelspec, "label"); CHECK_SPEC_MAX_ONCE(g.writenolabel, "omit-label-writing flag"); -@@ -1662,48 +1717,28 @@ +@@ -1557,49 +1612,29 @@ int main(int argc, char *argv[]) if (g.print_hashmarks) PARSE_PARAM_INTO(g.hashstep, hashstep_str, 10, "hashstep"); @@ -409,11 +413,7 @@ - - g.ese = dasd_sys_ese(g.dev_node); - eval_format_mode(); -+ while (optind < argc) { -+ get_device_name(optind, argc, argv); -+ strncpy(g.dev_path_array[numdev], g.dev_path, strlen(g.dev_path)); -+ strncpy(g.dev_node_array[numdev], g.dev_node, strlen(g.dev_node)); - +- - /* Either let the user specify the blksize or get it from the kernel */ - if (!g.blksize_specified) { - if (!(mode == FULL || @@ -421,10 +421,8 @@ - get_blocksize(&format_params.blksize); - else - format_params = ask_user_for_blksize(format_params); -+ optind++; -+ numdev++; - } - +- } +- - if (g.keep_volser) { - if (g.labelspec) - error("The -k and -l options are mutually exclusive"); @@ -435,15 +433,31 @@ - vtoc_volume_label_set_volser(&vlabel, old_volser); - else - error("VOLSER not found on device %s", g.dev_path); -- } ++ while (optind < argc) { ++ get_device_name(optind, argc, argv); ++ strncpy(g.dev_path_array[numdev], g.dev_path, strlen(g.dev_path)); ++ strncpy(g.dev_node_array[numdev], g.dev_node, strlen(g.dev_node)); ++ ++ optind++; ++ numdev++; ++ } ++ + if (!numdev) + error("%s: No device specified!\n", + prog_name); - -- check_disk(); ++ + if (numdev > 1 && g.labelspec) + error("Specifying a volser to be written doesn't make sense when formatting multiple DASD volumes."); ++ ++ for (i = 0; i < numdev; i++) ++ { ++ strncpy(g.dev_path, g.dev_path_array[i], strlen(g.dev_path_array[i])+1); ++ strncpy(g.dev_node, g.dev_node_array[i], strlen(g.dev_node_array[i])+1); ++ process_dasd(&vlabel, format_params); + } +- check_disk(); +- - if (check_param(str, ERR_LENGTH, &format_params) < 0) - error("%s", str); - @@ -454,13 +468,8 @@ - check_disk_format(cylinders, heads, &format_params); - else - do_format_dasd(&vlabel, &format_params, cylinders, heads); -+ for (i = 0; i < numdev; i++) -+ { -+ strncpy(g.dev_path, g.dev_path_array[i], strlen(g.dev_path_array[i])+1); -+ strncpy(g.dev_node, g.dev_node_array[i], strlen(g.dev_node_array[i])+1); -+ process_dasd(&vlabel, format_params); -+ } - +- free(g.dev_path); free(g.dev_node); + ++++++ s390-tools-sles15sp3-Format-devices-in-parallel-1.patch ++++++ --- a/dasdfmt/dasdfmt_cli.h 2025-12-11 17:03:28.000000000 +0100 +++ b/dasdfmt/dasdfmt_cli.h 2026-01-05 13:25:46.220565369 +0100 @@ -91,7 +91,7 @@ .desc = "Show a progressbar", }, { - .option = { "percentage", no_argument, NULL, 'P' }, + .option = { "percentage", no_argument, NULL, 'Q' }, .desc = "Show progress in percent", }, UTIL_OPT_SECTION("MISC"), ++++++ s390-tools-sles15sp3-Format-devices-in-parallel.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.441581957 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.445582122 +0100 @@ -11,8 +11,10 @@ dasdfmt/dasdfmt.c | 58 ++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 60 insertions(+), 14 deletions(-) ---- a/dasdfmt/dasdfmt.8 -+++ b/dasdfmt/dasdfmt.8 +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8 +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8 ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8 @@ -7,7 +7,7 @@ dasdfmt \- formatting of DASD (ECKD) disk drives. @@ -22,7 +24,7 @@ .br [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d \fIlayout\fR] .br -@@ -95,7 +95,7 @@ +@@ -95,7 +95,7 @@ Do not use this option if you are using running in background or redirecting the output to a file. .TP @@ -31,7 +33,7 @@ Print one line for each formatted cylinder showing the number of the cylinder and percentage of formatting process. Intended to be used by higher level interfaces. -@@ -164,6 +164,18 @@ +@@ -164,6 +164,18 @@ and always be a power of two. The recomm .TP \fB\-l\fR \fIvolser\fR or \fB\-\-label\fR=\fIvolser\fR @@ -50,8 +52,10 @@ Specify the volume serial number or volume identifier to be written to disk after formatting. If no label is specified, a sensible default is used. \fIvolser\fR is interpreted as ASCII string and is automatically ---- a/dasdfmt/dasdfmt.c -+++ b/dasdfmt/dasdfmt.c +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c @@ -13,6 +13,7 @@ #include <sys/sysmacros.h> #include <sys/time.h> @@ -60,7 +64,7 @@ #include "lib/dasd_base.h" #include "lib/dasd_sys.h" -@@ -81,6 +82,7 @@ +@@ -82,6 +83,7 @@ static struct dasdfmt_globals { int mode_specified; int ese; int no_discard; @@ -68,28 +72,19 @@ } g = { .dasd_info = { 0 }, }; -@@ -105,6 +107,11 @@ - .desc = "Perform complete format check on device", - .flags = UTIL_OPT_FLAG_NOSHORT, - }, +@@ -106,6 +108,11 @@ static void error(const char *format, .. + /* + * Helper function to calculate the days, hours, minutes, and seconds + * for a given timestamp in seconds + { + .option = { "max_parallel", required_argument, NULL, 'P' }, + .desc = "Format devices in parallel", + .flags = UTIL_OPT_FLAG_NOLONG, + }, - UTIL_OPT_SECTION("FORMAT OPTIONS"), - { - .option = { "blocksize", required_argument, NULL, 'b' }, -@@ -162,7 +169,7 @@ - .desc = "Show a progressbar", - }, - { -- .option = { "percentage", no_argument, NULL, 'P' }, -+ .option = { "percentage", no_argument, NULL, 'Q' }, - .desc = "Show progress in percent", - }, - UTIL_OPT_SECTION("MISC"), -@@ -311,7 +318,7 @@ + */ + static void calc_time(time_t time, int *d, int *h, int *m, int *s) + { +@@ -206,7 +213,7 @@ static void draw_progress(int cyl, unsig } if (g.print_hashmarks && (cyl / g.hashstep - hashcount) != 0) { @@ -98,7 +93,7 @@ fflush(stdout); hashcount++; } -@@ -1560,7 +1567,11 @@ +@@ -1455,7 +1462,11 @@ int main(int argc, char *argv[]) char *reqsize_param_str = NULL; char *hashstep_str = NULL; @@ -111,7 +106,7 @@ /* Establish a handler for interrupt signals. */ signal(SIGTERM, program_interrupt_signal); -@@ -1623,7 +1634,7 @@ +@@ -1518,7 +1529,7 @@ int main(int argc, char *argv[]) g.print_hashmarks = 1; } break; @@ -120,7 +115,7 @@ if (!(g.print_hashmarks || g.print_progressbar)) g.print_percentage = 1; break; -@@ -1682,6 +1693,9 @@ +@@ -1577,6 +1588,9 @@ int main(int argc, char *argv[]) case OPT_NODISCARD: g.no_discard = 1; break; @@ -130,7 +125,7 @@ case OPT_CHECK: g.check = 1; break; -@@ -1733,15 +1747,35 @@ +@@ -1628,15 +1642,35 @@ int main(int argc, char *argv[]) if (numdev > 1 && g.labelspec) error("Specifying a volser to be written doesn't make sense when formatting multiple DASD volumes."); ++++++ s390-tools-sles15sp3-Implement-Y-yast_mode.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.473583273 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.477583438 +0100 @@ -11,8 +11,10 @@ dasdfmt/dasdfmt.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 72 insertions(+), 8 deletions(-) ---- a/dasdfmt/dasdfmt.8 -+++ b/dasdfmt/dasdfmt.8 +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8 +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8 ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8 @@ -7,7 +7,7 @@ dasdfmt \- formatting of DASD (ECKD) disk drives. @@ -22,7 +24,7 @@ .br [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d \fIlayout\fR] .br -@@ -112,6 +112,11 @@ +@@ -112,6 +112,11 @@ The value will be at least as big as the .br .TP @@ -34,9 +36,11 @@ \fB\-M\fR \fImode\fR or \fB\-\-mode\fR=\fImode\fR Specify the \fImode\fR to be used to format the device. Valid modes are: .RS ---- a/dasdfmt/dasdfmt.c -+++ b/dasdfmt/dasdfmt.c -@@ -83,6 +83,7 @@ +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c +@@ -84,6 +84,7 @@ static struct dasdfmt_globals { int ese; int no_discard; int procnum; @@ -44,18 +48,7 @@ } g = { .dasd_info = { 0 }, }; -@@ -172,6 +173,10 @@ - .option = { "percentage", no_argument, NULL, 'Q' }, - .desc = "Show progress in percent", - }, -+ { -+ .option = { "yast_mode", no_argument, NULL, 'Y' }, -+ .desc = "YaST mode", -+ }, - UTIL_OPT_SECTION("MISC"), - { - .option = { "check_host_count", no_argument, NULL, 'C' }, -@@ -318,7 +323,9 @@ +@@ -213,7 +214,9 @@ static void draw_progress(int cyl, unsig } if (g.print_hashmarks && (cyl / g.hashstep - hashcount) != 0) { @@ -66,7 +59,7 @@ fflush(stdout); hashcount++; } -@@ -392,7 +399,7 @@ +@@ -287,7 +290,7 @@ static void evaluate_format_error(format unsigned int kl = 0; int blksize = cdata->expect.blksize; @@ -75,7 +68,7 @@ printf("\n"); /* -@@ -780,8 +787,9 @@ +@@ -675,8 +678,9 @@ static void check_hashmarks(void) g.hashstep = 10; } @@ -87,7 +80,7 @@ } } -@@ -1462,17 +1470,19 @@ +@@ -1357,17 +1361,19 @@ static void do_format_dasd(volume_label_ break; } @@ -110,7 +103,7 @@ printf("ok\n"); } } -@@ -1548,6 +1558,7 @@ +@@ -1443,6 +1449,7 @@ void process_dasd(volume_label_t *orig_v error("%s", str); set_geo(&cylinders, &heads); @@ -118,7 +111,7 @@ set_label(&vlabel, &format_params, cylinders); if (g.check) -@@ -1557,6 +1568,29 @@ +@@ -1452,6 +1459,29 @@ void process_dasd(volume_label_t *orig_v } @@ -148,7 +141,7 @@ int main(int argc, char *argv[]) { volume_label_t vlabel; -@@ -1693,6 +1727,10 @@ +@@ -1588,6 +1618,10 @@ int main(int argc, char *argv[]) case OPT_NODISCARD: g.no_discard = 1; break; @@ -159,7 +152,7 @@ case 'P': max_parallel = atoi(optarg); break; -@@ -1728,6 +1766,21 @@ +@@ -1623,6 +1657,21 @@ int main(int argc, char *argv[]) reqsize = DEFAULT_REQUESTSIZE; } @@ -181,7 +174,7 @@ if (g.print_hashmarks) PARSE_PARAM_INTO(g.hashstep, hashstep_str, 10, "hashstep"); -@@ -1747,6 +1800,12 @@ +@@ -1642,6 +1691,12 @@ int main(int argc, char *argv[]) if (numdev > 1 && g.labelspec) error("Specifying a volser to be written doesn't make sense when formatting multiple DASD volumes."); ++++++ s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.501584425 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.509584754 +0100 @@ -13,9 +13,11 @@ dasdfmt/dasdfmt.c | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) ---- a/dasdfmt/dasdfmt.8 -+++ b/dasdfmt/dasdfmt.8 -@@ -11,7 +11,7 @@ +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8 +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8 ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8 +@@ -11,7 +11,7 @@ dasdfmt \- formatting of DASD (ECKD) dis .br [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d \fIlayout\fR] .br @@ -24,7 +26,7 @@ .SH DESCRIPTION \fBdasdfmt\fR formats one or several DASD (ECKD) disk drive(s) to prepare them -@@ -39,6 +39,9 @@ +@@ -39,6 +39,9 @@ out, what it \fBwould\fR do. .TP \fB\-v\fR Increases verbosity. @@ -34,20 +36,22 @@ .TP \fB\-y\fR ---- a/dasdfmt/dasdfmt.c -+++ b/dasdfmt/dasdfmt.c -@@ -113,6 +113,10 @@ +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c +@@ -113,6 +113,10 @@ static void error(const char *format, .. + .option = { "max_parallel", required_argument, NULL, 'P' }, .desc = "Format devices in parallel", .flags = UTIL_OPT_FLAG_NOLONG, - }, + { + .option = { "device", required_argument, NULL, 'f' }, + .desc = "Specify device to format", + }, - UTIL_OPT_SECTION("FORMAT OPTIONS"), - { - .option = { "blocksize", required_argument, NULL, 'b' }, -@@ -1649,6 +1653,12 @@ + }, + */ + static void calc_time(time_t time, int *d, int *h, int *m, int *s) +@@ -1540,6 +1544,12 @@ int main(int argc, char *argv[]) } g.layout_specified = 1; break; ++++++ s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch ++++++ --- /var/tmp/diff_new_pack.ppdJCU/_old 2026-01-06 17:47:48.525585413 +0100 +++ /var/tmp/diff_new_pack.ppdJCU/_new 2026-01-06 17:47:48.529585577 +0100 @@ -19,9 +19,11 @@ dasdfmt/dasdfmt.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) ---- a/dasdfmt/dasdfmt.c -+++ b/dasdfmt/dasdfmt.c -@@ -621,7 +621,7 @@ +Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c +=================================================================== +--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c ++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c +@@ -512,7 +512,7 @@ static void check_layout(unsigned int in */ static void check_disk(void) { @@ -30,7 +32,7 @@ bool ro; err = dasd_is_ro(g.dev_node, &ro); -@@ -631,6 +631,23 @@ +@@ -522,6 +522,23 @@ static void check_disk(void) if (ro) error("Disk %s is read only!", g.dev_path); if (!g.force) { ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/s390-tools/vendor.tar.zst /work/SRC/openSUSE:Factory/.s390-tools.new.1928/vendor.tar.zst differ: char 7, line 1
