089c94ca65
- Upgrade to version 2.27.0 (jsc#PED-3275) - Changes of existing tools: * s390-tools cross-compile and non-s390x support: - pkg-config is now mandatory for the build process - Add PKG_CONFIG Makefile variable to select pkg-config program; default pkg-config or $(CROSS_COMPILE)pkg-config if CROSS_COMPILE is set - Rename Makefile variable ARCH to HOST_ARCH. HOST_ARCH is the architecture that will run the produced (executable) objects - Add the Makefile variable BUILD_ARCH. BUILD_ARCH is the architecture of the build system. For each Makefile variable like CC, LINK, CPP, ... there is a suffixed version of it - e.g. CC_FOR_BUILD. This is useful for cross compiling, and this naming convention is very similar to the Meson convention (see https://mesonbuild.com/Reference-tables.html#environment-variables-per-machine). - Limit build targets for non-s390x architectures (pvattest) * dasdfmt: Fall back to full format if space release fails * dbginfo.sh: Add nstat for network and SNMP stats * dbginfo.sh: Rework crypto data collection * hyptop: Show thread util by default * zipl: Add support for list-directed IPL dump from ECKD DASD - Bug Fixes: * lszcrypt: Fix argument parsing * zdev/dracut: Fix out-of-memory (OOM) situations in the kdump crashkernel environment * ziomon/ziorep_config: Fix for SCSI devices of type disk without block dev * pvextract-hdr: Fix parsing issues on little-endian systems - Amended the .patches to fit the 2.27 version - Removed obsolete patches (the fixes are included in this version) * s390-tools-sles15sp5-zipl-boot-disable-Warray-bounds-for-now.patch * s390-tools-sles15sp5-zkey-Support-EP11-host-library-version-4.patch * s390-tools-sles15sp5-01-zipl-boot-discard-.eh_frame-and-.interp-input-sectio.patch * s390-tools-sles15sp5-02-zipl-boot-declare-that-no-executable-stack-is-requir.patch * s390-tools-sles15sp5-03-zipl-boot-use-no-warn-rwx-segments-linker-flag.patch * s390-tools-sles15sp5-04-zipl-boot-disable-build-id.patch * s390-tools-sles15sp5-05-zipl-boot-simplify-objcopy-commands.patch * s390-tools-sles15sp5-06-zipl-move-STAGE2_MAX_SIZE-and-STAGE1B_LOAD_ADDR-to-l.patch * s390-tools-sles15sp5-07-zipl-boot-use-linker-scripts-for-all-bootloaders.patch * s390-tools-sles15sp5-08-genprotimg-boot-declare-that-no-executable-stack-is-.patch * s390-tools-sles15sp5-09-genprotimg-boot-use-no-warn-rwx-segments-linker-flag.patch * s390-tools-sles15sp5-10-genprotimg-boot-disable-build-id.patch * s390-tools-sles15sp5-11-genprotimg-boot-Makefile-simplify-objcopy-command.patch * s390-tools-sles15sp5-12-genprotimg-boot-improve-linker-scripts.patch * s390-tools-sles15sp5-13-genprotimg-boot-stage3b-add-size-check-to-the-linker.patch * s390-tools-sles15sp5-14-genprotimg-boot-stage3b_reloc.bin-add-linker-script.patch * s390-tools-sles15sp5-15-zipl-Embed-loader-data-directly-into-boot-object.patch * s390-tools-sles15sp5-lszcrypt-use-separate-index-for-inner-sub-device-loo.patch * s390-tools-sles15sp5-01-ziomon-ziorep_config-fix-missing-SG-major-minor-for-.patch * s390-tools-sles15sp5-02-ziomon-ziorep_config-fix-for-SCSI-devices-of-type-di.patch * s390-tools-sles15sp5-fix-chown-commands-syntax.patch OBS-URL: https://build.opensuse.org/request/show/1093105 OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=174
197 lines
4.9 KiB
Diff
197 lines
4.9 KiB
Diff
From eabcb26fa4a91d410a6f75a9915a9ebb9f702c6b Mon Sep 17 00:00:00 2001
|
|
From: Hannes Reinecke <hare@suse.de>
|
|
Date: Fri, 6 Oct 2017 09:55:40 +0200
|
|
Subject: [PATCH] dasdfmt: Implement '-Y/--yast_mode'
|
|
|
|
Implement an option '-Y' to suppress most output.
|
|
|
|
Signed-off-by: Hannes Reinecke <hare@suse.com>
|
|
---
|
|
dasdfmt/dasdfmt.8 | 7 ++++-
|
|
dasdfmt/dasdfmt.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++------
|
|
2 files changed, 72 insertions(+), 8 deletions(-)
|
|
|
|
--- a/dasdfmt/dasdfmt.8
|
|
+++ b/dasdfmt/dasdfmt.8
|
|
@@ -7,7 +7,7 @@
|
|
dasdfmt \- formatting of DASD (ECKD) disk drives.
|
|
|
|
.SH SYNOPSIS
|
|
-\fBdasdfmt\fR [-h] [-t] [-v] [-y] [-p] [-Q] [-P] [-m \fIstep\fR]
|
|
+\fBdasdfmt\fR [-h] [-t] [-v] [-y] [-p] [-Q] [-P] [-Y] [-m \fIstep\fR]
|
|
.br
|
|
[-r \fIcylinder\fR] [-b \fIblksize\fR] [-l \fIvolser\fR] [-d \fIlayout\fR]
|
|
.br
|
|
@@ -113,6 +113,11 @@
|
|
.br
|
|
|
|
.TP
|
|
+\fB-Y\fR or \fB--yast_mode\fR
|
|
+YaST mode; suppress most output.
|
|
+.br
|
|
+
|
|
+.TP
|
|
\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 @@
|
|
int ese;
|
|
int no_discard;
|
|
int procnum;
|
|
+ int yast_mode;
|
|
} 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 @@
|
|
}
|
|
|
|
if (g.print_hashmarks && (cyl / g.hashstep - hashcount) != 0) {
|
|
- printf("%d|", g.procnum);
|
|
+ if (g.yast_mode)
|
|
+ printf("%d|", g.procnum);
|
|
+ else printf("#");
|
|
fflush(stdout);
|
|
hashcount++;
|
|
}
|
|
@@ -392,7 +399,7 @@
|
|
unsigned int kl = 0;
|
|
int blksize = cdata->expect.blksize;
|
|
|
|
- if (g.print_progressbar || g.print_hashmarks)
|
|
+ if ((g.print_progressbar || g.print_hashmarks) && !g.yast_mode)
|
|
printf("\n");
|
|
|
|
/*
|
|
@@ -780,8 +787,9 @@
|
|
g.hashstep = 10;
|
|
}
|
|
|
|
- printf("Printing hashmark every %d cylinders.\n",
|
|
- g.hashstep);
|
|
+ if (!g.yast_mode)
|
|
+ printf("Printing hashmark every %d cylinders.\n",
|
|
+ g.hashstep);
|
|
}
|
|
}
|
|
|
|
@@ -1475,17 +1483,19 @@
|
|
break;
|
|
}
|
|
|
|
- printf("Finished formatting the %s device.\n", g.dev_path);
|
|
+ if (!g.yast_mode)
|
|
+ printf("Finished formatting the %s device.\n", g.dev_path);
|
|
|
|
if (!(g.writenolabel || mode == EXPAND))
|
|
dasdfmt_write_labels(vlabel, cylinders, heads);
|
|
|
|
- printf("Rereading the partition table for %s... ", g.dev_path);
|
|
+ if (!g.yast_mode)
|
|
+ printf("Rereading the partition table for %s... ", g.dev_path);
|
|
err = dasd_reread_partition_table(g.dev_node, 5);
|
|
if (err != 0) {
|
|
ERRMSG("%s: error during rereading the partition "
|
|
"table: %s.\n", prog_name, strerror(err));
|
|
- } else {
|
|
+ } else if (!g.yast_mode) {
|
|
printf("ok\n");
|
|
}
|
|
}
|
|
@@ -1561,6 +1571,7 @@
|
|
error("%s", str);
|
|
|
|
set_geo(&cylinders, &heads);
|
|
+
|
|
set_label(&vlabel, &format_params, cylinders);
|
|
|
|
if (g.check)
|
|
@@ -1570,6 +1581,29 @@
|
|
|
|
}
|
|
|
|
+static void yast_print_cylinfo(const char *dev_filename)
|
|
+{
|
|
+ unsigned int cylinders = -1u;
|
|
+ int fd;
|
|
+ dasd_information2_t dasd_info;
|
|
+ struct dasd_eckd_characteristics *characteristics;
|
|
+
|
|
+ fd = open(dev_filename, O_RDONLY);
|
|
+ if ((fd != -1) && ( ! ioctl(fd, BIODASDINFO2, &dasd_info))) {
|
|
+
|
|
+ characteristics = (struct dasd_eckd_characteristics *) &dasd_info.characteristics;
|
|
+ if (characteristics->no_cyl == LV_COMPAT_CYL && characteristics->long_no_cyl)
|
|
+ cylinders = characteristics->long_no_cyl;
|
|
+ else
|
|
+ cylinders = characteristics->no_cyl;
|
|
+ }
|
|
+
|
|
+ if (fd != -1)
|
|
+ close(fd);
|
|
+ printf("%u\n", cylinders);
|
|
+ fflush(stdout);
|
|
+}
|
|
+
|
|
int main(int argc, char *argv[])
|
|
{
|
|
volume_label_t vlabel;
|
|
@@ -1706,6 +1740,10 @@
|
|
case OPT_NODISCARD:
|
|
g.no_discard = 1;
|
|
break;
|
|
+ case 'Y':
|
|
+ /* YaST mode */
|
|
+ g.yast_mode = 1;
|
|
+ break;
|
|
case 'P':
|
|
max_parallel = atoi(optarg);
|
|
break;
|
|
@@ -1741,6 +1779,21 @@
|
|
reqsize = DEFAULT_REQUESTSIZE;
|
|
}
|
|
|
|
+/* If -Y (YaST mode) was specified by the caller, then we need to suppress
|
|
+ * most of all the other output that might be generated. But, we _do_ want
|
|
+ * hashmarks printed so that YaST can track what's going on. If it wasn't
|
|
+ * specified on the command line, set it to a default of 10 cylinders.
|
|
+ */
|
|
+ if (g.yast_mode) {
|
|
+ g.verbosity = 0;
|
|
+ g.print_progressbar = 0;
|
|
+ g.print_percentage = 0;
|
|
+ if (! g.print_hashmarks) {
|
|
+ g.print_hashmarks = 1;
|
|
+ hashstep_str = "10";
|
|
+ }
|
|
+ }
|
|
+
|
|
if (g.print_hashmarks)
|
|
PARSE_PARAM_INTO(g.hashstep, hashstep_str, 10, "hashstep");
|
|
|
|
@@ -1760,6 +1813,12 @@
|
|
if (numdev > 1 && g.labelspec)
|
|
error("Specifying a volser to be written doesn't make sense when formatting multiple DASD volumes.");
|
|
|
|
+ if (g.yast_mode) {
|
|
+ for (numproc = 0; numproc < numdev; numproc++)
|
|
+ yast_print_cylinfo(g.dev_path_array[numproc]);
|
|
+
|
|
+ }
|
|
+
|
|
for (numproc = 0; numproc < numdev; numproc++) {
|
|
chpid = fork();
|
|
if (chpid == -1 )
|