6a6c0cb679
*** v2.34.0 * Changes of existing tools: - ap_tools/ap-check: Add support for vfio-ap dynamic configuration - dbginfo.sh: Update/Add additional DASD data collection - dumpconf: Add new parameter 'SCP_DATA' for SCSI/NVMe/ECKD dump devices - libutil: Make formatted meta-data configurable - s390-tools: Replace 'which' with built-in 'command -v' - zdump/dfi_elf: Support core dumps of vr-kernels * Bug Fixes: - chzdev: Fix warning about failed ATTR writes by udev - rust/pv: Try again if first CRL-URI is invalid - rust/pvattest: Add short option for --arpk - zdump: Fix 'zgetdump -i' ioctl error on s390 formatted dump file *** v2.33.1 * Bug Fixes: - s390-tools: Fix formatting and typos in README.md - s390-tools: Fix release string *** v2.33.0 * Add new tools / libraries: - chpstat: New tool for displaying channel path statistics - libutil: Add output format helpers(util_fmt: JSON, JSON-SEQ, CSV, text pairs) * Changes of existing tools / libraries: - chzdev: Add --is-owner to identify files created by zdev - dasdfmt: Change default mode to always use full-format (Note: affects ESE DASD) - libap: Significantly reduce delay time between file lock retries - pvattest: Rewrite from C to Rust - pvattest: Support additional data & user-data - rust/pv: Support for Attestation * Bug Fixes: - chreipl: Improve disk type detection when running under QEMU - dbginfo.sh: Use POSIX option with uname - s390-tools: Fix missing hyphen escapes in the man page for many tools - zipl/src: Fix bugs in disk_get_info() reproducible in corner cases *** v2.32.0 * Changes of existing tools: - cpumf/lscpumf: add support for machine type 3932 - genprotimg, pvattest, and pvsecret accept IBM signing key with Armonk as subject locality - zdump/zipl: Support for List-Directed dump from ECKD DASD - zkey: Detect FIPS mode and generate PBKDF for luksFormat according to it * Bug Fixes: - dbginfo.sh: dash compatible copy sequence - rust/pv_core: Fix UvDeviceInfo::get() method - zipl/src: Fix leak of files if run with a broken configuration - zkey: Fix convert command to accept only keys of type CCA-AESDATA * Revendored vendor.tar.gz * Removed obsolete patches - s390-tools-sles15sp5-01-rust-pv-support-Armonk-in-IBM-signing-key-subject.patch - s390-tools-sles15sp6-02-genprotimg-support-Armonk-in-IBM-signing-key-subject.patch - s390-tools-sles15sp6-03-libpv-support-Armonk-in-IBM-signing-key-subject.patch - s390-tools-sles15sp6-04-pvattest-Fix-root-ca-parsing.patch - s390-tools-sles15sp6-genprotimg-makefile.patch OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=219
57 lines
1.5 KiB
Diff
57 lines
1.5 KiB
Diff
From 943e577440d74ad7f8787af2590c8ab4579a459b Mon Sep 17 00:00:00 2001
|
|
From: Hannes Reinecke <hare@suse.de>
|
|
Date: Thu, 5 Nov 2015 10:57:38 +0100
|
|
Subject: [PATCH] dasdfmt: retry BIODASDINFO if device is busy
|
|
|
|
Modern udev have the wonderful 'feature' to sending a 'change'
|
|
event whenever a device opened with O_RDWR is closed again.
|
|
The reasoning is that the said program _might_ have changed
|
|
the partition table and hence we _might_ have missed a partition
|
|
update.
|
|
But in doing so it not only generated tons of pointless events
|
|
but also confused the hell out of other programs.
|
|
Idiots.
|
|
|
|
References: bsc#937340
|
|
|
|
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
|
---
|
|
dasdfmt/dasdfmt.c | 19 ++++++++++++++++++-
|
|
1 file changed, 18 insertions(+), 1 deletion(-)
|
|
|
|
--- a/dasdfmt/dasdfmt.c
|
|
+++ b/dasdfmt/dasdfmt.c
|
|
@@ -621,7 +621,7 @@
|
|
*/
|
|
static void check_disk(void)
|
|
{
|
|
- int err;
|
|
+ int err, index = 0 ;
|
|
bool ro;
|
|
|
|
err = dasd_is_ro(g.dev_node, &ro);
|
|
@@ -631,6 +631,23 @@
|
|
if (ro)
|
|
error("Disk %s is read only!", g.dev_path);
|
|
if (!g.force) {
|
|
+ /*
|
|
+ * udev strikes again.
|
|
+ * Modern udev will issue a 'change' event whenever
|
|
+ * a device opened with O_RDWR is closed again.
|
|
+ * On the grounds that program _might_ have changed
|
|
+ * the partition table.
|
|
+ * And confusing the hell out ouf anyone else.
|
|
+ * Bah.
|
|
+ */
|
|
+ for ( index = 0 ; index < 6 ; index++ ) {
|
|
+ if (g.dasd_info.open_count > 1) {
|
|
+ dasd_get_info(g.dev_node, &g.dasd_info);
|
|
+ sleep(1);
|
|
+ }
|
|
+ else break;
|
|
+
|
|
+ }
|
|
if (g.dasd_info.open_count > 1)
|
|
error("Disk %s is in use!", g.dev_path);
|
|
}
|