- added patch for improving mon_statd behaviour

- rebased to 1.8.2
This commit is contained in:
Dan Horák 2009-10-08 13:55:38 +00:00
parent 50a7deb725
commit 3085ce2c4a
26 changed files with 306 additions and 1787 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 \

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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}
@ -375,19 +332,23 @@ s390 base tools. This collection provides the following utilities:
* zconf:
Set of scripts to configure and list status information of Linux for
zSeries IO devices.
- chccwdev: Modify generic attributes of channel attached devices.
- lscss: List channel subsystem devices.
- lsdasd: List channel attached direct access storage devices (DASD).
- lsqeth: List all qeth-based network devices with their corresponding
settings.
- lstape: List tape devices, both channel and FCP attached.
- lszfcp: Shows information contained in sysfs about zfcp adapters,
ports and units that are online.
- lschp: List information about available channel-paths.
- chchp: Modify channel-path state.
- lsluns: List available SCSI LUNs depending on adapter or port.
- lszcrypt: Show Information about zcrypt devices and configuration.
- chzcrypt: Modify zcrypt configuration.
- chccwdev: Modify generic attributes of channel attached devices.
- lscss: List channel subsystem devices.
- lsdasd: List channel attached direct access storage devices (DASD).
- lsqeth: List all qeth-based network devices with their corresponding
settings.
- lstape: List tape devices, both channel and FCP attached.
- lszfcp: Shows information contained in sysfs about zfcp adapters,
ports and units that are online.
- lschp: List information about available channel-paths.
- chchp: Modify channel-path state.
- 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

View File

@ -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