- added patch for improving mon_statd behaviour
- rebased to 1.8.2
This commit is contained in:
parent
50a7deb725
commit
3085ce2c4a
@ -1,4 +1,4 @@
|
||||
s390-tools-1.8.1.tar.bz2
|
||||
s390-tools-1.8.2.tar.bz2
|
||||
cmsfs-1.1.8c.tar.gz
|
||||
lib-zfcp-hbaapi-2.0.tar.gz
|
||||
src_vipa-2.0.4.tar.gz
|
||||
|
@ -1,17 +1,17 @@
|
||||
From 1536e0140cbce3c8837478cfc25ea45dc3681cce Mon Sep 17 00:00:00 2001
|
||||
From 2b8336a93376953ba0ed84223264be55243ac7f8 Mon Sep 17 00:00:00 2001
|
||||
From: Dan Horak <dan@danny.cz>
|
||||
Date: Sun, 20 Jul 2008 09:24:05 +0200
|
||||
Subject: [PATCH] s390-tools-1.5.3-zipl-zfcpdump-2
|
||||
Subject: [PATCH 1/9] s390-tools-1.5.3-zipl-zfcpdump-2
|
||||
|
||||
---
|
||||
common.mak | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/common.mak b/common.mak
|
||||
index 62c17e2..3acb534 100644
|
||||
index 8b248f1..0a7916e 100644
|
||||
--- a/common.mak
|
||||
+++ b/common.mak
|
||||
@@ -38,8 +38,8 @@ GROUP = $(shell id -gn)
|
||||
@@ -63,8 +63,8 @@ GROUP = $(shell id -gn)
|
||||
export INSTROOT BINDIR LIBDIR MANDIR OWNER GROUP
|
||||
|
||||
# Special defines for zfcpdump
|
||||
@ -21,7 +21,7 @@ index 62c17e2..3acb534 100644
|
||||
+ZFCPDUMP_IMAGE = zfcpdump
|
||||
ZFCPDUMP_RD = zfcpdump.rd
|
||||
export ZFCPDUMP_DIR ZFCPDUMP_IMAGE ZFCPDUMP_RD
|
||||
endif
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
--
|
||||
1.6.3.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 1648e0dab246190c170e82244c790ef8e9144e40 Mon Sep 17 00:00:00 2001
|
||||
From 2513c0f8096c681f962d77420dac731f7bb33e44 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 23 Apr 2009 11:45:36 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-zipl-automenu
|
||||
Subject: [PATCH 2/9] s390-tools-1.8.1-zipl-automenu
|
||||
|
||||
---
|
||||
zipl/man/zipl.8 | 7 ++
|
||||
@ -29,7 +29,7 @@ index 8a83c01..6ebf240 100644
|
||||
1. Scenario: prepare disk for booting a Linux kernel image using the
|
||||
following parameters:
|
||||
diff --git a/zipl/src/job.c b/zipl/src/job.c
|
||||
index 2f69104..1b7bcb2 100644
|
||||
index c5c85d8..6a526e4 100644
|
||||
--- a/zipl/src/job.c
|
||||
+++ b/zipl/src/job.c
|
||||
@@ -43,6 +43,7 @@ static struct option options[] = {
|
||||
@ -407,10 +407,10 @@ index 9948092..caca3cf 100644
|
||||
{inv, inv, inv, inv, inv, inv, inv, req, req, inv, inv, inv, inv, inv},
|
||||
/* part dump */
|
||||
diff --git a/zipl/src/zipl.c b/zipl/src/zipl.c
|
||||
index f99177d..2a11404 100644
|
||||
index 9cb764c..4d9fd36 100644
|
||||
--- a/zipl/src/zipl.c
|
||||
+++ b/zipl/src/zipl.c
|
||||
@@ -71,6 +71,7 @@ static const char* usage_text[] = {
|
||||
@@ -73,6 +73,7 @@ static const char* usage_text[] = {
|
||||
"-n, --noninteractive Answer all confirmation questions with 'yes'",
|
||||
"-V, --verbose Provide more verbose output",
|
||||
"-a, --add-files Add all referenced files to bootmap file",
|
||||
@ -419,5 +419,5 @@ index f99177d..2a11404 100644
|
||||
};
|
||||
|
||||
--
|
||||
1.6.0.6
|
||||
1.6.3.3
|
||||
|
@ -1,17 +1,17 @@
|
||||
From 0ac6c456898d8c09908a35add45d018eb8f76613 Mon Sep 17 00:00:00 2001
|
||||
From f8acd63e169cdec39c47ac0d8c1b98e115cf24a1 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 23 Apr 2009 11:46:01 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-fdasd-su
|
||||
Subject: [PATCH 3/9] s390-tools-1.8.1-fdasd-su
|
||||
|
||||
---
|
||||
fdasd/fdasd.c | 10 ++++++----
|
||||
1 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/fdasd/fdasd.c b/fdasd/fdasd.c
|
||||
index ef01c9b..b6802f9 100644
|
||||
index aa16659..3a54968 100644
|
||||
--- a/fdasd/fdasd.c
|
||||
+++ b/fdasd/fdasd.c
|
||||
@@ -2005,10 +2005,12 @@ fdasd_get_geometry (fdasd_anchor_t *anc)
|
||||
@@ -2009,10 +2009,12 @@ fdasd_get_geometry (fdasd_anchor_t *anc)
|
||||
if (anc->verbose) printf("disk type check : ok\n");
|
||||
|
||||
if (dasd_info.FBA_layout != 0) {
|
||||
@ -29,5 +29,5 @@ index ef01c9b..b6802f9 100644
|
||||
|
||||
if (anc->verbose) printf("disk layout check : ok\n");
|
||||
--
|
||||
1.6.0.6
|
||||
1.6.3.3
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 9c34968b40aa5fee679abf0056255510333ae9c3 Mon Sep 17 00:00:00 2001
|
||||
From 35298f5f9512835071b8c08e843731bbfbb15b7e Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 23 Apr 2009 11:46:16 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-fdasd-raid-lvm
|
||||
Subject: [PATCH 4/9] s390-tools-1.8.1-fdasd-raid-lvm
|
||||
|
||||
---
|
||||
fdasd/fdasd.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++----------
|
||||
1 files changed, 53 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/fdasd/fdasd.c b/fdasd/fdasd.c
|
||||
index b6802f9..286b0bb 100644
|
||||
index 3a54968..a526d7f 100644
|
||||
--- a/fdasd/fdasd.c
|
||||
+++ b/fdasd/fdasd.c
|
||||
@@ -258,10 +258,10 @@ fdasd_error(fdasd_anchor_t *anc, enum fdasd_failure why, char *str)
|
||||
@ -23,7 +23,7 @@ index b6802f9..286b0bb 100644
|
||||
while (*line_ptr && !isgraph(*line_ptr))
|
||||
line_ptr++;
|
||||
return *line_ptr;
|
||||
@@ -310,6 +310,10 @@ fdasd_partition_type (char *str)
|
||||
@@ -312,6 +312,10 @@ fdasd_partition_type (char *str)
|
||||
strcpy(str, "Linux native");
|
||||
else if (strncmp("SWAP ", str, 6) == 0)
|
||||
strcpy(str, "Linux swap");
|
||||
@ -34,7 +34,7 @@ index b6802f9..286b0bb 100644
|
||||
else
|
||||
strcpy(str, "unknown");
|
||||
|
||||
@@ -1117,14 +1121,24 @@ fdasd_write_vtoc_labels (fdasd_anchor_t *anc)
|
||||
@@ -1122,14 +1126,24 @@ fdasd_write_vtoc_labels (fdasd_anchor_t *anc)
|
||||
strncpy(c1, s2, 31);
|
||||
}
|
||||
else {
|
||||
@ -60,7 +60,7 @@ index b6802f9..286b0bb 100644
|
||||
strncpy(ch, "LINUX.V "
|
||||
" ", 44);
|
||||
|
||||
@@ -1140,10 +1154,21 @@ fdasd_write_vtoc_labels (fdasd_anchor_t *anc)
|
||||
@@ -1145,10 +1159,21 @@ fdasd_write_vtoc_labels (fdasd_anchor_t *anc)
|
||||
strncpy(c1, dsno, 4);
|
||||
|
||||
c1 += 4;
|
||||
@ -86,7 +86,7 @@ index b6802f9..286b0bb 100644
|
||||
}
|
||||
vtoc_ebcdic_enc(ch, ch, 44);
|
||||
if (anc->verbose) printf("%2x ", part_info->f1->DS1FMTID);
|
||||
@@ -1429,9 +1454,10 @@ fdasd_change_part_type (fdasd_anchor_t *anc)
|
||||
@@ -1433,9 +1458,10 @@ fdasd_change_part_type (fdasd_anchor_t *anc)
|
||||
|
||||
printf("current partition type is: %s\n\n", fdasd_partition_type(str));
|
||||
printf(" 1 Linux native\n" \
|
||||
@ -99,7 +99,7 @@ index b6802f9..286b0bb 100644
|
||||
while (!isdigit(part_type =
|
||||
read_char("new partition type: ")));
|
||||
part_type -= 48;
|
||||
@@ -1444,6 +1470,9 @@ fdasd_change_part_type (fdasd_anchor_t *anc)
|
||||
@@ -1448,6 +1474,9 @@ fdasd_change_part_type (fdasd_anchor_t *anc)
|
||||
case 2:
|
||||
strncpy(str, "SWAP ", 6);
|
||||
break;
|
||||
@ -109,7 +109,7 @@ index b6802f9..286b0bb 100644
|
||||
default:
|
||||
printf("'%d' is not supported!\n", part_type);
|
||||
}
|
||||
@@ -1621,7 +1650,7 @@ fdasd_process_invalid_vtoc(fdasd_anchor_t *anc)
|
||||
@@ -1625,7 +1654,7 @@ fdasd_process_invalid_vtoc(fdasd_anchor_t *anc)
|
||||
static void
|
||||
fdasd_process_valid_vtoc(fdasd_anchor_t *anc, unsigned long blk)
|
||||
{
|
||||
@ -118,7 +118,7 @@ index b6802f9..286b0bb 100644
|
||||
int i, part_no, f1_size = sizeof(format1_label_t);
|
||||
partition_info_t *part_info = anc->first;
|
||||
format1_label_t f1_label;
|
||||
@@ -1673,14 +1702,26 @@ fdasd_process_valid_vtoc(fdasd_anchor_t *anc, unsigned long blk)
|
||||
@@ -1677,14 +1706,26 @@ fdasd_process_valid_vtoc(fdasd_anchor_t *anc, unsigned long blk)
|
||||
vtoc_ebcdic_enc(part_info->f1->DS1DSNAM,
|
||||
part_info->f1->DS1DSNAM, 44);
|
||||
|
||||
@ -149,5 +149,5 @@ index b6802f9..286b0bb 100644
|
||||
part_info = part_info->next;
|
||||
f1_counter++;
|
||||
--
|
||||
1.6.0.6
|
||||
1.6.3.3
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 486526858271c8ea890e8728a1cf1cceeceb9b1a Mon Sep 17 00:00:00 2001
|
||||
From 1efcfe8d7ad20f7a3f584628375da60682b4579c Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 23 Apr 2009 15:28:06 +0200
|
||||
Subject: [PATCH] don't create automenu when default menu exists
|
||||
Subject: [PATCH 5/9] don't create automenu when default menu exists
|
||||
|
||||
---
|
||||
zipl/src/job.c | 25 +++++++++++++++----------
|
||||
1 files changed, 15 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/zipl/src/job.c b/zipl/src/job.c
|
||||
index 1b7bcb2..9fc6c2d 100644
|
||||
index 6a526e4..89c8c23 100644
|
||||
--- a/zipl/src/job.c
|
||||
+++ b/zipl/src/job.c
|
||||
@@ -1441,6 +1441,8 @@ get_job_from_config_file(struct command_line* cmdline, struct job_data* job)
|
||||
@ -55,5 +55,5 @@ index 1b7bcb2..9fc6c2d 100644
|
||||
}
|
||||
else {
|
||||
--
|
||||
1.6.0.6
|
||||
1.6.3.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 815064b5e73bdeb11e85e04fb691745b15d00e99 Mon Sep 17 00:00:00 2001
|
||||
From 894de5382653e4389dc8490f2ee4a2a9c59eb86d Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Fri, 19 Jun 2009 10:01:30 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-zipl-kdump-man
|
||||
Subject: [PATCH 6/9] s390-tools-1.8.1-zipl-kdump-man
|
||||
|
||||
Description: Add kdump kernel installation instruction to zipl man page.
|
||||
Symptom: User wants to prepare SCSI disk for dump, but has not installed
|
||||
@ -14,7 +14,7 @@ Solution: Document that in the zipl man page.
|
||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/zipl/man/zipl.8 b/zipl/man/zipl.8
|
||||
index 8d2b42c..66b23eb 100644
|
||||
index 6ebf240..6df6026 100644
|
||||
--- a/zipl/man/zipl.8
|
||||
+++ b/zipl/man/zipl.8
|
||||
@@ -176,6 +176,8 @@ will be incomplete.
|
||||
@ -27,5 +27,5 @@ index 8d2b42c..66b23eb 100644
|
||||
.BR "\-M <DUMPLIST[,SIZE]>" " or " "--mvdump=<DUMPLIST[,SIZE]>"
|
||||
Install a multi-volume dump record on each device associated with one of the
|
||||
--
|
||||
1.6.0.6
|
||||
1.6.3.3
|
||||
|
@ -1,17 +1,17 @@
|
||||
From ce6dabd2c97ae9ff589232f7ff95c699a9755267 Mon Sep 17 00:00:00 2001
|
||||
From 80e1e88e108b774c7aa7c201326f1a92cf1b7e35 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Wed, 26 Aug 2009 14:21:14 +0200
|
||||
Subject: [PATCH 21/21] s390-tools-1.8.1-lszfcp-perf
|
||||
Subject: [PATCH 7/9] s390-tools-1.8.1-lszfcp-perf
|
||||
|
||||
---
|
||||
zconf/lszfcp | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/zconf/lszfcp b/zconf/lszfcp
|
||||
index e6fc94f..8ac66ea 100755
|
||||
index d0bf84f..a872d05 100755
|
||||
--- a/zconf/lszfcp
|
||||
+++ b/zconf/lszfcp
|
||||
@@ -231,7 +231,7 @@ show_devices()
|
||||
@@ -233,7 +233,7 @@ show_devices()
|
||||
# Differentiate old and new sysfs layout
|
||||
if $FC_CLASS; then
|
||||
SCSI_DEVICE_LIST=`ls -d \
|
@ -1,7 +1,7 @@
|
||||
From 664ab55f566e46c31806b25a976dea444a7976a3 Mon Sep 17 00:00:00 2001
|
||||
From d0c06736586d8f85f2e7c64291f3f289c12a0caa Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 24 Sep 2009 09:12:39 +0200
|
||||
Subject: [PATCH] fix string overflow in vtoc_volume_label_init
|
||||
Subject: [PATCH 8/9] fix string overflow in vtoc_volume_label_init
|
||||
|
||||
Originaly it tries to copy a 84B string into 4B field and reset also
|
||||
the other fields thru the overflow. This doesn't work with recent GCC
|
@ -1,389 +0,0 @@
|
||||
From afe16490113999868ff408ff303ac7df4b733ff5 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 23 Apr 2009 11:47:13 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-ziorep-fixes
|
||||
|
||||
---
|
||||
ziomon/stats.h | 9 ++++---
|
||||
ziomon/ziomon | 13 +++++++----
|
||||
ziomon/ziorep_config | 23 +++++++++++----------
|
||||
ziomon/ziorep_traffic.cpp | 31 +++++++++++++++++------------
|
||||
ziomon/ziorep_utilization.cpp | 4 +-
|
||||
ziomon/ziorep_utils.cpp | 43 +++++++++++++++++++++++++++++++++++-----
|
||||
6 files changed, 82 insertions(+), 41 deletions(-)
|
||||
|
||||
diff --git a/ziomon/stats.h b/ziomon/stats.h
|
||||
index 1003f91..a28d436 100644
|
||||
--- a/ziomon/stats.h
|
||||
+++ b/ziomon/stats.h
|
||||
@@ -108,7 +108,7 @@ static inline int histlog2_index(__u64 val, struct histlog2 *h)
|
||||
{
|
||||
int i;
|
||||
|
||||
- for (i = 0; i < (h->num - 1) && val > histlog2_upper_limit(i, h); i++);
|
||||
+ for (i = 0; i < h->num && val > histlog2_upper_limit(i, h); i++);
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -123,15 +123,16 @@ static inline void histlog2_merge(struct histlog2 *h, __u32 *dst, const __u32 *s
|
||||
{
|
||||
int i;
|
||||
|
||||
- for (i = 0; i < h->num - 1; i++)
|
||||
+ for (i = 0; i < h->num; i++) {
|
||||
dst[i] += src[i];
|
||||
+ }
|
||||
}
|
||||
|
||||
static inline void histlog2_swap(__u32 a[], struct histlog2 *h)
|
||||
{
|
||||
int i;
|
||||
|
||||
- for (i = 0; i < h->num - 1; i++)
|
||||
+ for (i = 0; i < h->num; i++)
|
||||
swap_32(a[i]);
|
||||
}
|
||||
|
||||
@@ -141,7 +142,7 @@ static inline void histlog2_print(const char *s, const __u32 a[],
|
||||
int i;
|
||||
|
||||
printf("%s:\n", s);
|
||||
- for (i = 0; i < h->num - 1; i++) {
|
||||
+ for (i = 0; i < h->num; i++) {
|
||||
printf(" %10ld:%6d",
|
||||
(unsigned long)(histlog2_upper_limit(i, h)), a[i]);
|
||||
if (!((i + 1) % 4))
|
||||
diff --git a/ziomon/ziomon b/ziomon/ziomon
|
||||
index 30c8adf..aa1cf78 100755
|
||||
--- a/ziomon/ziomon
|
||||
+++ b/ziomon/ziomon
|
||||
@@ -411,14 +411,14 @@ function check_for_multipath_devices() {
|
||||
devices_basenames[$j]="";
|
||||
clean_devices;
|
||||
(( i+=3 ));
|
||||
- while [ "${mp_arr[$i]:0:1}" == "_" ]; do
|
||||
+ while [[ ! "${mp_arr[$i]:0:1}" =~ "[0-9a-zA-Z]" ]] && [ $i -lt ${#mp_arr[@]} ]; do
|
||||
checked_devs[${#checked_devs[@]}]=`echo ${mp_arr[$i]} | awk '{print "/dev/"$3}'`;
|
||||
ddebug " add ${checked_devs[${#checked_devs[@]}-1]}";
|
||||
- line=${mp_arr[$i]#_*};
|
||||
+ line=${mp_arr[$i]#* };
|
||||
line=${line%%:*};
|
||||
line=`echo $line | sed 's/ //g'`;
|
||||
WRP_HOST_ADAPTERS[${#WRP_HOST_ADAPTERS[@]}]="host$line";
|
||||
- WRP_LUNS[${#WRP_LUNS[@]}]=`echo ${mp_arr[$i]#_*} | awk '{print $1}'`;
|
||||
+ WRP_LUNS[${#WRP_LUNS[@]}]=`echo ${mp_arr[$i]#* } | awk '{print $1}'`;
|
||||
(( i++ ));
|
||||
done;
|
||||
(( --i ));
|
||||
@@ -599,6 +599,7 @@ function check_size_requirements() {
|
||||
local estimated_size;
|
||||
local free_space;
|
||||
local logpath=`dirname $WRP_LOGFILE`;
|
||||
+ local num_uniq_devs;
|
||||
|
||||
set `ziomon_mgr -e`;
|
||||
util_base_sz=$1;
|
||||
@@ -610,10 +611,12 @@ function check_size_requirements() {
|
||||
|
||||
# NOTE: Since blktrace and ziomon_zfcpdd write messages only when there is
|
||||
# traffic, the estimate is an upper boundary only
|
||||
+ num_uniq_devs=`echo ${WRP_LUNS[@]} | sed 's/ /\n/g' | cut -d : -f 4 | sort | uniq | wc -l`;
|
||||
+ debug "number of unique devices: $num_uniq_devs";
|
||||
debug "disk space requirements:";
|
||||
(( size_per_record = $util_base_sz + ${#WRP_HOST_ADAPTERS[@]} * $util_variable_sz + $ioerr_base_sz
|
||||
- + ${#WRP_DEVICES[@]} * ( $ioerr_variable_sz + $blkiotrace_sz + $zfcpiotrace_sz )
|
||||
- + ( 2 + ${#WRP_DEVICES[@]}) * 8 ));
|
||||
+ + $num_uniq_devs * ( $ioerr_variable_sz + $blkiotrace_sz + $zfcpiotrace_sz )
|
||||
+ + ( 2 + $num_uniq_devs) * 8 ));
|
||||
debug " size per interval: $size_per_record Bytes";
|
||||
(( total_num_records = $WRP_DURATION / $WRP_INTERVAL ));
|
||||
debug " total number of intervals: $total_num_records";
|
||||
diff --git a/ziomon/ziorep_config b/ziomon/ziorep_config
|
||||
index 21094bf..de60379 100755
|
||||
--- a/ziomon/ziorep_config
|
||||
+++ b/ziomon/ziorep_config
|
||||
@@ -84,9 +84,10 @@ sub get_sub_ch_data
|
||||
$c_src = catdir($base_dir, S_DIR2, $sub_ch, $adapter);
|
||||
$sub_ch{$adapter}{lic} = get_line("lic_version");
|
||||
$sub_ch{$adapter}{gen} = get_line("card_version");
|
||||
+ $sub_ch{$adapter}{state} = get_line("online") == 1 ? "Online" :
|
||||
+ "Offline";
|
||||
$c_src = catdir($base_dir, S_DIR2, $sub_ch);
|
||||
$sub_ch{$adapter}{chpid} = substr(get_line("chpids"), 0, 2);
|
||||
- $sub_ch{$adapter}{state} = get_line("port_state");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +221,7 @@ sub adapter_report
|
||||
my @adapters = @_;
|
||||
|
||||
foreach my $a (sort keys %sub_ch) {
|
||||
- next if (@adapters && "@adapters" !~ /$a/);
|
||||
+ next if (@adapters && "@adapters" !~ /\b$a\b/);
|
||||
my @out_str;
|
||||
push @out_str, "Host: $sub_ch{$a}{host}\n";
|
||||
push @out_str, "CHPID: $sub_ch{$a}{chpid}\n";
|
||||
@@ -252,11 +253,11 @@ sub device_report
|
||||
"===============================================\n";
|
||||
}
|
||||
foreach my $hctl (sort keys %devices) {
|
||||
- next if (@$adapters && "@$adapters" !~ /$devices{$hctl}{hba_id}/);
|
||||
- next if (@$ports && "@$ports" !~ /$devices{$hctl}{wwpn}/);
|
||||
- next if (@$luns && "@$luns" !~ /$devices{$hctl}{lun}/);
|
||||
- next if (@$s_devs && "@$s_devs" !~ /$devices{$hctl}{dev}/);
|
||||
- next if (@$hosts && "@$hosts" !~ /$sub_ch{$devices{$hctl}{hba_id}}{host}/);
|
||||
+ next if (@$adapters && "@$adapters" !~ /\b$devices{$hctl}{hba_id}\b/);
|
||||
+ next if (@$ports && "@$ports" !~ /\b$devices{$hctl}{wwpn}\b/);
|
||||
+ next if (@$luns && "@$luns" !~ /\b$devices{$hctl}{lun}\b/);
|
||||
+ next if (@$s_devs && "@$s_devs" !~ /\b$devices{$hctl}{dev}\b/);
|
||||
+ next if (@$hosts && "@$hosts" !~ /\b$sub_ch{$devices{$hctl}{hba_id}}{host}\b/);
|
||||
my @out_str;
|
||||
push @out_str, $devices{$hctl}{hba_id};
|
||||
push @out_str, $devices{$hctl}{wwpn};
|
||||
@@ -293,10 +294,10 @@ sub mapper_report
|
||||
}
|
||||
foreach my $hctl (sort keys %devices) {
|
||||
next if (! $devices{$hctl}{mp_dev_mm});
|
||||
- next if (@$adapters && "@$adapters" !~ /$devices{$hctl}{hba_id}/);
|
||||
- next if (@$ports && "@$ports" !~ /$devices{$hctl}{wwpn}/);
|
||||
- next if (@$s_devs && "@$s_devs" !~ /$devices{$hctl}{dev}/);
|
||||
- next if (@$m_devs && "@$m_devs" !~ /$mapper_dev{$devices{$hctl}{mp_dev_mm}}/);
|
||||
+ next if (@$adapters && "@$adapters" !~ /\b$devices{$hctl}{hba_id}\b/);
|
||||
+ next if (@$ports && "@$ports" !~ /\b$devices{$hctl}{wwpn}\b/);
|
||||
+ next if (@$s_devs && "@$s_devs" !~ /\b$devices{$hctl}{dev}\b/);
|
||||
+ next if (@$m_devs && "@$m_devs" !~ /\b$mapper_dev{$devices{$hctl}{mp_dev_mm}}\b/);
|
||||
my @line_str;
|
||||
push @line_str, $devices{$hctl}{hba_id};
|
||||
push @line_str, $devices{$hctl}{wwpn};
|
||||
diff --git a/ziomon/ziorep_traffic.cpp b/ziomon/ziorep_traffic.cpp
|
||||
index 40cbf47..1461e55 100644
|
||||
--- a/ziomon/ziorep_traffic.cpp
|
||||
+++ b/ziomon/ziorep_traffic.cpp
|
||||
@@ -121,6 +121,7 @@ static int parse_params(int argc, char **argv, struct options *opts)
|
||||
__u32 tmp32;
|
||||
long long unsigned int tmp64;
|
||||
long tmpl;
|
||||
+ char mychar;
|
||||
static struct option long_options[] = {
|
||||
{ "version", no_argument, NULL, 'v'},
|
||||
{ "help", no_argument, NULL, 'h'},
|
||||
@@ -188,18 +189,22 @@ static int parse_params(int argc, char **argv, struct options *opts)
|
||||
opts->print_summary = true;
|
||||
break;
|
||||
case 'c':
|
||||
- rc = sscanf(optarg, "%x", &tmp32);
|
||||
- if (rc != 1) {
|
||||
- fprintf(stdout, "%s: Could"
|
||||
+ rc = sscanf(optarg, "%x%c", &tmp32, &mychar);
|
||||
+ if (rc < 1) {
|
||||
+ fprintf(stderr, "%s: Could"
|
||||
" not read chpid %s\n", toolname, optarg);
|
||||
return -1;
|
||||
}
|
||||
+ if (rc > 1) {
|
||||
+ fprintf(stderr, "%s: %s is not a valid chpid\n", toolname, optarg);
|
||||
+ return -1;
|
||||
+ }
|
||||
opts->chpids.push_back(tmp32);
|
||||
break;
|
||||
case 'p':
|
||||
rc = sscanf(optarg, "0x%Lx", &tmp64);
|
||||
if (rc != 1) {
|
||||
- fprintf(stdout, "%s: Could"
|
||||
+ fprintf(stderr, "%s: Could"
|
||||
" not read port number %s\n", toolname, optarg);
|
||||
return -1;
|
||||
}
|
||||
@@ -208,7 +213,7 @@ static int parse_params(int argc, char **argv, struct options *opts)
|
||||
case 'l':
|
||||
rc = sscanf(optarg, "0x%Lx", &tmp64);
|
||||
if (rc != 1) {
|
||||
- fprintf(stdout, "%s: Could"
|
||||
+ fprintf(stderr, "%s: Could"
|
||||
" not read lun %s\n", toolname, optarg);
|
||||
return -1;
|
||||
}
|
||||
@@ -217,11 +222,11 @@ static int parse_params(int argc, char **argv, struct options *opts)
|
||||
case 'u':
|
||||
rc = sscanf(optarg, "0.0.%x", &tmp32);
|
||||
if (rc != 1) {
|
||||
- fprintf(stdout, "%s: Could not read bus-ID"
|
||||
+ fprintf(stderr, "%s: Could not read bus-ID"
|
||||
" %s\n", toolname, optarg);
|
||||
return -1;
|
||||
}
|
||||
- opts->wwpns.push_back(tmp32);
|
||||
+ opts->devnos.push_back(tmp32);
|
||||
break;
|
||||
case 'd':
|
||||
opts->devices.push_back(optarg);
|
||||
@@ -313,7 +318,7 @@ static int check_opts(struct options *opts, ConfigReader **cfg)
|
||||
for (list<__u32>::const_iterator i = opts->chpids.begin();
|
||||
i != opts->chpids.end(); ++i) {
|
||||
if (!(*cfg)->verify_chpid(*i)) {
|
||||
- fprintf(stdout, "Error: Could not find chpid 0.0.%04x in"
|
||||
+ fprintf(stderr, "Error: Could not find chpid %x in"
|
||||
" configuration.\n", *i);
|
||||
rc = -2;
|
||||
}
|
||||
@@ -321,7 +326,7 @@ static int check_opts(struct options *opts, ConfigReader **cfg)
|
||||
for (list<__u32>::const_iterator i = opts->devnos.begin();
|
||||
i != opts->devnos.end(); ++i) {
|
||||
if (!(*cfg)->verify_devno(*i)) {
|
||||
- fprintf(stdout, "Error: Could not find bus-ID 0.0.%04x in"
|
||||
+ fprintf(stderr, "Error: Could not find bus-ID 0.0.%04x in"
|
||||
" configuration.\n", *i);
|
||||
rc = -3;
|
||||
}
|
||||
@@ -329,7 +334,7 @@ static int check_opts(struct options *opts, ConfigReader **cfg)
|
||||
for (list<__u64>::const_iterator i = opts->wwpns.begin();
|
||||
i != opts->wwpns.end(); ++i) {
|
||||
if (!(*cfg)->verify_wwpn(*i)) {
|
||||
- fprintf(stdout, "Error: Could not find WWPN %016Lx in"
|
||||
+ fprintf(stderr, "Error: Could not find WWPN %016Lx in"
|
||||
" configuration.\n", (long long unsigned int)*i);
|
||||
rc = -4;
|
||||
}
|
||||
@@ -337,7 +342,7 @@ static int check_opts(struct options *opts, ConfigReader **cfg)
|
||||
for (list<__u64>::const_iterator i = opts->luns.begin();
|
||||
i != opts->luns.end(); ++i) {
|
||||
if (!(*cfg)->verify_lun(*i)) {
|
||||
- fprintf(stdout, "Error: Could not find LUN %016Lx in"
|
||||
+ fprintf(stderr, "Error: Could not find LUN %016Lx in"
|
||||
" configuration.\n", (long long unsigned int)*i);
|
||||
rc = -5;
|
||||
}
|
||||
@@ -345,7 +350,7 @@ static int check_opts(struct options *opts, ConfigReader **cfg)
|
||||
for (list<const char*>::iterator i = opts->devices.begin();
|
||||
i != opts->devices.end(); ++i) {
|
||||
if (!(*cfg)->verify_device(*i)) {
|
||||
- fprintf(stdout, "Error: Could not find device %s in"
|
||||
+ fprintf(stderr, "Error: Could not find device %s in"
|
||||
" configuration.\n", *i);
|
||||
rc = -6;
|
||||
}
|
||||
@@ -353,7 +358,7 @@ static int check_opts(struct options *opts, ConfigReader **cfg)
|
||||
for (list<const char*>::iterator i = opts->mp_devices.begin();
|
||||
i != opts->mp_devices.end(); ++i) {
|
||||
if (!(*cfg)->verify_mp_device(*i)) {
|
||||
- fprintf(stdout, "Error: Could not find multipath"
|
||||
+ fprintf(stderr, "Error: Could not find multipath"
|
||||
" device %s in configuration.\n", *i);
|
||||
rc = -7;
|
||||
}
|
||||
diff --git a/ziomon/ziorep_utilization.cpp b/ziomon/ziorep_utilization.cpp
|
||||
index a036a03..3f57a47 100644
|
||||
--- a/ziomon/ziorep_utilization.cpp
|
||||
+++ b/ziomon/ziorep_utilization.cpp
|
||||
@@ -167,7 +167,7 @@ static int parse_params(int argc, char **argv, struct options *opts)
|
||||
case 'c':
|
||||
rc = sscanf(optarg, "%x", &tmp);
|
||||
if (rc != 1) {
|
||||
- fprintf(stdout, "Error: Could not read chpid"
|
||||
+ fprintf(stderr, "Error: Could not read chpid"
|
||||
" %s\n", optarg);
|
||||
return -1;
|
||||
}
|
||||
@@ -237,7 +237,7 @@ static int check_opts(struct options *opts, ConfigReader **cfg)
|
||||
for (list<__u32>::const_iterator i = opts->chpids.begin();
|
||||
i != opts->chpids.end(); ++i) {
|
||||
if (!(*cfg)->verify_chpid(*i)) {
|
||||
- fprintf(stdout, "Error: Could not find chpid %x in"
|
||||
+ fprintf(stderr, "Error: Could not find chpid %x in"
|
||||
" configuration.\n", *i);
|
||||
rc = -2;
|
||||
}
|
||||
diff --git a/ziomon/ziorep_utils.cpp b/ziomon/ziorep_utils.cpp
|
||||
index 75a9578..715115e 100644
|
||||
--- a/ziomon/ziorep_utils.cpp
|
||||
+++ b/ziomon/ziorep_utils.cpp
|
||||
@@ -303,8 +303,17 @@ int adjust_timeframe(const char *filename, __u64 *begin, __u64 *end,
|
||||
verbose_msg("using original interval length: %lus\n",
|
||||
(long unsigned int)*interval);
|
||||
}
|
||||
- // now check if the interval is correct
|
||||
- if (*interval != UINT32_MAX && *interval % f_hdr.interval_length) {
|
||||
+ /* the exact frame boundaries don't include the length of the very
|
||||
+ first interval, so we have to add one more to our calculations */
|
||||
+ if (*interval && (*end - *begin + f_hdr.interval_length) % *interval != 0) {
|
||||
+ // cut off rest in case of user-set interval
|
||||
+ *end -= (*end - *begin) % *interval + f_hdr.interval_length;
|
||||
+ t = *end;
|
||||
+ verbose_msg(" cut off at : %s", ctime(&t));
|
||||
+ }
|
||||
+
|
||||
+ // check if the interval is correct
|
||||
+ if (*interval % f_hdr.interval_length) {
|
||||
fprintf(stderr, "%s: Data aggregation interval %lu"
|
||||
" is incompatible with source data. Please use"
|
||||
" a multiple of %lu and try again.\n", toolname,
|
||||
@@ -392,7 +401,7 @@ int print_summary_report(FILE *fp, char *filename, ConfigReader &cfg)
|
||||
rc += fprintf(fp, "Aggregated range: ");
|
||||
if (a_hdr) {
|
||||
rc += fprintf(fp, "%s to ",
|
||||
- print_time_formatted(a_hdr->begin_time));
|
||||
+ print_time_formatted(a_hdr->begin_time - f_hdr.interval_length));
|
||||
rc += fprintf(fp, "%s\n",
|
||||
print_time_formatted(a_hdr->end_time));
|
||||
}
|
||||
@@ -404,7 +413,7 @@ int print_summary_report(FILE *fp, char *filename, ConfigReader &cfg)
|
||||
a_hdr = NULL;
|
||||
|
||||
rc += fprintf(fp, "Detailed range: %s to ",
|
||||
- print_time_formatted(f_hdr.begin_time));
|
||||
+ print_time_formatted(f_hdr.begin_time - f_hdr.interval_length));
|
||||
rc += fprintf(fp, "%s\n", print_time_formatted(f_hdr.end_time));
|
||||
rc += fprintf(fp, "Interval length: %d seconds\n",
|
||||
f_hdr.interval_length);
|
||||
@@ -446,16 +455,32 @@ int print_summary_report(FILE *fp, char *filename, ConfigReader &cfg)
|
||||
return rc;
|
||||
}
|
||||
|
||||
+/* Calculates seconds since 1970 _without_ caring for daylight
|
||||
+ savings time (comtrary to mktime() et al).
|
||||
+ It does not care for leap years and the like, which is OK,
|
||||
+ since we use it in a very narrow scenario: To calculate any
|
||||
+ daylight savings time related shifts.
|
||||
+ Hence: Dont't use if you're not sure what you are doing... */
|
||||
+static __u64 secs_since_1970(const struct tm *t) {
|
||||
+ __u64 res = 0;
|
||||
+ res += t->tm_sec;
|
||||
+ res += 60 * t->tm_min;
|
||||
+ res += 3600 * t->tm_hour;
|
||||
+ res += 86400 * t->tm_yday;
|
||||
+ res += 86400 * 365 * t->tm_year;
|
||||
+
|
||||
+ return res;
|
||||
+}
|
||||
+
|
||||
|
||||
int get_datetime_val(const char *str, __u64 *tgt)
|
||||
{
|
||||
- struct tm t;
|
||||
+ struct tm t, t_old;
|
||||
char *ret;
|
||||
|
||||
// strptime only sets
|
||||
memset(&t, 0, sizeof(struct tm));
|
||||
ret = strptime(str, "%Y-%m-%d %H:%M", &t);
|
||||
-
|
||||
if (ret == NULL || *ret != '\0') {
|
||||
ret = strptime(str, "%Y-%m-%d %H:%M:%S", &t);
|
||||
if (ret == NULL || *ret != '\0') {
|
||||
@@ -465,7 +490,13 @@ int get_datetime_val(const char *str, __u64 *tgt)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
+ t_old = t;
|
||||
*tgt = mktime(&t);
|
||||
+ // if daylight savings time applies, 't' has been adjusted,
|
||||
+ // so we have to correct
|
||||
+ if (t_old.tm_hour != t.tm_hour)
|
||||
+ *tgt -= secs_since_1970(&t) - secs_since_1970(&t_old);
|
||||
+ verbose_msg("datetime value from user after translation: %s", ctime((const time_t *)tgt));
|
||||
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 10886e2ec85474a8b4646b725a240d388dcdccee Mon Sep 17 00:00:00 2001
|
||||
From 1697d4f40be133c78cd09fb0af14af22e8c6219e Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Sun, 4 Oct 2009 17:46:16 +0200
|
||||
Subject: [PATCH 23/25] change default load address for ramdisk
|
||||
Subject: [PATCH 9/9] change default load address for ramdisk
|
||||
|
||||
The default load address for the initial ramdisk is changed from
|
||||
0x800000 to 0x2000000 to allow larger kernels to be loaded.
|
@ -1,27 +0,0 @@
|
||||
From d2f00bb021508f8104a1d8164432e8f4d239d872 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 23 Apr 2009 11:47:29 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-cflags
|
||||
|
||||
---
|
||||
common.mak | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/common.mak b/common.mak
|
||||
index d57b854..f0252da 100644
|
||||
--- a/common.mak
|
||||
+++ b/common.mak
|
||||
@@ -25,8 +25,8 @@ STRIP = $(CROSS_COMPILE)strip
|
||||
OBJCOPY = $(CROSS_COMPILE)objcopy
|
||||
OBJDUMP = $(CROSS_COMPILE)objdump
|
||||
INSTALL = install # FIXME: We need s390-install (strip)
|
||||
-CFLAGS = $(OPT_FLAGS) -Wall -O3 -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE)
|
||||
-CXXFLAGS = $(OPT_FLAGS) -Wall -O3 -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE)
|
||||
+CFLAGS = -Wall -O3 -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE) $(OPT_FLAGS)
|
||||
+CXXFLAGS = -Wall -O3 -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE) $(OPT_FLAGS)
|
||||
export AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP INSTALL CFLAGS
|
||||
|
||||
# Support alternate install root
|
||||
--
|
||||
1.6.0.6
|
||||
|
189
0010-improve-mon_statd-init-script.patch
Normal file
189
0010-improve-mon_statd-init-script.patch
Normal file
@ -0,0 +1,189 @@
|
||||
From 7cd1f2254e27cae8e061d1b42fa6c78bc10a5f39 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Thu, 8 Oct 2009 10:29:23 +0200
|
||||
Subject: [PATCH] improve mon_statd init script
|
||||
|
||||
- stop: do not print error messages if a daemon is not configured
|
||||
- start: do not load module if no daemon is configured
|
||||
- remove useless newlines
|
||||
---
|
||||
etc/init.d/mon_statd | 113 ++++++++++++++++++++++++++++----------------------
|
||||
1 files changed, 64 insertions(+), 49 deletions(-)
|
||||
|
||||
diff --git a/etc/init.d/mon_statd b/etc/init.d/mon_statd
|
||||
index 4d84b5b..60bcf00 100755
|
||||
--- a/etc/init.d/mon_statd
|
||||
+++ b/etc/init.d/mon_statd
|
||||
@@ -22,7 +22,6 @@ PROCD_PATH=/usr/sbin/$PROCD
|
||||
CONFIG_FILE=/etc/sysconfig/$DAEMON
|
||||
FSSTATD_PID_FILE=/var/run/$FSSTATD.pid
|
||||
PROCD_PID_FILE=/var/run/$PROCD.pid
|
||||
-RETVAL=0
|
||||
|
||||
# source function library
|
||||
. /lib/lsb/init-functions
|
||||
@@ -32,68 +31,81 @@ if [ -f $CONFIG_FILE ]; then
|
||||
. $CONFIG_FILE
|
||||
fi
|
||||
|
||||
-start()
|
||||
+load_kernel_module()
|
||||
{
|
||||
if [ ! -e /dev/monwriter ]; then
|
||||
echo "Loading monwriter module..."
|
||||
modprobe monwriter 2>&1
|
||||
- if [ "$?" -ne 0 ]; then
|
||||
+ if [ $? -ne 0 ]; then
|
||||
+ exit 1
|
||||
+ fi
|
||||
+ udevsettle
|
||||
+ if [ $? -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
- while [ ! -e /dev/monwriter ]; do
|
||||
- sleep 0
|
||||
- done
|
||||
fi
|
||||
+}
|
||||
|
||||
- if [ ! -f $FSSTATD_PID_FILE -a "$FSSTAT" = "yes" ]; then
|
||||
- echo -n $"Starting $FSSTATD:"
|
||||
- $FSSTATD_PATH -i $FSSTAT_INTERVAL
|
||||
- if [ $? == 0 ]; then
|
||||
+start_daemon()
|
||||
+{
|
||||
+ local daemon_name=$1
|
||||
+ local daemon_interval=$2
|
||||
+ local daemon_pid_file=$3
|
||||
+ local daemon_path=$4
|
||||
+
|
||||
+ if [ ! -f $daemon_pid_file ]; then
|
||||
+ load_kernel_module
|
||||
+ echo -n "Starting $daemon_name:"
|
||||
+ $daemon_path -i $daemon_interval
|
||||
+ if [ $? -eq 0 ]; then
|
||||
touch /var/lock/subsys/mon_statd
|
||||
log_success_msg
|
||||
else
|
||||
log_failure_msg
|
||||
fi
|
||||
- elif [ "$FSSTAT" = "yes" ]; then
|
||||
- echo "$FSSTATD (pid $(cat $FSSTATD_PID_FILE)) is already running..."
|
||||
+ else
|
||||
+ echo "$daemon_name (pid $(cat $daemon_pid_file)) is already running..."
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+start()
|
||||
+{
|
||||
+ if [ "$FSSTAT" = "yes" ]; then
|
||||
+ start_daemon $FSSTATD $FSSTAT_INTERVAL $FSSTATD_PID_FILE \
|
||||
+ $FSSTATD_PATH
|
||||
fi
|
||||
|
||||
- if [ ! -f $PROCD_PID_FILE -a "$PROC" = "yes" ]; then
|
||||
- echo -n $"Starting $PROCD:"
|
||||
- $PROCD_PATH -i $PROC_INTERVAL
|
||||
- if [ $? == 0 ]; then
|
||||
- touch /var/lock/subsys/mon_statd
|
||||
- log_success_msg
|
||||
- else
|
||||
- log_failure_msg
|
||||
- fi
|
||||
- elif [ "$PROC" = "yes" ]; then
|
||||
- echo "$PROCD (pid $(cat $PROCD_PID_FILE)) is already running..."
|
||||
+ if [ "$PROC" = "yes" ]; then
|
||||
+ start_daemon $PROCD $PROC_INTERVAL $PROCD_PID_FILE \
|
||||
+ $PROCD_PATH
|
||||
fi
|
||||
- echo
|
||||
}
|
||||
|
||||
-stop()
|
||||
+stop_daemon()
|
||||
{
|
||||
- echo -n $"Stopping $FSSTATD:"
|
||||
- if [ -f $FSSTATD_PID_FILE ]; then
|
||||
- killproc $FSSTATD_PATH -TERM
|
||||
+ local daemon_name=$1
|
||||
+ local daemon_pid_file=$2
|
||||
+ local daemon_path=$3
|
||||
+
|
||||
+ echo -n "Stopping $daemon_name:"
|
||||
+ if [ -f $daemon_pid_file ]; then
|
||||
+ killproc $daemon_path -TERM
|
||||
log_success_msg
|
||||
- rm -f $FSSTATD_PID_FILE
|
||||
+ rm -f $daemon_pid_file
|
||||
else
|
||||
log_failure_msg
|
||||
fi
|
||||
+}
|
||||
|
||||
- echo -n $"Stopping $PROCD:"
|
||||
- if [ -f $PROCD_PID_FILE ]; then
|
||||
- killproc $PROCD_PATH -TERM
|
||||
- log_success_msg
|
||||
- rm -f $PROCD_PID_FILE
|
||||
- else
|
||||
- log_failure_msg
|
||||
+stop()
|
||||
+{
|
||||
+ if [ "$FSSTAT" = "yes" ]; then
|
||||
+ stop_daemon $FSSTATD $FSSTATD_PID_FILE $FSSTATD_PATH
|
||||
+ fi
|
||||
+ if [ "$PROC" = "yes" ]; then
|
||||
+ stop_daemon $PROCD $PROCD_PID_FILE $PROCD_PATH
|
||||
fi
|
||||
rm -f /var/lock/subsys/mon_statd
|
||||
- echo
|
||||
}
|
||||
|
||||
restart() {
|
||||
@@ -101,20 +113,23 @@ restart() {
|
||||
start
|
||||
}
|
||||
|
||||
-status()
|
||||
+status_daemon()
|
||||
{
|
||||
- if [ ! -f $FSSTATD_PID_FILE ]; then
|
||||
- echo "$FSSTATD is not running."
|
||||
- else
|
||||
- echo "$FSSTATD (pid $(cat $FSSTATD_PID_FILE), interval: $FSSTAT_INTERVAL) is running."
|
||||
- fi
|
||||
+ local daemon_name=$1
|
||||
+ local daemon_pid_file=$2
|
||||
+ local daemon_interval=$3
|
||||
|
||||
- if [ ! -f $PROCD_PID_FILE ]; then
|
||||
- echo "$PROCD is not running."
|
||||
+ if [ ! -f $daemon_pid_file ]; then
|
||||
+ echo "$daemon_name is not running."
|
||||
else
|
||||
- echo "$PROCD (pid $(cat $PROCD_PID_FILE), interval: $PROC_INTERVAL) is running."
|
||||
+ echo "$daemon_name (pid $(cat $daemon_pid_file), interval: $daemon_interval) is running."
|
||||
fi
|
||||
- echo
|
||||
+}
|
||||
+
|
||||
+status()
|
||||
+{
|
||||
+ status_daemon $FSSTATD $FSSTATD_PID_FILE $FSSTAT_INTERVAL
|
||||
+ status_daemon $PROCD $PROCD_PID_FILE $PROC_INTERVAL
|
||||
}
|
||||
|
||||
# How are we called?
|
||||
@@ -133,7 +148,7 @@ case "$1" in
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $DAEMON {start|stop|status|restart|reload}"
|
||||
- RETVAL=1
|
||||
+ exit 1
|
||||
esac
|
||||
|
||||
-exit $RETVAL
|
||||
+exit 0
|
||||
--
|
||||
1.6.3.3
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 77f053260b9d2b4d683edfbed50a528d74620d4b Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Fri, 24 Apr 2009 14:05:29 +0200
|
||||
Subject: [PATCH] remove the executable stack flag
|
||||
|
||||
---
|
||||
zipl/src/Makefile | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/zipl/src/Makefile b/zipl/src/Makefile
|
||||
index 16d5276..07b3b74 100644
|
||||
--- a/zipl/src/Makefile
|
||||
+++ b/zipl/src/Makefile
|
||||
@@ -12,7 +12,7 @@ includes = $(wildcard ../include/*.h)
|
||||
all: zipl
|
||||
|
||||
zipl: $(objects)
|
||||
- $(CC) $(objects) ../boot/data.o -o zipl
|
||||
+ $(CC) -Wl,-z,noexecstack $(objects) ../boot/data.o -o zipl
|
||||
|
||||
%.o: %.c $(includes) Makefile
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,197 +0,0 @@
|
||||
From 1833f9dae371a48e3f52891262ad2d5fd75fc205 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Fri, 5 Jun 2009 14:12:52 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-ziomon-fixes
|
||||
|
||||
---
|
||||
ziomon/stats.h | 2 +-
|
||||
ziomon/ziomon | 84 ++++++++++++++++++++++++++++++++++++++++++++-----
|
||||
ziomon/ziomon_util.c | 2 +-
|
||||
3 files changed, 77 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/ziomon/stats.h b/ziomon/stats.h
|
||||
index a28d436..0920b27 100644
|
||||
--- a/ziomon/stats.h
|
||||
+++ b/ziomon/stats.h
|
||||
@@ -142,7 +142,7 @@ static inline void histlog2_print(const char *s, const __u32 a[],
|
||||
int i;
|
||||
|
||||
printf("%s:\n", s);
|
||||
- for (i = 0; i < h->num; i++) {
|
||||
+ for (i = 0; i < h->num - 1; i++) {
|
||||
printf(" %10ld:%6d",
|
||||
(unsigned long)(histlog2_upper_limit(i, h)), a[i]);
|
||||
if (!((i + 1) % 4))
|
||||
diff --git a/ziomon/ziomon b/ziomon/ziomon
|
||||
index aa1cf78..fe4d8ec 100755
|
||||
--- a/ziomon/ziomon
|
||||
+++ b/ziomon/ziomon
|
||||
@@ -32,7 +32,7 @@ WRP_DEVICES=();
|
||||
WRP_LUNS=();
|
||||
WRP_LOGFILE="";
|
||||
# limit of actual data in percent that need space on disk
|
||||
-WRP_SIZE_THRESHOLD="25";
|
||||
+WRP_SIZE_THRESHOLD="10";
|
||||
WRP_FORCE=0;
|
||||
|
||||
function debug() {
|
||||
@@ -234,6 +234,7 @@ function start_trace() {
|
||||
local hosts_param;
|
||||
local luns_param;
|
||||
local i;
|
||||
+ local len;
|
||||
|
||||
if [ $WRP_DEBUG -ne 0 ]; then
|
||||
verbose="-V";
|
||||
@@ -276,7 +277,7 @@ function start_trace() {
|
||||
blkiomon_command="blkiomon --interval=$WRP_INTERVAL -Q $WRP_MSG_Q_PATH -q $WRP_MSG_Q_ID -m $WRP_MSG_Q_BLKIOMON_ID $verbose_blk -d -";
|
||||
zfcpdd_command="ziomon_zfcpdd -Q $WRP_MSG_Q_PATH -q $WRP_MSG_Q_ID -m $WRP_MSG_Q_ZIOMON_ZFCPDD_ID -i $WRP_INTERVAL";
|
||||
debug "starting blktrace: $blktrace_command | $blkiomon_command | $zfcpdd_command";
|
||||
- $blktrace_command | $blkiomon_command | $zfcpdd_command > $WRP_MSG_Q_PATH/blktrace.log &
|
||||
+ $blktrace_command 2>$WRP_MSG_Q_PATH/blktrace.err | $blkiomon_command | $zfcpdd_command > $WRP_MSG_Q_PATH/blktrace.log &
|
||||
i=0;
|
||||
# might take a moment to start all processes in the pipe if system under load
|
||||
while [ $i -lt 60 ]; do
|
||||
@@ -303,7 +304,17 @@ function start_trace() {
|
||||
echo "done";
|
||||
echo -n "Collecting data...";
|
||||
|
||||
- sleep $WRP_DURATION;
|
||||
+ # pay extra attention to blktrace
|
||||
+ for (( i=0; i<$WRP_DURATION; ++i )); do
|
||||
+ len=`cat $WRP_MSG_Q_PATH/blktrace.err | wc -l`;
|
||||
+ if [ $len -ne 0 ]; then
|
||||
+ cat $WRP_MSG_Q_PATH/blktrace.err;
|
||||
+ echo "Error: blktrace has errors, aborting";
|
||||
+ return;
|
||||
+ fi
|
||||
+ sleep 1;
|
||||
+ done
|
||||
+
|
||||
echo "done";
|
||||
}
|
||||
|
||||
@@ -358,6 +369,58 @@ function emergency_shutdown() {
|
||||
}
|
||||
|
||||
|
||||
+function check_cpuplugd {
|
||||
+ # check if cpuplugd is running
|
||||
+ # If so, the whole per-cpu mechanism of blktrace gets corrupted, which
|
||||
+ # results in the infamous 'bad trace magic' message
|
||||
+ if [ -e /var/run/cpuplugd.pid ]; then
|
||||
+ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
|
||||
+ echo "ziomon: Warning: cpuplugd is running which can corrupt the traces.";
|
||||
+ echo " It is recommended to stop cpuplugd for the duration of the";
|
||||
+ echo " trace using 'service cpuplugd stop'.";
|
||||
+ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+
|
||||
+# we need 2MB per device and CPU
|
||||
+function check_vmalloc_space() {
|
||||
+ local total;
|
||||
+ local used;
|
||||
+ local free;
|
||||
+ local num_cpus;
|
||||
+ local required;
|
||||
+ local result;
|
||||
+
|
||||
+ num_cpus=`cat /proc/cpuinfo | grep processors | awk '{print $4}'`;
|
||||
+ total=`cat /proc/meminfo | grep VmallocTotal | awk '{print $2}'`;
|
||||
+ used=`cat /proc/meminfo | grep VmallocUsed | awk '{print $2}'`;
|
||||
+
|
||||
+ (( free=$total-$used ));
|
||||
+ (( required=$num_cpus*${#WRP_DEVICES[@]}*2048 ));
|
||||
+ (( result=$free-$required ));
|
||||
+ debug "Required Vmalloc space: $required KBytes";
|
||||
+ if [ $result -lt 0 ]; then
|
||||
+ echo "$WRP_TOOLNAME: Not enough free Vmalloc space:";
|
||||
+ echo " Required: $required KBytes";
|
||||
+ echo " Free: $free KBytes";
|
||||
+ exit 1;
|
||||
+ fi
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+function check_blkiomon() {
|
||||
+ # check blkiomon version
|
||||
+ ver=`blkiomon -V | awk '{print $3}'`;
|
||||
+ if [ "$ver" != "0.2" ]; then
|
||||
+ echo "$WRP_TOOLNAME: Unsupported blkiomon version $ver detected, aborting";
|
||||
+ exit 1;
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+
|
||||
function setup() {
|
||||
while [ -e $WRP_MSG_Q_PATH ]; do
|
||||
WRP_MSG_Q_PATH="$WRP_MSG_Q_PATH$RANDOM";
|
||||
@@ -476,7 +539,7 @@ function determine_host_adapters() {
|
||||
local num_s_devs;
|
||||
local s_dev_ratio;
|
||||
|
||||
- echo -n "check devices...";
|
||||
+ echo -n "Check devices...";
|
||||
|
||||
# Estimate fraction of /dev/s* devices - if >50%, start with check for regular devices
|
||||
num_s_devs=`echo ${WRP_DEVICES[@]} | sed "s/ /\n/g" | grep /dev/s | wc -l`;
|
||||
@@ -599,7 +662,6 @@ function check_size_requirements() {
|
||||
local estimated_size;
|
||||
local free_space;
|
||||
local logpath=`dirname $WRP_LOGFILE`;
|
||||
- local num_uniq_devs;
|
||||
|
||||
set `ziomon_mgr -e`;
|
||||
util_base_sz=$1;
|
||||
@@ -611,12 +673,10 @@ function check_size_requirements() {
|
||||
|
||||
# NOTE: Since blktrace and ziomon_zfcpdd write messages only when there is
|
||||
# traffic, the estimate is an upper boundary only
|
||||
- num_uniq_devs=`echo ${WRP_LUNS[@]} | sed 's/ /\n/g' | cut -d : -f 4 | sort | uniq | wc -l`;
|
||||
- debug "number of unique devices: $num_uniq_devs";
|
||||
debug "disk space requirements:";
|
||||
(( size_per_record = $util_base_sz + ${#WRP_HOST_ADAPTERS[@]} * $util_variable_sz + $ioerr_base_sz
|
||||
- + $num_uniq_devs * ( $ioerr_variable_sz + $blkiotrace_sz + $zfcpiotrace_sz )
|
||||
- + ( 2 + $num_uniq_devs) * 8 ));
|
||||
+ + ${#WRP_DEVICES[@]} * ( $ioerr_variable_sz + $blkiotrace_sz + $zfcpiotrace_sz )
|
||||
+ + ( 2 + ${#WRP_DEVICES[@]}) * 8 ));
|
||||
debug " size per interval: $size_per_record Bytes";
|
||||
(( total_num_records = $WRP_DURATION / $WRP_INTERVAL ));
|
||||
debug " total number of intervals: $total_num_records";
|
||||
@@ -653,10 +713,16 @@ setup;
|
||||
|
||||
parse_params $@;
|
||||
|
||||
+check_cpuplugd;
|
||||
+
|
||||
+check_blkiomon;
|
||||
+
|
||||
check_for_existing_output;
|
||||
|
||||
determine_host_adapters;
|
||||
|
||||
+check_vmalloc_space;
|
||||
+
|
||||
check_size_requirements;
|
||||
|
||||
[ $? -eq 0 ] && start_trace;
|
||||
diff --git a/ziomon/ziomon_util.c b/ziomon/ziomon_util.c
|
||||
index e3e0762..043d3d1 100644
|
||||
--- a/ziomon/ziomon_util.c
|
||||
+++ b/ziomon/ziomon_util.c
|
||||
@@ -597,7 +597,7 @@ static int poll_ioerr_cnt(int init, struct ioerr_data *data,
|
||||
for (i=0; i<opts->num_luns; ++i) {
|
||||
/* read ioerr_cnt attribute */
|
||||
if (read_attribute(opts->luns[i], line, NULL)) {
|
||||
- fprintf(stderr, "%s: Warning: Could read %s\n",
|
||||
+ fprintf(stderr, "%s: Warning: Could not read %s\n",
|
||||
toolname, opts->luns[i]);
|
||||
grc++;
|
||||
continue;
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,54 +0,0 @@
|
||||
From 38dfbc2642350aba44df80b41c91ab78891ba818 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Tue, 16 Jun 2009 11:10:47 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-zipl-fix-unsupported-device
|
||||
|
||||
Description: zipl: zipl does not exit for an unsupported device driver.
|
||||
Symptom: zipl does not exit with an error when it is run against a
|
||||
target device which is provided by an unsupported device driver
|
||||
(e.g. device-mapper). The resulting IPL records might be
|
||||
incorrect and filesystem corruption may occur.
|
||||
Problem: The device driver name check does not cause an error when the
|
||||
device driver name is unknown and the device is not a
|
||||
partition.
|
||||
Solution: Change the device driver name check to write an error message
|
||||
and to exit when it finds an unknown device driver name.
|
||||
Problem-ID: 53660
|
||||
---
|
||||
zipl/src/disk.c | 20 ++------------------
|
||||
1 files changed, 2 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/zipl/src/disk.c b/zipl/src/disk.c
|
||||
index 3a48e44..f1b98a7 100644
|
||||
--- a/zipl/src/disk.c
|
||||
+++ b/zipl/src/disk.c
|
||||
@@ -190,24 +190,8 @@ disk_get_info(const char* device, struct disk_info** info)
|
||||
data->device = stats.st_rdev & ~SCSI_PARTN_MASK;
|
||||
} else {
|
||||
/* Driver name is unknown */
|
||||
- if (data->devno == -1) {
|
||||
- if (data->geo.start) {
|
||||
- /* Writing to the parent device of this
|
||||
- * partition may not be safe so stop here. */
|
||||
- error_reason("Unsupported device driver '%s'",
|
||||
- data->drv_name);
|
||||
- goto out_close;
|
||||
- }
|
||||
- /* Assume that the first block can be overwritten
|
||||
- * even if we don't now the exact device type. */
|
||||
- data->type = disk_type_scsi;
|
||||
- data->partnum = 0;
|
||||
- data->device = stats.st_rdev;
|
||||
- } else {
|
||||
- error_reason("Unsupported device driver '%s' "
|
||||
- "for disk type DASD", data->drv_name);
|
||||
- goto out_close;
|
||||
- }
|
||||
+ error_reason("Unsupported device driver '%s'", data->drv_name);
|
||||
+ goto out_close;
|
||||
}
|
||||
|
||||
/* Convert device size to size in physical blocks */
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,70 +0,0 @@
|
||||
From b76deacff693b951c2e5a01ed17e058379b9e00a Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Mon, 22 Jun 2009 12:47:02 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-iucvterm-getlogin-to-getpwuid
|
||||
|
||||
Description: iucvconn: Replace getlogin() with getpwuid(geteuid())
|
||||
Symptom: The user name is not always logged to syslog.
|
||||
Problem: The getlogin() function returns the name of the user that
|
||||
is logged in. This user name is used to write syslog records.
|
||||
getlogin() retrieves the user information from the utmp
|
||||
database. However, the user information might not always be
|
||||
available, for example, the screen program can remove utmp
|
||||
records (logoff function).
|
||||
Solution: The getpwuid() function is used to get the user name from the
|
||||
passwd file (or any other NSS source, i.e. LDAP etc.).
|
||||
Problem-ID: 54225
|
||||
---
|
||||
iucvterm/src/iucvconn.c | 11 +++++++++--
|
||||
1 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/iucvterm/src/iucvconn.c b/iucvterm/src/iucvconn.c
|
||||
index 61f536e..da7d08a 100644
|
||||
--- a/iucvterm/src/iucvconn.c
|
||||
+++ b/iucvterm/src/iucvconn.c
|
||||
@@ -7,6 +7,7 @@
|
||||
* Author(s): Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
|
||||
*/
|
||||
#include <errno.h>
|
||||
+#include <pwd.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@@ -237,6 +238,7 @@ int main(int argc, char *argv[])
|
||||
struct sockaddr_iucv addr;
|
||||
struct termios ios;
|
||||
struct sigaction sigact;
|
||||
+ struct passwd *passwd;
|
||||
struct iucvtty_cfg conf;
|
||||
|
||||
|
||||
@@ -266,6 +268,9 @@ int main(int argc, char *argv[])
|
||||
/* syslog */
|
||||
openlog(SYSLOG_IDENT, LOG_PID, LOG_AUTHPRIV);
|
||||
|
||||
+ /* get user information for syslog */
|
||||
+ passwd = getpwuid(geteuid());
|
||||
+
|
||||
if (connect(server, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
|
||||
switch (errno) {
|
||||
case EAGAIN:
|
||||
@@ -286,12 +291,14 @@ int main(int argc, char *argv[])
|
||||
break;
|
||||
}
|
||||
AUDIT("Connection to %s/%s failed for user %s (uid=%i)",
|
||||
- conf.host, conf.service, getlogin(), geteuid());
|
||||
+ conf.host, conf.service,
|
||||
+ (passwd != NULL) ? passwd->pw_name : "n/a", geteuid());
|
||||
rc = 2;
|
||||
goto return_on_error;
|
||||
}
|
||||
AUDIT("Established connection to %s/%s for user %s (uid=%i)",
|
||||
- conf.host, conf.service, getlogin(), geteuid());
|
||||
+ conf.host, conf.service,
|
||||
+ (passwd != NULL) ? passwd->pw_name : "n/a", geteuid());
|
||||
|
||||
/* send client params */
|
||||
iucvtty_tx_termenv(server, DEFAULT_TERM);
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,184 +0,0 @@
|
||||
From 263c0e5646ea3c81e570ec7e53c214cac8cb4412 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Mon, 22 Jun 2009 12:50:08 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-dumpconf-improve-error-checking
|
||||
|
||||
Description: dumpconf: Improve parameter checking and error messages.
|
||||
Symptom: Ugly and confusing error messages on systems which do not support
|
||||
the dump_reipl shutdown action.
|
||||
Problem: Error handling is incomplete.
|
||||
Solution: The dumpconf init script now validates the syntax of the device
|
||||
specified in the config file.
|
||||
---
|
||||
etc/init.d/dumpconf | 98 +++++++++++++++++++++++++++++++++++----------------
|
||||
1 files changed, 67 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/etc/init.d/dumpconf b/etc/init.d/dumpconf
|
||||
index e97f76c..42a2242 100755
|
||||
--- a/etc/init.d/dumpconf
|
||||
+++ b/etc/init.d/dumpconf
|
||||
@@ -119,18 +119,60 @@ verify_ccw_dump_device()
|
||||
fi
|
||||
}
|
||||
|
||||
-setup_ccw_device()
|
||||
-{
|
||||
- echo $DEVICE > $1/ccw/device || RETVAL=1
|
||||
+#------------------------------------------------------------------------------
|
||||
+# Helper function to check a device string.
|
||||
+#------------------------------------------------------------------------------
|
||||
+function CheckDeviceString() {
|
||||
+ local X
|
||||
+
|
||||
+ X=$(
|
||||
+ echo "$1" |
|
||||
+ awk --posix -F. '
|
||||
+ function PrintBusID(css, grp, devno) {
|
||||
+ while(length(devno) < 4)
|
||||
+ devno = "0" devno
|
||||
+ print css "." grp "." devno
|
||||
+ }
|
||||
+ NF == 1 && $1 ~ /^[0-9a-fA-F]{1,4}$/ {
|
||||
+ PrintBusID("0","0", $1)
|
||||
+ next
|
||||
+ }
|
||||
+ NF != 3 || $1 !~ /^[0-9a-fA-F]{1,2}$/ {
|
||||
+ next
|
||||
+ }
|
||||
+ $2 !~ /^[0-9a-fA-F]{1,2}$/ {
|
||||
+ next
|
||||
+ }
|
||||
+ $3 !~ /^[0-9a-fA-F]{1,4}$/ {
|
||||
+ next
|
||||
+ }
|
||||
+ {
|
||||
+ PrintBusID($1, $2, $3)
|
||||
+ }
|
||||
+ '
|
||||
+ )
|
||||
+
|
||||
+ if [ "$X" != "" ]; then
|
||||
+ echo $X
|
||||
+ return 0
|
||||
+ fi
|
||||
}
|
||||
|
||||
-setup_fcp_device()
|
||||
+setup_device()
|
||||
{
|
||||
- echo $DEVICE > $1/fcp/device || RETVAL=1
|
||||
- echo $WWPN > $1/fcp/wwpn || RETVAL=1
|
||||
- echo $LUN > $1/fcp/lun || RETVAL=1
|
||||
- echo $BOOTPROG > $1/fcp/bootprog || RETVAL=1
|
||||
- echo $BR_LBA > $1/fcp/br_lba || RETVAL=1
|
||||
+ DEV="$(CheckDeviceString $DEVICE)"
|
||||
+ if [ "$DEV" != "" ]; then
|
||||
+ echo $DEV > $1/$DUMP_TYPE/device || RETVAL=1
|
||||
+ else
|
||||
+ RETVAL=1
|
||||
+ echo "ERROR: Invalid device '$DEVICE'" >&2
|
||||
+ fi
|
||||
+ if [ $DUMP_TYPE == "fcp" ] && [ $RETVAL -eq 0 ]; then
|
||||
+ echo $WWPN > $1/fcp/wwpn || RETVAL=1
|
||||
+ echo $LUN > $1/fcp/lun || RETVAL=1
|
||||
+ echo $BOOTPROG > $1/fcp/bootprog || RETVAL=1
|
||||
+ echo $BR_LBA > $1/fcp/br_lba || RETVAL=1
|
||||
+ fi
|
||||
}
|
||||
|
||||
setup_nss_device()
|
||||
@@ -145,10 +187,8 @@ setup_reipl()
|
||||
return
|
||||
fi
|
||||
|
||||
- if [ "$REIPL_TYPE" == "ccw" ]; then
|
||||
- setup_ccw_device $REIPL_CONFIG_DIR
|
||||
- elif [ "$REIPL_TYPE" == "fcp" ]; then
|
||||
- setup_fcp_device $REIPL_CONFIG_DIR
|
||||
+ if [ "$REIPL_TYPE" == "ccw" ] || [ "$REIPL_TYPE" == "fcp" ]; then
|
||||
+ setup_device $REIPL_CONFIG_DIR
|
||||
elif [ "$REIPL_TYPE" == "nss" ]; then
|
||||
setup_nss_device $REIPL_CONFIG_DIR
|
||||
else
|
||||
@@ -169,28 +209,23 @@ setup_reipl()
|
||||
|
||||
setup_dump()
|
||||
{
|
||||
- if [ "$DUMP_TYPE" == "ccw" ]; then
|
||||
- setup_ccw_device $DUMP_CONFIG_DIR
|
||||
- elif [ "$DUMP_TYPE" == "fcp" ]; then
|
||||
- setup_fcp_device $DUMP_CONFIG_DIR
|
||||
+ if [ "$DUMP_TYPE" == "ccw" ] || [ "$DUMP_TYPE" == "fcp" ]; then
|
||||
+ setup_device $DUMP_CONFIG_DIR
|
||||
elif [ "$DUMP_TYPE" != "none" ]; then
|
||||
echo "ERROR: Unknown dump type '$DUMP_TYPE'" >&2
|
||||
RETVAL=1
|
||||
fi
|
||||
|
||||
- echo $DUMP_TYPE > $DUMP_CONFIG_DIR/dump_type || RETVAL=1
|
||||
+ if [ $RETVAL -eq 0 ]; then
|
||||
+ echo $DUMP_TYPE > $DUMP_CONFIG_DIR/dump_type || RETVAL=1
|
||||
+ fi
|
||||
|
||||
if [ $RETVAL -eq 1 ]; then
|
||||
- echo "ERROR: Setup of $DUMP_TYPE dump device failed." >&2
|
||||
echo none > $DUMP_CONFIG_DIR/dump_type
|
||||
return $RETVAL
|
||||
fi
|
||||
|
||||
- if [ "$CONF_DUMP_TYPE" == "none" ]; then
|
||||
- echo "No dump device configured. "
|
||||
- else
|
||||
- echo "$ON_PANIC on panic configured: Using $DUMP_TYPE dump device."
|
||||
- fi
|
||||
+ echo "Configuring $ON_PANIC on panic: Using $DUMP_TYPE dump device."
|
||||
}
|
||||
|
||||
setup_on_panic_vmcmd()
|
||||
@@ -260,7 +295,7 @@ status_dump()
|
||||
echo "type....: fcp"
|
||||
print_fcp_device $DUMP_CONFIG_DIR
|
||||
else
|
||||
- echo "ERROR: Unknown dump device type '$TYPE'!" >&2
|
||||
+ echo "ERROR: Unknown dump device type '$CONF_DUMP_TYPE'!" >&2
|
||||
echo " Please check if you have the latest dumpconf package!" >&2
|
||||
fi
|
||||
}
|
||||
@@ -316,27 +351,28 @@ start()
|
||||
|
||||
if [ "$ON_PANIC" == "reipl" ]; then
|
||||
setup_reipl
|
||||
- elif [ "$ON_PANIC" == "dump" ]; then
|
||||
+ elif [ "$ON_PANIC" == "dump" ] || [ "$ON_PANIC" == "dump_reipl" ]; then
|
||||
setup_dump
|
||||
elif [ "$ON_PANIC" == "vmcmd" ]; then
|
||||
setup_on_panic_vmcmd
|
||||
- elif [ "$ON_PANIC" == "dump_reipl" ]; then
|
||||
- setup_dump
|
||||
elif [ "$ON_PANIC" == "stop" ]; then
|
||||
echo "stop on panic configured."
|
||||
else
|
||||
echo "ERROR: Unknown 'on panic' type '$ON_PANIC'" >&2
|
||||
RETVAL=1
|
||||
fi
|
||||
+ if [ $RETVAL -eq 1 ]; then
|
||||
+ echo "ERROR: Setup of $DUMP_TYPE dump device failed." >&2
|
||||
+ return $RETVAL
|
||||
+ fi
|
||||
|
||||
- echo $ON_PANIC > $ON_PANIC_CONFIG_FILE || RETVAL=1
|
||||
+ echo $ON_PANIC > $ON_PANIC_CONFIG_FILE 2> /dev/null || RETVAL=1
|
||||
|
||||
# check for errors
|
||||
|
||||
if [ $RETVAL -eq 1 ]; then
|
||||
- ERRMSG="\"on panic action\" configuration failed!"
|
||||
echo stop > $ON_PANIC_CONFIG_FILE
|
||||
- echo "ERROR: $ERRMSG Check $DUMP_CONFIG_FILE!" >&2
|
||||
+ echo "ERROR: $ON_PANIC not supported by hardware!" >&2
|
||||
return $RETVAL
|
||||
fi
|
||||
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,57 +0,0 @@
|
||||
From 277fbeaa8cdd27e586d1d3d0f58242a0a40b3a48 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Mon, 22 Jun 2009 12:51:44 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-cpuplugd-memplug
|
||||
|
||||
Description: cpuplugd: Daemon does not work in an memplug only environment.
|
||||
Symptom: When the cpuplugd daemon is executed with only the memory
|
||||
configuration in cpuplugd.conf it does not start properly.
|
||||
Problem: A bug in the configuration file parser prevents this valid
|
||||
user specified setup.
|
||||
Solution: Adjust the configuration file parser, to accept this type of
|
||||
system configuration.
|
||||
---
|
||||
cpuplugd/config.c | 6 +++---
|
||||
1 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/cpuplugd/config.c b/cpuplugd/config.c
|
||||
index 7f02c6c..93b31e5 100644
|
||||
--- a/cpuplugd/config.c
|
||||
+++ b/cpuplugd/config.c
|
||||
@@ -66,6 +66,7 @@ void parse_configline(struct config *cfg, char *line)
|
||||
|
||||
rc = -1;
|
||||
cmm_min = -1;
|
||||
+ rvalue = NULL;
|
||||
/* parse line by line */
|
||||
for (token = strtok_r(line, "\n", &save);
|
||||
token != NULL;
|
||||
@@ -318,8 +319,7 @@ void check_config(struct config *cfg)
|
||||
int lpar_status, error_counter;
|
||||
|
||||
lpar_status = check_lpar();
|
||||
-
|
||||
- if (cfg->cpu_max <= cfg->cpu_min && cfg->cpu_max != 0) {
|
||||
+ if (cfg->cpu_max <= cfg->cpu_min && cfg->cpu_max != 0 && cpu != 0) {
|
||||
if (foreground == 1)
|
||||
fprintf(stderr, "cpu_max below or equal cpu_min,"
|
||||
" aborting.\n");
|
||||
@@ -328,7 +328,6 @@ void check_config(struct config *cfg)
|
||||
"aborting\n");
|
||||
clean_up();
|
||||
}
|
||||
-
|
||||
if (cfg->cpu_max < 0 || cfg->cpu_min < 0 || cfg->update < 0
|
||||
|| cfg->hotplug == NULL || cfg->hotunplug == NULL) {
|
||||
if (foreground == 1)
|
||||
@@ -337,6 +336,7 @@ void check_config(struct config *cfg)
|
||||
if (foreground == 0)
|
||||
syslog(LOG_INFO, "No valid CPU hotplug "
|
||||
"configuration detected\n");
|
||||
+ cpu = 0;
|
||||
} else {
|
||||
cpu = 1;
|
||||
if (debug) {
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,118 +0,0 @@
|
||||
From 65f317c463de53abf7a8bba3285a077dbaf42486 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Mon, 22 Jun 2009 12:53:22 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-ziomon-new-blkiomon
|
||||
|
||||
ziomon: Adjust to use blkiomon V0.3
|
||||
|
||||
Update the blkiomon header to the version packaged in RHEL 5.4, update
|
||||
the version check appropriately and use the version number for .log files
|
||||
to match what the proper, forthcoming version will use.
|
||||
---
|
||||
ziomon/blkiomon.h | 4 ++--
|
||||
ziomon/ziomon | 2 +-
|
||||
ziomon/ziomon_dacc.c | 12 ++++++------
|
||||
ziomon/ziomon_dacc.h | 2 +-
|
||||
4 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/ziomon/blkiomon.h b/ziomon/blkiomon.h
|
||||
index da27d00..42b6b46 100644
|
||||
--- a/ziomon/blkiomon.h
|
||||
+++ b/ziomon/blkiomon.h
|
||||
@@ -25,6 +25,7 @@ struct blkiomon_stat {
|
||||
/* Histogram of dispatch to completion request times in u-secs.
|
||||
Step-size is 8, starting at 0. */
|
||||
__u32 d2c_hist[BLKIOMON_D2C_BUCKETS];
|
||||
+ __u32 device; /* device identifier */
|
||||
struct minmax size_r; /* stats of read request sizes in Bytes */
|
||||
struct minmax size_w; /* stats of write request sizes in Bytes */
|
||||
struct minmax d2c_r; /* stats of read request durations in u-secs */
|
||||
@@ -33,8 +34,7 @@ struct blkiomon_stat {
|
||||
struct minmax thrput_w; /* stats of write throughput in Kbytes per micro-sec */
|
||||
__u64 bidir; /* number of bi-directional requests, is set exclusive
|
||||
(ie. not implicitly adding 1 to rd and wrt as well) */
|
||||
- __u32 device; /* device identifier */
|
||||
-} __attribute__ ((packed));
|
||||
+};
|
||||
|
||||
static struct histlog2 size_hist = {0, 1024, BLKIOMON_SIZE_BUCKETS};
|
||||
|
||||
diff --git a/ziomon/ziomon b/ziomon/ziomon
|
||||
index fe4d8ec..297651c 100755
|
||||
--- a/ziomon/ziomon
|
||||
+++ b/ziomon/ziomon
|
||||
@@ -414,7 +414,7 @@ function check_vmalloc_space() {
|
||||
function check_blkiomon() {
|
||||
# check blkiomon version
|
||||
ver=`blkiomon -V | awk '{print $3}'`;
|
||||
- if [ "$ver" != "0.2" ]; then
|
||||
+ if [ "$ver" != "0.3" ]; then
|
||||
echo "$WRP_TOOLNAME: Unsupported blkiomon version $ver detected, aborting";
|
||||
exit 1;
|
||||
fi
|
||||
diff --git a/ziomon/ziomon_dacc.c b/ziomon/ziomon_dacc.c
|
||||
index f2c34ac..0a17d9e 100644
|
||||
--- a/ziomon/ziomon_dacc.c
|
||||
+++ b/ziomon/ziomon_dacc.c
|
||||
@@ -426,7 +426,7 @@ int add_msg(FILE *fp, struct message *msg, struct file_header *f_hdr,
|
||||
int init_file(FILE *fp, struct file_header *f_hdr)
|
||||
{
|
||||
f_hdr->magic = DATA_MGR_MAGIC;
|
||||
- f_hdr->version = DATA_MGR_V2;
|
||||
+ f_hdr->version = DATA_MGR_V3;
|
||||
f_hdr->first_msg_offset = 0;
|
||||
f_hdr->end_time = 0;
|
||||
f_hdr->begin_time = 0;
|
||||
@@ -452,11 +452,11 @@ static int get_header(FILE *fp, struct file_header *hdr)
|
||||
toolname);
|
||||
return -2;
|
||||
}
|
||||
- if (hdr->version != DATA_MGR_V2) {
|
||||
+ if (hdr->version != DATA_MGR_V3) {
|
||||
fprintf(stderr, "%s: Wrong version: .log data is in version %u"
|
||||
" format, while this tool only supports version %u."
|
||||
" Get the matching tool version and try again.\n",
|
||||
- toolname, hdr->version, DATA_MGR_V2);
|
||||
+ toolname, hdr->version, DATA_MGR_V3);
|
||||
return -2;
|
||||
}
|
||||
hdr->begin_time = 0;
|
||||
@@ -557,11 +557,11 @@ static int read_aggr_file(FILE *fp, struct aggr_data *data)
|
||||
toolname);
|
||||
return -1;
|
||||
}
|
||||
- if (data->version != DATA_MGR_V2) {
|
||||
+ if (data->version != DATA_MGR_V3) {
|
||||
fprintf(stderr, "%s: Wrong version: .agg data is in version %u"
|
||||
" format, while this tool only supports version %u."
|
||||
" Get the matching tool version and try again.\n",
|
||||
- toolname, data->version, DATA_MGR_V2);
|
||||
+ toolname, data->version, DATA_MGR_V3);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -805,7 +805,7 @@ int write_aggr_file(FILE *fp, struct aggr_data *data)
|
||||
void init_aggr_data_struct(struct aggr_data *data)
|
||||
{
|
||||
data->magic = DATA_MGR_MAGIC_AGGR;
|
||||
- data->version = DATA_MGR_V2;
|
||||
+ data->version = DATA_MGR_V3;
|
||||
data->num_zfcpdd = 0;
|
||||
data->num_blkiomon = 0;
|
||||
data->end_time = 0;
|
||||
diff --git a/ziomon/ziomon_dacc.h b/ziomon/ziomon_dacc.h
|
||||
index f280c9b..8f301f4 100644
|
||||
--- a/ziomon/ziomon_dacc.h
|
||||
+++ b/ziomon/ziomon_dacc.h
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
#define DATA_MGR_MAGIC 0x64616d67
|
||||
#define DATA_MGR_MAGIC_AGGR 0x61676772
|
||||
-#define DATA_MGR_V2 2u
|
||||
+#define DATA_MGR_V3 3u
|
||||
|
||||
|
||||
/**
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 8384b80dac573a65de6610ff8dae753a0e2d6deb Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Mon, 13 Jul 2009 10:29:52 +0200
|
||||
Subject: [PATCH] s390-tools-1.8.1-lsluns-disk-enc
|
||||
|
||||
Description: lsluns: fix byte check for disk encryption check.
|
||||
Symptom: Encrypted disks are never displayed as encrypted.
|
||||
Problem: The check was performed on the wrong bit.
|
||||
Solution: Perform the check on the correct bit.
|
||||
Problem-ID: 54517
|
||||
---
|
||||
zconf/lsluns | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/zconf/lsluns b/zconf/lsluns
|
||||
index 08a11ba..164282e 100755
|
||||
--- a/zconf/lsluns
|
||||
+++ b/zconf/lsluns
|
||||
@@ -216,8 +216,8 @@ sub show_attached_lun_info
|
||||
(my $mod = substr($inq, 0x10, 0x10)) =~ s/\s*//g;
|
||||
my $type = ord(substr($inq, 0x0, 0x1));
|
||||
my $enc = ($mod =~ /2107/) ?
|
||||
- ord(substr($inq, 0xa2, 0x80)) : 0;
|
||||
- $l .= "(X)" if ($enc & 0x8);
|
||||
+ ord(substr($inq, 0xa2, 0x1)) : 0;
|
||||
+ $l .= "(X)" if ($enc & 0x80);
|
||||
$txt[$type] = $type if (!defined($txt[$type]));
|
||||
print("\t\tlun = $l\t$sg_dev\t$txt[$type]",
|
||||
"\t$vend:$mod\n");
|
||||
--
|
||||
1.6.0.6
|
||||
|
@ -1,25 +0,0 @@
|
||||
From af1d22ef04368fd201480959ad6647853d82a25e Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Wed, 26 Aug 2009 14:20:50 +0200
|
||||
Subject: [PATCH 20/21] s390-tools-1.8.1-cpuplugd-cmminit
|
||||
|
||||
---
|
||||
cpuplugd/config.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/cpuplugd/config.c b/cpuplugd/config.c
|
||||
index 93b31e5..c013a65 100644
|
||||
--- a/cpuplugd/config.c
|
||||
+++ b/cpuplugd/config.c
|
||||
@@ -348,7 +348,7 @@ void check_config(struct config *cfg)
|
||||
"configuration detected\n");
|
||||
}
|
||||
}
|
||||
- if (cfg->cmm_max < 0 || cfg->cmm_min < -1
|
||||
+ if (cfg->cmm_max < 0 || cfg->cmm_min < 0
|
||||
|| cfg->cmm_inc < 0 || cfg->memplug == NULL || cfg->update < 0
|
||||
|| cfg->memunplug == NULL) {
|
||||
if (foreground == 1)
|
||||
--
|
||||
1.6.3.3
|
||||
|
@ -1,106 +0,0 @@
|
||||
From 0b02dbdbd248ca51583e9dce3bd57025b965534d Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Wed, 30 Sep 2009 18:22:15 +0200
|
||||
Subject: [PATCH 24/25] s390-tools-1.8.1-cpuplugd-limits
|
||||
|
||||
Description: cpuplugd: fix cmm_pages allocation outside min and max range
|
||||
Symptom: cpuplugd might instruct CMM to operated outside the predefined limits
|
||||
Problem: This problem is basically caused by a missing new line separator at
|
||||
the interface between the daemon and the proc file.
|
||||
Solution: Add newline to the end of each line when writing to /proc/sys/vm/cmm_pages
|
||||
Problem-ID: 55472
|
||||
---
|
||||
cpuplugd/config.c | 15 +++++++++++++--
|
||||
cpuplugd/daemon.c | 11 -----------
|
||||
cpuplugd/mem.c | 6 +++---
|
||||
3 files changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/cpuplugd/config.c b/cpuplugd/config.c
|
||||
index c013a65..bd3cb43 100644
|
||||
--- a/cpuplugd/config.c
|
||||
+++ b/cpuplugd/config.c
|
||||
@@ -494,7 +494,7 @@ void check_config(struct config *cfg)
|
||||
if (memory == 1) {
|
||||
/*
|
||||
* check that the initial value of cmm_pages is not below
|
||||
- * cmm_min
|
||||
+ * cmm_min or above cmm_max
|
||||
*/
|
||||
cmm_pagesize_start = get_cmmpages_size();
|
||||
if (cmm_pagesize_start < cfg->cmm_min) {
|
||||
@@ -506,7 +506,18 @@ void check_config(struct config *cfg)
|
||||
syslog(LOG_INFO, "cmm_pages is below minimum "
|
||||
"and will be increased\n");
|
||||
}
|
||||
- memunplug(cfg->cmm_min);
|
||||
+ set_cmm_pages(cfg->cmm_min);
|
||||
+ }
|
||||
+ if (cmm_pagesize_start > cfg->cmm_max) {
|
||||
+ if (debug && foreground == 1) {
|
||||
+ printf("cmm_pages is above the maximum and will "
|
||||
+ "be decreased.\n");
|
||||
+ }
|
||||
+ if (debug && foreground == 0) {
|
||||
+ syslog(LOG_INFO, "cmm_pages is above the maximum "
|
||||
+ "and will be decreased\n");
|
||||
+ }
|
||||
+ set_cmm_pages(cfg->cmm_max);
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/cpuplugd/daemon.c b/cpuplugd/daemon.c
|
||||
index d0769f3..e1ef623 100644
|
||||
--- a/cpuplugd/daemon.c
|
||||
+++ b/cpuplugd/daemon.c
|
||||
@@ -260,17 +260,6 @@ void check_max(struct config *cfg)
|
||||
cpuid++;
|
||||
}
|
||||
}
|
||||
- if (memory && get_cmmpages_size() > cfg->cmm_max) {
|
||||
- if (debug && foreground == 1) {
|
||||
- printf("cmm_pages is above the maximum and will "
|
||||
- "be decreased.\n");
|
||||
- }
|
||||
- if (debug && foreground == 0) {
|
||||
- syslog(LOG_INFO, "cmm_pages is above the maximum "
|
||||
- "and will be decreased\n");
|
||||
- }
|
||||
- set_cmm_pages(cfg->cmm_max);
|
||||
- }
|
||||
}
|
||||
|
||||
/* check if we are running in an LPAR environment.
|
||||
diff --git a/cpuplugd/mem.c b/cpuplugd/mem.c
|
||||
index 2f3d219..6200904 100644
|
||||
--- a/cpuplugd/mem.c
|
||||
+++ b/cpuplugd/mem.c
|
||||
@@ -138,7 +138,7 @@ int memunplug(int size)
|
||||
":%s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
- fprintf(filp, "%d", new_size);
|
||||
+ fprintf(filp, "%d\n", new_size);
|
||||
if (debug && foreground == 1)
|
||||
printf("changed number of pages permanently reserved "
|
||||
"to %d \n", new_size);
|
||||
@@ -173,7 +173,7 @@ int memplug(int size)
|
||||
":%s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
- fprintf(filp, "%d", new_size);
|
||||
+ fprintf(filp, "%d\n", new_size);
|
||||
if (debug && foreground == 1)
|
||||
printf("changed number of pages permanently reserved "
|
||||
"to %d \n", new_size);
|
||||
@@ -200,7 +200,7 @@ int set_cmm_pages(int size)
|
||||
":%s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
- fprintf(filp, "%d", size);
|
||||
+ fprintf(filp, "%d\n", size);
|
||||
if (debug && foreground == 1)
|
||||
printf("changed number of pages permanently reserved "
|
||||
"to %d \n", size);
|
||||
--
|
||||
1.6.3.3
|
||||
|
@ -1,363 +0,0 @@
|
||||
From 60a3bf1df6d7039f75d889f15d7839f8482c2889 Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Wed, 30 Sep 2009 18:24:52 +0200
|
||||
Subject: [PATCH 25/25] s390-tools-1.8.1-misc-bugfixes
|
||||
|
||||
Miscellaneous minor bufgixes for s390-tools RHEL5.5:
|
||||
* lsshut: Fix printing of vmcmd shutdown action: Also print CP commands
|
||||
that have more than one word.
|
||||
* af_iucv: Doc update for connection-oriented datagram sockets.
|
||||
---
|
||||
ipl_tools/system.c | 13 +++--
|
||||
man/af_iucv.7 | 174 +++++++++++++++++++++++++++++++++++++++++++++++-----
|
||||
2 files changed, 166 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/ipl_tools/system.c b/ipl_tools/system.c
|
||||
index 8294db0..fd5b76b 100644
|
||||
--- a/ipl_tools/system.c
|
||||
+++ b/ipl_tools/system.c
|
||||
@@ -74,7 +74,7 @@ out:
|
||||
char *substring(size_t start, size_t stop, const char *src, char *dst,
|
||||
size_t size)
|
||||
{
|
||||
- int count;
|
||||
+ unsigned int count;
|
||||
|
||||
count = stop - start;
|
||||
if (count >= --size)
|
||||
@@ -102,7 +102,7 @@ int check_for_root(void)
|
||||
int ishex(char *cp)
|
||||
{
|
||||
|
||||
- int i;
|
||||
+ unsigned int i;
|
||||
char c;
|
||||
|
||||
for (i = 0; i <= strlen(cp); i++) {
|
||||
@@ -168,13 +168,13 @@ int strrd(char *string, char *file)
|
||||
|
||||
strncpy(path, file, sizeof(path));
|
||||
if (access(path, R_OK) == 0) {
|
||||
- filp = fopen(path, "r");
|
||||
+ filp = fopen(path, "rb");
|
||||
if (!filp) {
|
||||
fprintf(stderr, "%s: Can not open %s: ", name, file);
|
||||
fprintf(stderr, "%s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
- rc = fscanf(filp, "%s", string);
|
||||
+ rc = fread(string, 4096, 1, filp);
|
||||
fclose(filp);
|
||||
/*
|
||||
* special handling is required for
|
||||
@@ -192,8 +192,11 @@ int strrd(char *string, char *file)
|
||||
file);
|
||||
fprintf(stderr, "%s\n", strerror(errno));
|
||||
return -1;
|
||||
- } else
|
||||
+ } else {
|
||||
+ if (string[strlen(string) - 1] == '\n')
|
||||
+ string[strlen(string) - 1] = 0;
|
||||
return 0;
|
||||
+ }
|
||||
} else {
|
||||
fprintf(stderr, "%s: Can not open %s: ", name, file);
|
||||
fprintf(stderr, "%s\n", strerror(errno));
|
||||
diff --git a/man/af_iucv.7 b/man/af_iucv.7
|
||||
index cdd2691..9d56640 100644
|
||||
--- a/man/af_iucv.7
|
||||
+++ b/man/af_iucv.7
|
||||
@@ -4,7 +4,7 @@
|
||||
.\" Copyright IBM Corp. 2008, 2009.
|
||||
.\" Author(s): Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
|
||||
.\" ----------------------------------------------------------------------
|
||||
-.TH AF_IUCV 7 "March 2009" "s390-tools" "Linux Programmer's Manual"
|
||||
+.TH AF_IUCV 7 "September 2009" "s390-tools" "Linux Programmer's Manual"
|
||||
.SH NAME
|
||||
iucv, AF_IUCV \- Sockets for z/VM IUCV communication
|
||||
.
|
||||
@@ -13,15 +13,17 @@ iucv, AF_IUCV \- Sockets for z/VM IUCV communication
|
||||
.SH SYNOPSIS
|
||||
.B #include <sys/socket.h>
|
||||
|
||||
-.IB iucv_socket " = socket(AF_IUCV, SOCK_STREAM, 0);"
|
||||
+.IB iucv_stream_socket " = socket(AF_IUCV, SOCK_STREAM, 0);"
|
||||
+.br
|
||||
+.IB iucv_packet_socket " = socket(AF_IUCV, SOCK_SEQPACKET, 0);"
|
||||
.
|
||||
.
|
||||
.
|
||||
.SH DESCRIPTION
|
||||
The Inter-User Communication Vehicle (IUCV) is a z/VM communication facility
|
||||
that enables a program running in one z/VM guest virtual machine to communicate
|
||||
-with another z/VM guest virtual machine, or with a control program, or even
|
||||
-with itself.
|
||||
+with another z/VM guest virtual machine, or with the control program (CP), or
|
||||
+even with itself.
|
||||
|
||||
The AF_IUCV address family provides communication and addressing in the IUCV
|
||||
domain. In the IUCV domain, address spaces or virtual machines can use the
|
||||
@@ -32,7 +34,11 @@ AF_IUCV connects socket applications running on different Linux guest operating
|
||||
systems, or it connects a Linux application to another socket application
|
||||
running in another z/VM guest operating system (like z/VM CMS).
|
||||
|
||||
-The AF_IUCV address family supports stream sockets only.
|
||||
+The AF_IUCV address family supports stream-oriented sockets
|
||||
+(\f(CWSOCK_STREAM\fP) and connection-oriented datagram sockets
|
||||
+(\f(CWSOCK_SEQPACKET\fP). Stream-oriented sockets fragment data over several
|
||||
+native IUCV messages, whereas sockets of type SOCK_SEQPACKET map a particular
|
||||
+socket write or read operation to a single native IUCV message.
|
||||
|
||||
.SS Features
|
||||
The AF_IUCV address family provides:
|
||||
@@ -78,28 +84,106 @@ are reserved for future use. The
|
||||
.B siucv_port
|
||||
and
|
||||
.B siucv_addr
|
||||
-fields must be zero. The
|
||||
+fields must be zero. The
|
||||
.B siucv_nodeid
|
||||
field must be set to exactly eight blank characters.
|
||||
.
|
||||
.TP
|
||||
.B siucv_userid
|
||||
is set to the z/VM user ID of the Linux guest virtual machine running the
|
||||
-application which owns the address. The field must be eight characters long,
|
||||
+application that owns the address. The field must be eight characters long,
|
||||
padded with blanks on the right.
|
||||
|
||||
For
|
||||
.BR bind "(2), " siucv_userid
|
||||
-must contain blanks only, because AF_IUCV sets the correct z/VM user ID.
|
||||
+must contain blanks only to allow AF_IUCV to set the z/VM user ID of the Linux
|
||||
+guest operating system.
|
||||
.
|
||||
.TP
|
||||
.B siucv_name
|
||||
-is set to the application name by which the socket is known. Servers advertises
|
||||
+is set to the application name by which the socket is known. Servers advertise
|
||||
application names and clients use these application names to connect to servers.
|
||||
This field must be eight characters long, padded with blanks on the right.
|
||||
.
|
||||
.
|
||||
.
|
||||
+.SH "SOCKET OPTIONS"
|
||||
+Socket options can be set with
|
||||
+.BR setsockopt (2)
|
||||
+and read with
|
||||
+.BR getsockopt (2)
|
||||
+by specifying \f(CWSOL_IUCV\fP as the socket level.
|
||||
+
|
||||
+.TP
|
||||
+.B SO_IPRMDATA_MSG
|
||||
+Enables the application to send up to seven bytes of socket data in the
|
||||
+parameter list of an IUCV message. Use this option to increase performance
|
||||
+when transferring small amounts of data.
|
||||
+
|
||||
+To send data in the parameter list, specify a non-zero integer value.
|
||||
+
|
||||
+.RS
|
||||
+.TP
|
||||
+.B Note:
|
||||
+Use this option with care, older AF_IUCV versions do not support receiving
|
||||
+socket data in the parameter list and shut down the socket on which
|
||||
+a parameter list message has been received.
|
||||
+.RE
|
||||
+.
|
||||
+.TP
|
||||
+.B SO_MSGLIMIT
|
||||
+Modifies the message limit for new IUCV communication paths. The message
|
||||
+limit specifies the maximum number of outstanding messages that are allowed
|
||||
+for established connections. This setting can be lowered by z/VM when an IUCV
|
||||
+connection is established.
|
||||
+
|
||||
+The message limit is an integer value in range 1 to 65535.
|
||||
+The default value is 65535.
|
||||
+
|
||||
+The message limit must be set before
|
||||
+.BR connect "(2) or " listen (2)
|
||||
+is called for sockets.
|
||||
+.br
|
||||
+For sockets that are already connected or listening for connections,
|
||||
+the message limit cannot be changed.
|
||||
+.br
|
||||
+New sockets created by
|
||||
+.BR accept (2)
|
||||
+inherit the message limit that has been set for the listening socket.
|
||||
+
|
||||
+.BR getsockopt (2)
|
||||
+returns the default message limit or the limit that has been set.
|
||||
+For connected sockets, the current message limit is returned. The current
|
||||
+message limit is assigned by z/VM for each connection and it depends
|
||||
+on the IUCV MSGLIMIT statement specified for the z/VM guest virtual machine.
|
||||
+The current message limit is the lower value of the socket option and the
|
||||
+value specified for the IUCV MSGLIMIT statement.
|
||||
+
|
||||
+See the SECURITY section below for setting IUCV MSGLIMIT authorizations.
|
||||
+.
|
||||
+.
|
||||
+.
|
||||
+.SH "ANCILLARY DATA"
|
||||
+Ancillary data is sent and received using the
|
||||
+.BR sendmsg (2)
|
||||
+and
|
||||
+.BR recvmsg (2)\fR.\fP
|
||||
+To send ancillary data, set the \fBcmsg_level\fP field of struct \fBcmsghdr\fP
|
||||
+to \f(CWSOL_IUCV\fP and the \fBcmsg_type\fP field to the type.
|
||||
+.br
|
||||
+For more information see
|
||||
+.BR cmsg (3).
|
||||
+
|
||||
+.TP
|
||||
+.B SCM_IUCV_TRGCLS
|
||||
+Send or receive IUCV target class information. The IUCV target class can be used
|
||||
+to classify and identify an IUCV message at IUCV protocol level. If the target
|
||||
+class is not specified as ancillary data, it is set to zero.
|
||||
+
|
||||
+The target class is a number of type \fBuint32_t\fP.
|
||||
+.
|
||||
+.
|
||||
+.
|
||||
.
|
||||
.SH SECURITY
|
||||
This section provides an overview of the required IUCV statements for your z/VM
|
||||
@@ -129,20 +213,20 @@ any other z/VM guest virtual machine.
|
||||
.TP
|
||||
.B IUCV \fIuser_ID\fP
|
||||
allows this z/VM guest virtual machine to establish a communication path to the
|
||||
-z/VM guest virtual machine with the z/VM user ID \fIuser_ID\fP.
|
||||
+z/VM guest virtual machine with the z/VM user ID \fIuser_ID\fP.
|
||||
.PP
|
||||
You can specify multiple IUCV statements. To any of these IUCV statements you
|
||||
can append the
|
||||
.B MSGLIMIT \fIlimit\fP
|
||||
parameter.
|
||||
\fIlimit\fP specifies the maximum number of outstanding messages that are
|
||||
-allowed for each connection authorized by this entry.
|
||||
+allowed for each connection authorized by this statement.
|
||||
If no value is specified for \fBMSGLIMIT\fP, AF_IUCV requests 65535,
|
||||
which is the maximum supported by IUCV.
|
||||
.
|
||||
.
|
||||
.SS "Setting a connection limit"
|
||||
-Use the \fBOPTION\fP statement to limit the number of concurrent connections.
|
||||
+Use the \fBOPTION\fP statement to limit the number of concurrent connections.
|
||||
.TP
|
||||
.B OPTION MAXCONN \fImaxno\fP
|
||||
\fImaxno\fP specifies the maximum number of IUCV connections allowed for this
|
||||
@@ -151,7 +235,7 @@ virtual machine. The default is 64. The maximum is 65535.
|
||||
.
|
||||
.SS "Example"
|
||||
These sample statements allow any z/VM guest virtual machine to connect to your
|
||||
-z/VM guest virtual machine with a maximum of 10000 outstanding messages for each
|
||||
+z/VM guest virtual machine with a maximum of 10\^000 outstanding messages for each
|
||||
incoming connection. Your z/VM guest virtual machine is permitted to connect to
|
||||
all other z/VM guest virtual machines. The total number of connections for your
|
||||
z/VM guest virtual machine cannot exceed 100.
|
||||
@@ -200,6 +284,14 @@ This error can be temporary and the application may try again after some time.
|
||||
If the error occurs repeatedly, try to increase the maximum number of
|
||||
connections (for one or both z/VM guest virtual machines).
|
||||
See the SECURITY section about the required authorization statement.
|
||||
+
|
||||
+.B sendmsg (2)
|
||||
+called but the maximum number of outstanding IUCV messages for the socket
|
||||
+connection is reached; i.e. there are data available that has not yet been
|
||||
+received by the communication partner.
|
||||
+.br
|
||||
+If necessary, change the IUCV message limit as explained in section
|
||||
+"IUCV AUTHORIZATIONS".
|
||||
.
|
||||
.TP
|
||||
.B EACCES
|
||||
@@ -217,10 +309,22 @@ called but the AF_IUCV setting in the
|
||||
field of the passed address is missing.
|
||||
|
||||
.BR listen (2)
|
||||
-called but the AF_IUCV socket has not yet been bound to an address. Always call
|
||||
+called but the AF_IUCV socket has not yet been bound to an address.
|
||||
+Always call
|
||||
.BR bind (2)
|
||||
before
|
||||
.BR listen (2).
|
||||
+
|
||||
+.BR setsockopt (2)
|
||||
+called with option \fBSO_MSGLIMIT\fP for sockets that are already connected.
|
||||
+.
|
||||
+.TP
|
||||
+.B ENOPROTOOPT
|
||||
+.BR setsockopt (2),
|
||||
+or
|
||||
+.BR getsockopt (2)
|
||||
+called but the socket level has not been set to \f(CWSOL_IUCV\fP, or the
|
||||
+specified socket option is not supported.
|
||||
.
|
||||
.TP
|
||||
.B EOPNOTSUPP
|
||||
@@ -232,13 +336,27 @@ might be called with the
|
||||
flag set.
|
||||
AF_IUCV does not support sending or receiving \fIout-of-band\fP data on its
|
||||
sockets.
|
||||
+
|
||||
+For \f(CWSOCK_SEQPACKET\fP sockets,
|
||||
+.BR sendmsg (2)
|
||||
+called without the
|
||||
+.I MSG_EOR
|
||||
+flag set.
|
||||
+AF_IUCV does not support segmentation, and thus, the "end-of-record"
|
||||
+(\fIMSG_EOR\fP) flag must always be set.
|
||||
+.
|
||||
+.TP
|
||||
+.B EPROTONOSUPPORT
|
||||
+.BR socket (2)
|
||||
+called with a protocol that is not supported. The socket protocol parameter
|
||||
+must be either zero or \f(CWPF_IUCV\fP.
|
||||
.
|
||||
.TP
|
||||
.B EAFNOSUPPORT
|
||||
.BR socket (2)
|
||||
-called with \fIAF_IUCV\fP but the AF_IUCV protocol / addressing family is not
|
||||
+called with \f(CWAF_IUCV\fP but the AF_IUCV address family is not
|
||||
supported by the current Linux kernel. Ensure that your Linux kernel has been
|
||||
-compiled with support for the AF_IUCV addressing family.
|
||||
+compiled with support for the AF_IUCV address family.
|
||||
.
|
||||
.PP
|
||||
Other errors can be generated by the generic socket layer. See the respective
|
||||
@@ -251,6 +369,9 @@ manual pages for more information.
|
||||
.BR recvmsg (2),
|
||||
.BR sendmsg (2),
|
||||
.BR socket (2),
|
||||
+.BR setsockopt (2),
|
||||
+.BR getsockopt (2),
|
||||
+.BR cmsg (3),
|
||||
.BR socket (7)
|
||||
|
||||
.I "Linux on System z - Device Drivers, Features, and Commands"
|
||||
@@ -258,3 +379,24 @@ manual pages for more information.
|
||||
.I "z/VM CP Planning and Administration"
|
||||
.br
|
||||
.I "z/VM CP Programming Services"
|
||||
+.
|
||||
+.
|
||||
+.
|
||||
+.SH "HISTORY"
|
||||
+.TP
|
||||
+.B AF_IUCV, version 1.0
|
||||
+Initial version.
|
||||
+.TP
|
||||
+.B AF_IUCV, version 1.1
|
||||
+.RS 4
|
||||
+.IP "\(bu" 4
|
||||
+Support for sending socket data in the parameter list of an IUCV message
|
||||
+(\f(CWSO_IPRMDATA_MSG\fP).
|
||||
+.IP "\(bu" 4
|
||||
+Access the target class of an IUCV message as ancillary data using
|
||||
+.BR sendmsg "(2) and " recvmsg (2).
|
||||
+.IP "\(bu" 4
|
||||
+Support for \f(CWSOCK_SEQPACKET\fP sockets to facilitate development of native
|
||||
+IUCV applications that interact with AF_IUCV.
|
||||
+.RE
|
||||
+
|
||||
--
|
||||
1.6.3.3
|
||||
|
139
s390utils.spec
139
s390utils.spec
@ -7,8 +7,8 @@
|
||||
Name: s390utils
|
||||
Summary: Utilities and daemons for IBM System/z
|
||||
Group: System Environment/Base
|
||||
Version: 1.8.1
|
||||
Release: 8%{?dist}
|
||||
Version: 1.8.2
|
||||
Release: 1%{?dist}
|
||||
Epoch: 2
|
||||
License: GPLv2 and GPLv2+ and CPL
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -27,28 +27,16 @@ Source8: dasd.udev
|
||||
# http://www.ibm.com/developerworks/linux/linux390/zfcp-hbaapi-%{hbaapiver}.html
|
||||
Source9: http://download.boulder.ibm.com/ibmdl/pub/software/dw/linux390/ht_src/lib-zfcp-hbaapi-%{hbaapiver}.tar.gz
|
||||
|
||||
Patch1: 0001-s390-tools-1.8.1-common-mak.patch
|
||||
Patch4: 0004-s390-tools-1.8.1-zipl-automenu.patch
|
||||
Patch5: 0005-s390-tools-1.8.1-fdasd-su.patch
|
||||
Patch6: 0006-s390-tools-1.8.1-fdasd-raid-lvm.patch
|
||||
Patch8: 0008-s390-tools-1.8.1-ziorep-fixes.patch
|
||||
Patch9: 0009-s390-tools-1.8.1-cflags.patch
|
||||
Patch10: 0010-s390-tools-1.8.1-defaultmenu.patch
|
||||
Patch11: 0011-s390-tools-1.8.1-execstack.patch
|
||||
Patch12: 0012-s390-tools-1.8.1-ziomon-fixes.patch
|
||||
Patch13: 0013-s390-tools-1.8.1-zipl-fix-unsupported-device.patch
|
||||
Patch14: 0014-s390-tools-1.8.1-zipl-kdump-man.patch
|
||||
Patch15: 0015-s390-tools-1.8.1-iucvterm-getlogin-to-getpwuid.patch
|
||||
Patch16: 0016-s390-tools-1.8.1-dumpconf-improve-error-checking.patch
|
||||
Patch17: 0017-s390-tools-1.8.1-cpuplugd-memplug.patch
|
||||
Patch18: 0018-s390-tools-1.8.1-ziomon-new-blkiomon.patch
|
||||
Patch19: 0019-s390-tools-1.8.1-lsluns-disk-enc.patch
|
||||
Patch20: 0020-s390-tools-1.8.1-cpuplugd-cmminit.patch
|
||||
Patch21: 0021-s390-tools-1.8.1-lszfcp-perf.patch
|
||||
Patch22: 0022-fix-string-overflow-in-vtoc_volume_label_init.patch
|
||||
Patch23: 0023-change-default-load-address-for-ramdisk.patch
|
||||
Patch24: 0024-s390-tools-1.8.1-cpuplugd-limits.patch
|
||||
Patch25: 0025-s390-tools-1.8.1-misc-bugfixes.patch
|
||||
Patch1: 0001-s390-tools-1.5.3-zipl-zfcpdump-2.patch
|
||||
Patch2: 0002-s390-tools-1.8.1-zipl-automenu.patch
|
||||
Patch3: 0003-s390-tools-1.8.1-fdasd-su.patch
|
||||
Patch4: 0004-s390-tools-1.8.1-fdasd-raid-lvm.patch
|
||||
Patch5: 0005-don-t-create-automenu-when-default-menu-exists.patch
|
||||
Patch6: 0006-s390-tools-1.8.1-zipl-kdump-man.patch
|
||||
Patch7: 0007-s390-tools-1.8.1-lszfcp-perf.patch
|
||||
Patch8: 0008-fix-string-overflow-in-vtoc_volume_label_init.patch
|
||||
Patch9: 0009-change-default-load-address-for-ramdisk.patch
|
||||
Patch10: 0010-improve-mon_statd-init-script.patch
|
||||
|
||||
Patch100: cmsfs-1.1.8-warnings.patch
|
||||
Patch101: cmsfs-1.1.8-kernel26.patch
|
||||
@ -67,8 +55,8 @@ Requires: s390utils-cmsfs = %{epoch}:%{version}-%{release}
|
||||
|
||||
|
||||
%description
|
||||
This is a meta package for installing all s390-tools sub packages.
|
||||
If you do not need all sub packages, it is recommended to install the
|
||||
This is a meta package for installing the default s390-tools sub packages.
|
||||
If you do not need all default sub packages, it is recommended to install the
|
||||
required sub packages separately.
|
||||
|
||||
The s390utils packages contain a set of user space utilities that should to
|
||||
@ -81,63 +69,31 @@ be used together with the zSeries (s390) Linux kernel and device drivers.
|
||||
%patch1 -p1 -b .common-mak
|
||||
|
||||
# Patch to maintain backwards compatibility with older zipl multiboot feature
|
||||
%patch4 -p1 -b .zipl-automenu
|
||||
%patch2 -p1 -b .zipl-automenu
|
||||
|
||||
# Fix to honor the silent flag for wrongly formated disks
|
||||
%patch5 -p1 -b .fdasd-su
|
||||
%patch3 -p1 -b .fdasd-su
|
||||
|
||||
# Enhancement to add raid partiton support to dasds
|
||||
%patch6 -p1 -b .fdasd-raid-lvm
|
||||
|
||||
# Post 1.8.1 fixes for ziorep
|
||||
%patch8 -p1 -b .ziorep
|
||||
|
||||
# Allow override of optimization level in CFLAGS
|
||||
%patch9 -p1 -b .cflags
|
||||
%patch4 -p1 -b .fdasd-raid-lvm
|
||||
|
||||
# Don't build automenu iff default menu exists (#486444)
|
||||
%patch10 -p1 -b .defaultmenu
|
||||
|
||||
# Remove the execuatble stack flag from zipl
|
||||
%patch11 -p1 -b .execstack
|
||||
|
||||
# Post 1.8.1 fixes for ziomon
|
||||
%patch12 -p1 -b .ziomon
|
||||
|
||||
# Post 1.8.1 fix for zipl
|
||||
%patch13 -p1 -b .zipl-device
|
||||
%patch5 -p1 -b .defaultmenu
|
||||
|
||||
# Update zipl man page
|
||||
%patch14 -p1 -b .zipl-kdump-man
|
||||
|
||||
# Last-minute fixes from IBM
|
||||
%patch15 -p1 -b .iucvterm-getlogin-to-getpwuid
|
||||
%patch16 -p1 -b .dumpconf-improve-error-checking
|
||||
%patch17 -p1 -b .cpuplugd-memplug
|
||||
|
||||
# Adapt ziomon to the new layout of the blkiomon_stat structure (#506966)
|
||||
%patch18 -p1 -b .ziomon-new-blkiomon
|
||||
|
||||
# Fix byte check for disk encryption check in lsluns (#510032)
|
||||
%patch19 -p1 -b .lsluns-disk-enc
|
||||
|
||||
# Fix cmm configuration file value initialization parser in cpuplugd (#511379)
|
||||
%patch20 -p1 -b .cpuplugd-cmminit
|
||||
%patch6 -p1 -b .zipl-kdump-man
|
||||
|
||||
# Check only ZFCP devices in lszfcp (#518669)
|
||||
%patch21 -p1 -b .lszfcp-perf
|
||||
%patch7 -p1 -b .lszfcp-perf
|
||||
|
||||
# Fix string overflow in vtoc_volume_label_init (#525318)
|
||||
%patch22 -p1 -b .vtoc-label
|
||||
%patch8 -p1 -b .vtoc-label
|
||||
|
||||
# Change default load address for ramdisk (#526339)
|
||||
%patch23 -p1 -b .ramdisk-address
|
||||
%patch9 -p1 -b .ramdisk-address
|
||||
|
||||
# Fix cmm_pages allocation outside min and max range (#525495)
|
||||
%patch24 -p1 -b .ramdisk-address
|
||||
|
||||
# Miscelaneous fixes for 1.8.1 (#525495)
|
||||
%patch25 -p1 -b .misc
|
||||
# Improve mon_statd init script
|
||||
%patch10 -p1 -b .improve-mon_statd
|
||||
|
||||
#
|
||||
# cmsfs
|
||||
@ -187,7 +143,7 @@ popd
|
||||
|
||||
|
||||
%build
|
||||
make OPT_FLAGS="$RPM_OPT_FLAGS" DISTRELEASE=%{release}
|
||||
make OPT_FLAGS="$RPM_OPT_FLAGS" DISTRELEASE=%{release} V=1
|
||||
|
||||
pushd cmsfs-%{cmsfsver}
|
||||
./configure
|
||||
@ -213,7 +169,8 @@ make install \
|
||||
INSTROOT=$RPM_BUILD_ROOT \
|
||||
MANDIR=$RPM_BUILD_ROOT%{_mandir} \
|
||||
LIBDIR=${RPM_BUILD_ROOT}/%{_lib} \
|
||||
DISTRELEASE=%{release}
|
||||
DISTRELEASE=%{release} \
|
||||
V=1
|
||||
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_initddir}
|
||||
@ -388,6 +345,10 @@ s390 base tools. This collection provides the following utilities:
|
||||
- lsluns: List available SCSI LUNs depending on adapter or port.
|
||||
- lszcrypt: Show Information about zcrypt devices and configuration.
|
||||
- chzcrypt: Modify zcrypt configuration.
|
||||
- znetconf: List and configure network devices for System z network
|
||||
adapters.
|
||||
- cio_ignore: Query and modify the contents of the CIO device driver
|
||||
blacklist.
|
||||
|
||||
* dumpconf:
|
||||
Allows to configure the dump device used for system dump in case a kernel
|
||||
@ -423,7 +384,6 @@ fi
|
||||
%defattr(-,root,root,-)
|
||||
%doc README
|
||||
%doc LICENSE
|
||||
/sbin/vmur
|
||||
/sbin/zipl
|
||||
/sbin/dasdfmt
|
||||
/sbin/dasdinfo
|
||||
@ -432,6 +392,7 @@ fi
|
||||
/sbin/chccwdev
|
||||
/sbin/chchp
|
||||
/sbin/chzcrypt
|
||||
/sbin/cio_ignore
|
||||
/sbin/lschp
|
||||
/sbin/lscss
|
||||
/sbin/lsdasd
|
||||
@ -449,6 +410,7 @@ fi
|
||||
/sbin/tunedasd
|
||||
/sbin/vmcp
|
||||
/sbin/zgetdump
|
||||
/sbin/znetconf
|
||||
/sbin/dbginfo.sh
|
||||
%{_sbindir}/lsreipl
|
||||
%{_sbindir}/lsshut
|
||||
@ -456,10 +418,12 @@ fi
|
||||
%{_sbindir}/chshut
|
||||
%{_sbindir}/ip_watcher.pl
|
||||
%{_sbindir}/start_hsnc.sh
|
||||
%{_sbindir}/vmur
|
||||
%{_sbindir}/xcec-bridge
|
||||
%{_bindir}/vmconvert
|
||||
%{_initddir}/dumpconf
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/dumpconf
|
||||
/lib/s390-tools
|
||||
%{_mandir}/man1/zfcpdbf.1*
|
||||
%{_mandir}/man4/prandom.4*
|
||||
%{_mandir}/man5/zipl.conf.5*
|
||||
@ -468,6 +432,7 @@ fi
|
||||
%{_mandir}/man8/chreipl.8*
|
||||
%{_mandir}/man8/chshut.8*
|
||||
%{_mandir}/man8/chzcrypt.8*
|
||||
%{_mandir}/man8/cio_ignore.8*
|
||||
%{_mandir}/man8/dasdfmt.8*
|
||||
%{_mandir}/man8/dasdinfo.8*
|
||||
%{_mandir}/man8/dasdview.8*
|
||||
@ -492,6 +457,7 @@ fi
|
||||
%{_mandir}/man8/vmcp.8*
|
||||
%{_mandir}/man8/vmur.8*
|
||||
%{_mandir}/man8/zgetdump.8*
|
||||
%{_mandir}/man8/znetconf.8*
|
||||
%{_mandir}/man8/zipl.8*
|
||||
|
||||
# Additional Redhat specific stuff
|
||||
@ -615,18 +581,18 @@ Group: Applications/System
|
||||
Requires: perl lsscsi coreutils blktrace >= 1.0.1
|
||||
|
||||
%description ziomon
|
||||
Tool set to collect data for zfcp performance analysis.
|
||||
Tool set to collect data for zfcp performance analysis and report.
|
||||
|
||||
%files ziomon
|
||||
%defattr(-,root,root,-)
|
||||
/sbin/ziomon
|
||||
/sbin/ziomon_fcpconf
|
||||
/sbin/ziomon_mgr
|
||||
/sbin/ziomon_util
|
||||
/sbin/ziomon_zfcpdd
|
||||
/sbin/ziorep_config
|
||||
/sbin/ziorep_traffic
|
||||
/sbin/ziorep_utilization
|
||||
%{_sbindir}/ziomon
|
||||
%{_sbindir}/ziomon_fcpconf
|
||||
%{_sbindir}/ziomon_mgr
|
||||
%{_sbindir}/ziomon_util
|
||||
%{_sbindir}/ziomon_zfcpdd
|
||||
%{_sbindir}/ziorep_config
|
||||
%{_sbindir}/ziorep_traffic
|
||||
%{_sbindir}/ziorep_utilization
|
||||
%{_mandir}/man8/ziomon.8*
|
||||
%{_mandir}/man8/ziomon_fcpconf.8*
|
||||
%{_mandir}/man8/ziomon_mgr.8*
|
||||
@ -646,7 +612,14 @@ Group: Applications/System
|
||||
BuildRequires: gettext
|
||||
|
||||
%description iucvterm
|
||||
z/VM IUCV terminal applications.
|
||||
A set of applications to provide terminal access via the z/VM Inter-User
|
||||
Communication Vehicle (IUCV). The terminal access does not require an
|
||||
active TCP/IP connection between two Linux guest operating systems.
|
||||
|
||||
- iucvconn: Application to establish a terminal connection via z/VM IUCV.
|
||||
- iucvtty: Application to provide terminal access via z/VM IUCV.
|
||||
- ts-shell: Terminal server shell to authorize and control IUCV terminal
|
||||
connections for individual Linux users.
|
||||
|
||||
%pre iucvterm
|
||||
# check for ts-shell group and create it
|
||||
@ -787,6 +760,10 @@ User-space development files for the s390/s390x architecture.
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Oct 8 2009 Dan Horák <dan[at]danny.cz> 2:1.8.2-1
|
||||
- added patch for improving mon_statd behaviour
|
||||
- rebased to 1.8.2
|
||||
|
||||
* Fri Oct 2 2009 Dan Horák <dan[at]danny.cz> 2:1.8.1-8
|
||||
- really changed ramdisk load address (#526339)
|
||||
- change the required and optional subpackages for the meta package
|
||||
|
2
sources
2
sources
@ -1,4 +1,4 @@
|
||||
6a94c4655204a4ec7a2c64f42c9afed3 s390-tools-1.8.1.tar.bz2
|
||||
856ecdd42ad358433eb3fcc886b58a89 s390-tools-1.8.2.tar.bz2
|
||||
71a8ee5918f2c44c385fcfe8350cdc98 cmsfs-1.1.8c.tar.gz
|
||||
2cbfffca3f07c61420899f45d221d451 lib-zfcp-hbaapi-2.0.tar.gz
|
||||
ba42772e5b305b5e147344442cd70826 src_vipa-2.0.4.tar.gz
|
||||
|
Loading…
Reference in New Issue
Block a user