Dominique Leuenberger 2017-12-12 20:19:08 +00:00 committed by Git OBS Bridge
commit cfaef81101
23 changed files with 1893 additions and 21 deletions

View File

@ -106,11 +106,11 @@ else DEV_TYPE="ctc"
fi
if [ "${ON_OFF}" == 0 ]; then
debug_mesg "chzdev -d ${DEV_TYPE} ${CTC_READ_CHAN}"
chzdev -d ${DEV_TYPE} ${CTC_READ_CHAN}
debug_mesg "chzdev -d ${DEV_TYPE} --no-root-update ${CTC_READ_CHAN}"
chzdev -d ${DEV_TYPE} --no-root-update ${CTC_READ_CHAN}
elif [ "${ON_OFF}" == 1 ]; then
debug_mesg "chzdev -e ${DEV_TYPE} ${CTC_READ_CHAN} ${PARM_LIST}"
chzdev -e ${DEV_TYPE} ${CTC_READ_CHAN} ${PARM_LIST}
debug_mesg "chzdev -e ${DEV_TYPE} --no-root-update ${CTC_READ_CHAN} ${PARM_LIST}"
chzdev -e ${DEV_TYPE} --no-root-update ${CTC_READ_CHAN} ${PARM_LIST}
else mesg "You must specify a 0 or a 1 for the online/offline attribute."
usage
exit 1

View File

@ -125,11 +125,11 @@ else PARM_LIST="${PARM_LIST} use_diag=0"
fi
if [ "${ON_OFF}" == 0 ]; then
debug_mesg "chzdev -d dasd ${CCW_CHAN_ID}"
chzdev -d dasd ${CCW_CHAN_ID}
debug_mesg "chzdev -d dasd --no-root-update ${CCW_CHAN_ID}"
chzdev -d dasd --no-root-update ${CCW_CHAN_ID}
elif [ "${ON_OFF}" == 1 ]; then
debug_mesg "chzdev -e dasd ${CCW_CHAN_ID} ${PARM_LIST}"
chzdev -e dasd ${CCW_CHAN_ID} ${PARM_LIST}
debug_mesg "chzdev -e dasd --no-root-update ${CCW_CHAN_ID} ${PARM_LIST}"
chzdev -e dasd --no-root-update ${CCW_CHAN_ID} ${PARM_LIST}
else mesg "You must specify a 0 or a 1 for the online/offline attribute."
usage
exit 1

View File

@ -151,11 +151,11 @@ if [ -z "${QETH_READ_CHAN}" ] || [ -z "${QETH_WRITE_CHAN}" ] || [ -z "${QETH_DAT
fi
if [ "${ON_OFF}" == 0 ]; then
debug_mesg "chzdev -d qeth ${QETH_READ_CHAN}"
chzdev -d qeth ${QETH_READ_CHAN}
debug_mesg "chzdev -d qeth --no-root-update ${QETH_READ_CHAN}"
chzdev -d qeth --no-root-update ${QETH_READ_CHAN}
elif [ "${ON_OFF}" == 1 ]; then
debug_mesg "chzdev -e qeth ${LAYER_MODE} ${PARM_LIST} ${QETH_READ_CHAN}"
chzdev -e qeth ${LAYER_MODE} ${PARM_LIST} ${QETH_READ_CHAN}
debug_mesg "chzdev -e qeth --no-root-update ${LAYER_MODE} ${PARM_LIST} ${QETH_READ_CHAN}"
chzdev -e qeth ${LAYER_MODE} --no-root-update ${PARM_LIST} ${QETH_READ_CHAN}
else mesg "You must specify a 0 or a 1 for the online/offline attribute."
usage
exit 1

View File

@ -0,0 +1,27 @@
Subject: [PATCH] [BZ 160944] cpi: add missing Install section to service unit
From: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Description: cpi: add missing Install section to service unit
Symptom: Enabling the cpi service unit fails because it
does not include information about where to install
it.
Problem: An install section is missing.
Solution: Add an install section.
Reproduction: Issue systemctl enable cpi.
Upstream-ID: -
Problem-ID: 160944
Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
---
systemd/cpi.service.in | 3 +++
1 file changed, 3 insertions(+)
--- a/systemd/cpi.service.in
+++ b/systemd/cpi.service.in
@@ -38,3 +38,6 @@ EnvironmentFile=/etc/sysconfig/cpi
#
# Sending data to the HMC/SE
ExecStart=@toolslib_path@/cpictl -e
+
+[Install]
+WantedBy=multi-user.target

View File

@ -0,0 +1,202 @@
Subject: [PATCH] [BZ 161563] cpuplugd: Improve systemctl start error handling
From: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Description: cpuplugd, mon_tools: Improve systemctl start error handling
Symptom: "systemctl start cpuplugd/mon_procd/mon_fsstatd" does not
report any errors in case the startup fails.
Problem: For type=simple, systemd forks/execs the process and if that
is successful, it immediately returns. There is no way to
find out if the initial startup fails.
Solution: Use type=fork and run the process in the background. In this
case systemd waits until the initial process returns.
In addition, use PIDFile and ensure that the pid file is
already available when the initial process returns. To
achieve this, use startup synchronization via pipe.
Reproduction: Add invalid values to the config files and start the daemons
with "systemctl start cpuplugd/mon_procd/mon_fsstatd".
Upstream-ID: 82c8148983fc09e9bfa5bf852b2d39571f8475a0
Problem-ID: 161563
Upstream-Description:
cpuplugd: Improve systemctl start error handling
Currently "systemctl start cpuplugd" does not report any errors in
case the startup fails.
Example:
# mv /etc/cpuplugd.conf /etc/cpuplugd.conf.xxx
# systemctl start cpuplugd
The reason is that for type=simple systemd forks/execs cpuplugd and if
that is successful immediately returns. There is no way to find out
if the initial startup fails.
Fix this by using type=fork and running cpuplugd in the background. In
this case systemd waits until the initial process returns.
In addition use PIDFile and ensure that the pid file is already available
when the initial cpuplugd process returns. To achieve this, replace the
daemon() function by our own implementation that introduces startup
synchronization via pipe. Without that systemd would print the following
warning:
systemd[1]: cpuplugd.service: PID file /var/run/cpuplugd.pid not readable
(yet?) after start: No such file or directory
With this patch, an early startup error like in the example above, is now
reported correctly in "systemctl start":
# systemctl start cpuplugd
Job for cpuplugd.service failed because the control process exited...
See "systemctl status cpuplugd.service" and "journalctl -xe" for ...
# journalctl -ex | grep cpuplugd
Nov 16 15:52:27 ... cpuplugd[5096]: Opening configuration file failed:
No such file or directory
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
---
cpuplugd/cpuplugd.h | 2 -
cpuplugd/daemon.c | 60 ++++++++++++++++++++++++++++++++++++++++++--
cpuplugd/main.c | 4 --
systemd/cpuplugd.service.in | 5 ++-
4 files changed, 63 insertions(+), 8 deletions(-)
--- a/cpuplugd/cpuplugd.h
+++ b/cpuplugd/cpuplugd.h
@@ -197,10 +197,10 @@ int is_online(int cpuid);
long get_cmmpages_size();
void parse_options(int argc, char **argv);
void check_if_started_twice();
-void store_pid(void);
void handle_signals(void);
void handle_sighup(void);
void reload_daemon(void);
+int daemonize(void);
int check_cmmfiles(void);
void check_config();
void set_cmm_pages(long size);
--- a/cpuplugd/daemon.c
+++ b/cpuplugd/daemon.c
@@ -9,6 +9,10 @@
* it under the terms of the MIT license. See LICENSE for details.
*/
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
#include "cpuplugd.h"
const char *name = NAME;
@@ -49,7 +53,7 @@ void print_version()
/*
* Store daemon's pid so it can be stopped
*/
-void store_pid(void)
+static int store_pid(void)
{
FILE *filp;
@@ -57,10 +61,62 @@ void store_pid(void)
if (!filp) {
cpuplugd_error("cannot open pid file %s: %s\n", pid_file,
strerror(errno));
- exit(1);
+ return -1;
}
fprintf(filp, "%d\n", getpid());
fclose(filp);
+ return 0;
+}
+
+/*
+ * Run daemon in background and write pid file
+ */
+int daemonize(void)
+{
+ int fd, pipe_fds[2], startup_rc = 1;
+ pid_t pid;
+
+ if (pipe(pipe_fds) == -1) {
+ cpuplugd_error("cannot create pipe\n");
+ return -1;
+ }
+ pid = fork();
+ if (pid < 0)
+ goto close_pipe;
+ if (pid != 0) {
+ /* Wait for startup return code from daemon */
+ if (read(pipe_fds[0], &startup_rc, sizeof(startup_rc)) == -1)
+ cpuplugd_error("cannot read from pipe\n");
+ /* On success daemon has written pid file at this point */
+ exit(startup_rc);
+ }
+ /* Create new session */
+ if (setsid() < 0)
+ goto notify_parent;
+ /* Redirect stdin/out/err to /dev/null */
+ fd = open("/dev/null", O_RDWR, 0);
+ if (fd == -1)
+ goto notify_parent;
+ if (dup2(fd, STDIN_FILENO) < 0)
+ goto notify_parent;
+ if (dup2(fd, STDOUT_FILENO) < 0)
+ goto notify_parent;
+ if (dup2(fd, STDERR_FILENO) < 0)
+ goto notify_parent;
+ /* Create pid file */
+ if (store_pid() < 0)
+ goto notify_parent;
+ startup_rc = 0;
+notify_parent:
+ /* Inform waiting parent about startup return code */
+ if (write(pipe_fds[1], &startup_rc, sizeof(startup_rc)) == -1) {
+ cpuplugd_error("cannot write to pipe\n");
+ startup_rc = 1;
+ }
+close_pipe:
+ close(pipe_fds[0]);
+ close(pipe_fds[1]);
+ return startup_rc ? -1 : 0;
}
/*
--- a/cpuplugd/main.c
+++ b/cpuplugd/main.c
@@ -418,13 +418,11 @@ int main(int argc, char *argv[])
check_config();
if (!foreground) {
- rc = daemon(1, 0);
+ rc = daemonize();
if (rc < 0)
cpuplugd_exit("Detach from terminal failed: %s\n",
strerror(errno));
}
- /* Store daemon pid */
- store_pid();
/* Unlock lock file */
flock(fd, LOCK_UN);
close(fd);
--- a/systemd/cpuplugd.service.in
+++ b/systemd/cpuplugd.service.in
@@ -13,10 +13,11 @@ Documentation=man:cpuplugd(8) man:cpuplu
After=remote-fs.target
[Service]
-ExecStart=@usrsbin_path@/cpuplugd -f -c /etc/cpuplugd.conf
+ExecStart=@usrsbin_path@/cpuplugd -c /etc/cpuplugd.conf
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
-Type=simple
+Type=forking
+PIDFile=/var/run/cpuplugd.pid
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,110 @@
Subject: [PATCH] [BZ 161888] lsluns: clarify discovery use case, relation to NPIV and to zfcp auto LUN scan
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: 0daa7ba0b558ff22fa1c1e014e754cbd08366c00
Problem-ID: 161888
Upstream-Description:
lsluns: clarify discovery use case, relation to NPIV and to zfcp auto LUN scan
Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns | 3 +++
zconf/lsluns.8 | 18 ++++++++++++++++++
2 files changed, 21 insertions(+)
--- a/zconf/lsluns
+++ b/zconf/lsluns
@@ -174,6 +174,9 @@ $PROGRAM_NAME [-c <busid>] ... [-p <wwpn
List LUNs discovered in the Fibre Channel (FC) Storage Area Network (SAN).
This causes extra SAN traffic for each target port WWPN.
+ Discovering LUNs only makes sense for NPIV-enabled FCP devices
+ without zfcp automatic LUN scan. zfcp automatic LUN scan is available
+ as of kernel version 2.6.37, if not disabled with zfcp.allow_lun_scan=0.
$PROGRAM_NAME -a [-c <busid>] ... [-p <wwpn>] ... [-h] [-v]
--- a/zconf/lsluns.8
+++ b/zconf/lsluns.8
@@ -46,6 +46,24 @@ encryption, use other tools such as
or
.BR "lsscsi \-tv" .
+.SS Details on lsluns without -a option
+
+.TP
+Prerequisite
+Discovering LUNs only makes sense for NPIV-enabled FCP devices
+without zfcp automatic LUN scan. zfcp automatic LUN scan is available
+as of kernel version 2.6.37, if not disabled with zfcp.allow_lun_scan=0.
+
+With available and enabled zfcp automatic LUN scan,
+the kernel already performs LUN discovery.
+
+.TP
+Temporary LUN Attachment
+If not attached already, lsluns temporarily attaches LUN 0
+(or if this fails the WLUN 0xc101000000000000) during runtime.
+Do not terminate lsluns with a signal. Signals interfere
+with the removal of temporarily attached LUNs.
+
.SH OPTIONS
.TP
.BR \-a ", " \-\-active

View File

@ -0,0 +1,104 @@
Subject: [PATCH] [BZ 161888] lsluns: complement alternative tools with lszdev
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: e5f9279295780bd297f58cc23319878fadbc80f1
Problem-ID: 161888
Upstream-Description:
lsluns: complement alternative tools with lszdev
Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns | 3 ++-
zconf/lsluns.8 | 7 +++++--
2 files changed, 7 insertions(+), 3 deletions(-)
--- a/zconf/lsluns
+++ b/zconf/lsluns
@@ -192,7 +192,8 @@ $PROGRAM_NAME -a [-c <busid>] ... [-p <w
This causes extra SAN traffic for each attached LUN.
For all other uses, such as listing attached LUNs or properties other than
-encryption, use other tools such as "lszfcp -D" or "lsscsi -tv".
+encryption, use other tools such as "lszfcp -D" or "lsscsi -tv"
+or "lszdev zfcp-lun -ii".
Limit the listing by specifying one or more adapters (FCP device
bus-IDs) or target port WWPNs or both.
--- a/zconf/lsluns.8
+++ b/zconf/lsluns.8
@@ -48,7 +48,9 @@ For all other uses, such as listing atta
encryption, use other tools such as
.B lszfcp \-D
or
-.BR "lsscsi \-tv" .
+.BR "lsscsi \-tv"
+or
+.BR "lszdev zfcp-lun \-ii" .
.SS Details on lsluns without -a option
@@ -135,4 +137,5 @@ indicates that the device is encrypted.
.SH "SEE ALSO"
.BR lszfcp (8),
-.BR lsscsi (8)
+.BR lsscsi (8),
+.BR lszdev (8)

View File

@ -0,0 +1,125 @@
Subject: [PATCH] [BZ 161888] lsluns: do not print confusing messages when a filter matches nothing
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: c993ad89c544dd162005a9a1e582b51667c46b66
Problem-ID: 161888
Upstream-Description:
lsluns: do not print confusing messages when a filter matches nothing
lsluns printed potentially confusing messages when a filter or combination
of filters matched nothing:
No valid combination found for adapter '0.0.1906'. Removing from
resource list.
No valid combination found for port '0x50050763071845e3'. Removing from
resource list.
...
To the user it is potentially unclear which 'combination' is actually being
referred to, as only one part of the combination is mentioned, and what the
ominous 'resource list' is. The later information is merely useful for a
developer to debug the script.
Such a message was written for every user supplied filter that did not
contribute anything to the resulting subset that is being listed, although
the filter actually might match something when used standalone.
Additionally those messages were printed to stdout instead of stderr. As
there is no debug or verbose switch and the information level of those
messages is low, we may simply discard them.
Reported-by: Steffen Maier <maier@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns | 15 ---------------
1 file changed, 15 deletions(-)
--- a/zconf/lsluns
+++ b/zconf/lsluns
@@ -215,7 +215,6 @@ sub get_env_list
my $p_ref_list = shift();
my @res ;
my %res_hash;
- my @t_arr;
@res = </sys/bus/ccw/drivers/zfcp/*.*.*/0x*>;
return () if (!@res);
@@ -226,20 +225,6 @@ sub get_env_list
next if (@$p_ref_list && "@$p_ref_list" !~ /$p/);
push @{ $res_hash{$a} }, $p;
}
- foreach my $a (sort @$a_ref_list) {
- if ("@{[keys %res_hash]}" !~ /$a/) {
- print "\tNo valid combination found for adapter '$a'. ",
- "Removing from resource list.\n";
- }
- }
-
- push @t_arr, map { @{$res_hash{$_}} } keys %res_hash;
- foreach my $p (@$p_ref_list) {
- if ("@t_arr" !~ /$p/) {
- print "\tNo valid combination found for port '$p'. ",
- "Removing from resource list.\n";
- }
- }
if (!%res_hash) {
print "$PROGRAM_NAME: Adapter and/or port filter(s) did not match anything\n";

View File

@ -0,0 +1,111 @@
Subject: [PATCH] [BZ 161888] lsluns: do not scan (all) if filters match nothing
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: 398f9ceac8c20705f573671bde4bc482967f5c13
Problem-ID: 161888
Upstream-Description:
lsluns: do not scan (all) if filters match nothing
Fix the following undesired behavior of lsluns to scan all resources if the
user provided filters did not match anything:
No valid combination found for adapter '5080'. Removing from resource
list.
No valid parameters left, using all available resources in system.
Scanning for LUNs on adapter 0.0.5080
...
Scanning can be resource consumptive. So if a user already wants to filter,
possibly to reduce resource consumption, he does not want to happen to scan
everything and thus consume the worst case of resources.
Instead print a message to inform the user why nothing was scanned.
Reported-by: Steffen Maier <maier@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
--- a/zconf/lsluns
+++ b/zconf/lsluns
@@ -219,7 +219,6 @@ sub get_env_list
@res = </sys/bus/ccw/drivers/zfcp/*.*.*/0x*>;
return () if (!@res);
-reload:
foreach my $entry (@res) {
my $a = ${[split('/', $entry)]}[-2];
my $p = ${[split('/', $entry)]}[-1];
@@ -243,12 +242,7 @@ reload:
}
if (!%res_hash) {
- print "\nNo valid parameters left, ",
- "using all available resources in system.\n\n";
- @$a_ref_list = ();
- @$p_ref_list = ();
- @t_arr = ();
- goto reload;
+ print "$PROGRAM_NAME: Adapter and/or port filter(s) did not match anything\n";
}
return %res_hash;
}

View File

@ -0,0 +1,108 @@
Subject: [PATCH] [BZ 161888] lsluns: document restriction to zfcp-only systems
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: 55f0b001d15b3984967e7f87d6118232078e3fe5
Problem-ID: 161888
Upstream-Description:
lsluns: document restriction to zfcp-only systems
Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns | 4 ++++
zconf/lsluns.8 | 8 ++++++--
2 files changed, 10 insertions(+), 2 deletions(-)
--- a/zconf/lsluns
+++ b/zconf/lsluns
@@ -170,6 +170,10 @@ sub get_lun_hash
sub lsluns_usage {
print <<EOD;
Usage:
+This tool is designed for environments where all SCSI devices are attached
+through the zfcp device driver. Expect error messages in mixed environments
+such as with iSCSI.
+
$PROGRAM_NAME [-c <busid>] ... [-p <wwpn>] ... [-h] [-v]
List LUNs discovered in the Fibre Channel (FC) Storage Area Network (SAN).
--- a/zconf/lsluns.8
+++ b/zconf/lsluns.8
@@ -4,8 +4,8 @@
.\"
.TH LSLUNS 8 "2017-02-17" "s390-tools"
.SH NAME
-lsluns \- list LUNs discovered in the FC SAN, or show encryption state of
-attached LUNs
+lsluns \- list LUNs discovered in the FC SAN through zfcp, or show encryption state of
+zfcp-attached LUNs
.SH SYNOPSIS
.B lsluns
@@ -28,6 +28,10 @@ attached LUNs
.SH DESCRIPTION
.PP
+This tool is designed for environments where all SCSI devices are attached
+through the zfcp device driver. Expect error messages in mixed environments
+such as with iSCSI.
+
.B lsluns
lists all logical unit numbers (LUNs) discovered in the
Fibre Channel (FC) Storage Area Network (SAN).

View File

@ -0,0 +1,283 @@
Subject: [PATCH] [BZ 161888] lsluns: enhance usage statement and man page
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: e748fff3479f8f4ae7e8262b4913f6d08ff78f66
Problem-ID: 161888
Upstream-Description:
lsluns: enhance usage statement and man page
The wording in the lsluns usage statement and man page was misleading
in several aspects:
* lsluns does not list all LUNs, just those discovered in the FC SAN
* lsluns -a should only be used to display the LUN encryption status
Fix filter option arguments. Clarify filter option usage. Refer to
lszfcp and lsscsi.
Reported-by: Steffen Maier <maier@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns | 45 +++++++++++++++------------
zconf/lsluns.8 | 93 +++++++++++++++++++++++++++++++++++++++------------------
2 files changed, 91 insertions(+), 47 deletions(-)
--- a/zconf/lsluns
+++ b/zconf/lsluns
@@ -1,6 +1,6 @@
#!/usr/bin/perl
#
-# lsluns - Tool to list all available LUNs
+# lsluns - list LUNs discovered in the FC SAN, or show encryption state of attached LUNs
#
# Copyright IBM Corp. 2008, 2017
#
@@ -169,32 +169,39 @@ sub get_lun_hash
sub lsluns_usage {
print <<EOD;
-Usage: $PROGRAM_NAME [<options>]
+Usage:
+$PROGRAM_NAME [-c <busid>] ... [-p <wwpn>] ... [-h] [-v]
- lsluns provides information for LUNs.
+ List LUNs discovered in the Fibre Channel (FC) Storage Area Network (SAN).
+ This causes extra SAN traffic for each target port WWPN.
- The default is to list all LUNs that are available via the attached ports.
- The display can be limited by specifying an adapter or a port.
+$PROGRAM_NAME -a [-c <busid>] ... [-p <wwpn>] ... [-h] [-v]
+
+ Show encryption state of the attached LUNs.
+ This causes extra SAN traffic for each attached LUN.
+
+For all other uses, such as listing attached LUNs or properties other than
+encryption, use other tools such as "lszfcp -D" or "lsscsi -tv".
+
+Limit the listing by specifying one or more adapters (FCP device
+bus-IDs) or target port WWPNs or both.
Options:
- -a, --active
- Shows all activated LUNs.
- In addition LUN encryption information is provided.
- e.g. "lsluns -a"
-
- -c, --ccw
- Shows LUNs for a specific ccw device.
- e.g. "lsluns -c 0.0.3922"
-
- -p, --port
- Shows LUNs for a specific port.
- e.g. "lsluns -p 0x5005123456789000"
+ -c <busid>, --ccw <busid>
+ Filter LUNs by adapter with the specified FCP device bus-ID. Can be
+ specified multiple times.
+ For example: "$PROGRAM_NAME -c 0.0.3922"
+
+ -p <wwpn>, --port <wwpn>
+ Filter LUNs by target port with the specified WWPN. Can be specified
+ multiple times.
+ For example: "$PROGRAM_NAME -p 0x5005123456789000"
-h, --help
- Print help message and exit.
+ Print help message and exit.
-v, --version
- Display version info and exit.
+ Display version information and exit.
EOD
exit 0;
}
--- a/zconf/lsluns.8
+++ b/zconf/lsluns.8
@@ -2,61 +2,93 @@
.\" s390-tools is free software; you can redistribute it and/or modify
.\" it under the terms of the MIT license. See LICENSE for details.
.\"
-.TH LSLUNS 8 "June 2008" "s390-tools"
+.TH LSLUNS 8 "2017-02-17" "s390-tools"
.SH NAME
-lsluns \- list available LUNs
+lsluns \- list LUNs discovered in the FC SAN, or show encryption state of
+attached LUNs
.SH SYNOPSIS
.B lsluns
+.RB [\| \-c
+.IR busid \|]\ .\|.\|.
+.RB [\| \-p
+.IR wwpn \|]\ .\|.\|.
+.\" --active
+.br
+.B lsluns \-a
+.RB [\| \-c
+.IR busid \|]\ .\|.\|.
+.RB [\| \-p
+.IR wwpn \|]\ .\|.\|.
+.\" --help and --version
+.br
+.B lsluns
.RB [\| \-h \|]
.RB [\| \-v \|]
-.RB [\| \-c
-.IR adapter\ id:0.0.XXXX \|]\ .\|.\|.
-.RB [ \-p
-.IR port\ number:0xXXXXXXXXXXXXXXXX \|]\ .\|.\|.
.SH DESCRIPTION
.PP
.B lsluns
-does a listing of all available LUNs.
-
-The default is to list all LUNs that are found. The listing can be
-limited by specifying an adapter or a port.
+lists all logical unit numbers (LUNs) discovered in the
+Fibre Channel (FC) Storage Area Network (SAN).
+This causes extra SAN traffic for each target port WWPN.
+
+.B lsluns -a
+shows the encryption state of the attached LUNs.
+This causes extra SAN traffic for each attached LUN.
+
+Limit the listing by specifying one or more adapters (FCP device
+bus-IDs) or target port WWPNs or both.
+
+For all other uses, such as listing attached LUNs or properties other than
+encryption, use other tools such as
+.B lszfcp \-D
+or
+.BR "lsscsi \-tv" .
.SH OPTIONS
.TP
+.BR \-a ", " \-\-active
+Show the encryption state of the attached LUNs. Encrypted devices are indicated
+with a bracketed X immediately following the LUN number.
+.TP
+.BI \-c\ busid \fR,\ \fB\-\-ccw= busid
+Filter LUNs by adapter with the specified FCP device bus-ID. This option can be
+specified multiple times. When used in conjunction with \fB\-p\fR, only those
+LUNs are listed that also satisfy at least one of the \fB\-p\fR constraints.
+.TP
+.BI \-p\ wwpn \fR,\ \fB\-\-port= wwpn
+Filter LUNs by target port with the specified WWPN. This option can be
+specified multiple times. When used in conjunction with \fB\-c\fR, only those
+LUNs are listed that also satisfy at least one of the \fB\-c\fR constraints.
+.TP
.BR \-h ", " \-\-help
Print help message and exit.
.TP
.BR \-v ", " \-\-version
-Display version info and exit.
-.TP
-.BI \-c\ adapter \fR,\ \fB\-\-ccw= adapter
-Shows LUNs for a specific adapter.
-.TP
-.BI \-p\ port \fR,\ \fB\-\-port= port
-Shows LUNs for a specific port.
-.TP
-.BR \-a ", " \-\-active
-Shows all activated LUNs. In addition information is provided
-whether the LUN is encrypted or not. This is indicated with a bracketed X
-right after the LUN number.
+Display version information and exit.
.SH EXAMPLES
.TP
.B "lsluns"
.RS
-Shows all available LUNs.
+Lists all LUNs discovered in the FC SAN.
.RE
.TP
.BI "lsluns \-c " 0.0.3922
-Shows all LUNs found on adapter \fI0.0.3922\fR.
+Lists all LUNs discovered in the FC SAN on adapter \fI0.0.3922\fR.
.TP
.BI "lsluns \-p " 0x5005123456789000
-Shows all LUNs for port \fI0x5005123456789000\fR.
+Lists all LUNs discovered in the FC SAN on target port
+\fI0x5005123456789000\fR.
.TP
-.BI "lsluns \-c " 0.0.3922 " \-p " 0x5005123456789000
-Shows all LUNs for adapter \fI0.0.3922\fR and port \fI0x5005123456789000\fR.
+.BI "lsluns \-c " 0.0.3922 " \-c " 0.0.fc00 \
+" \-p " 0x5005123456789000 " \-p " 0x5005abcdefabc000
+Lists all LUNs discovered in the FC SAN on:
+adpater \fI0.0.3922\fR and port \fI0x5005123456789000\fR,
+adapter \fI0.0.3922\fR and port \fI0x5005abcdefabc000\fR,
+adapter \fI0.0.fc00\fR and port \fI0x5005123456789000\fR, or
+adapter \fI0.0.fc00\fR and port \fI0x5005abcdefabc000\fR.
.TP
.B "lsluns -a"
adapter = 0.0.3c02
@@ -64,4 +96,9 @@ adapter = 0.0.3c02
lun = 0x401040a200000000(X) /dev/sg0 Disk IBM:2107900
lun = 0x401040a300000000 /dev/sg1 Disk IBM:2107900
-Shows all active LUNs including the information whether the device is encrypted or not.
+Shows the encryption status of attached LUNs. A bracketed X suffixed to a LUN
+indicates that the device is encrypted.
+
+.SH "SEE ALSO"
+.BR lszfcp (8),
+.BR lsscsi (8)

View File

@ -0,0 +1,170 @@
Subject: [PATCH] [BZ 161888] lsluns: fix flawed formatting of man page
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: d81c4234295f481559a74fb5ad5f498692ff5738
Problem-ID: 161888
Upstream-Description:
lsluns: fix flawed formatting of man page
The formatting in the SYNOPSIS, OPTIONS, and EXAMPLES sections was flawed
in the lsluns(8) man page:
* The comma between short and long options were erroneously formatted in
bold, which would indicate to be typed exactly as shown. [see man(1)]
* The option parameters (e.g. adapter and port) were erroneously formatted
in bold instead of italic text (usually displayed as underlined on the
console), which would again indicate to be typed exactly as shown instead
of to be replaced with the appropriate argument. [see man(1)]
* Ellipses were missing after the the options that may be specified multiple
times (e.g. adapter and port). [see man(1)]
* Dashes in options in the SYNOPSIS and OPTIONS section needed to be
escaped. [see man-pages(7)]
* User input in example shell sessions should have been formatted in bold.
[see man-pages(7)]
Correct formatting based on man(7) and man-pages(7) man pages as reference.
Add proper spacing between options and their surrounding square brackets and
between the three periods of ellipses.
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns.8 | 42 +++++++++++++++++++++++-------------------
1 file changed, 23 insertions(+), 19 deletions(-)
--- a/zconf/lsluns.8
+++ b/zconf/lsluns.8
@@ -8,12 +8,12 @@ lsluns \- list available LUNs
.SH SYNOPSIS
.B lsluns
-.RB [ \-h]
-.RB [ \-v]
-.RB [ \-c
-.IR adapter id:0.0.XXXX ]
+.RB [\| \-h \|]
+.RB [\| \-v \|]
+.RB [\| \-c
+.IR adapter\ id:0.0.XXXX \|]\ .\|.\|.
.RB [ \-p
-.IR port number:0xXXXXXXXXXXXXXXXX ]
+.IR port\ number:0xXXXXXXXXXXXXXXXX \|]\ .\|.\|.
.SH DESCRIPTION
.PP
@@ -25,36 +25,40 @@ limited by specifying an adapter or a po
.SH OPTIONS
.TP
-.B -h, --help
+.BR \-h ", " \-\-help
Print help message and exit.
.TP
-.B -v, --version
+.BR \-v ", " \-\-version
Display version info and exit.
.TP
-.B -c, --ccw
+.BI \-c\ adapter \fR,\ \fB\-\-ccw= adapter
Shows LUNs for a specific adapter.
.TP
-.B -p, --port
+.BI \-p\ port \fR,\ \fB\-\-port= port
Shows LUNs for a specific port.
.TP
-.B -a, --active
+.BR \-a ", " \-\-active
Shows all activated LUNs. In addition information is provided
whether the LUN is encrypted or not. This is indicated with a bracketed X
right after the LUN number.
.SH EXAMPLES
-.PP
-.IP "lsluns"
+.TP
+.B "lsluns"
.RS
Shows all available LUNs.
.RE
-.IP "lsluns -c 0.0.3922"
-Shows all LUNs found on adapter 0.0.3922.
-.IP "lsluns -p 0x5005123456789000"
-Shows all LUNs for port 0x5005123456789000.
-.IP "lsluns -c 0.0.3922 -p 0x5005123456789000"
-Shows all LUNs for adapter 0.0.3922 and port 0x5005123456789000.
-.IP "lsluns -a "
+.TP
+.BI "lsluns \-c " 0.0.3922
+Shows all LUNs found on adapter \fI0.0.3922\fR.
+.TP
+.BI "lsluns \-p " 0x5005123456789000
+Shows all LUNs for port \fI0x5005123456789000\fR.
+.TP
+.BI "lsluns \-c " 0.0.3922 " \-p " 0x5005123456789000
+Shows all LUNs for adapter \fI0.0.3922\fR and port \fI0x5005123456789000\fR.
+.TP
+.B "lsluns -a"
adapter = 0.0.3c02
port = 0x500507630300c562
lun = 0x401040a200000000(X) /dev/sg0 Disk IBM:2107900

View File

@ -0,0 +1,105 @@
Subject: [PATCH] [BZ 161888] lsluns: point out IBM Storwize configuration requirements
From: Jens Remus <jremus@linux.vnet.ibm.com>
Description: lsluns: Fix filter handling and documentation enhancements.
Symptom: lsluns lists all LUNs discovered in the FC SAN despite user
given filter(s) that do not match anything:
# lsluns -c 0.0.5080
No valid combination found for adapter '0.0.5080'. Removing
from resource list.
No valid parameters left, using all available resources in
system.
Scanning for LUNs on adapter 0.0.5090
...
lsluns prints the message "No valid combination found for
{adapter|port} '...'. Removing from resource list." for every
adapter and port filter that does not contribute to the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
lsluns is used in unexpected or even unsupported ways.
Problem: Scanning can be resource consumptive. So if a user already wants
to filter, possibly to reduce resource consumption, he does not
want to happen to scan everything and thus consume the worst case
of resources.
The message "No valid combination found for {adapter|port} '...'.
Removing from resource list." is potentially confusing. It is
unclear which combination is being referred to, especially if
only one single adapter or port filter was specified. There is
also no differentiation whether the denoted adapter or port
exists for its own or not. It just does not exist in the final
filtered results.
The formatting of the lsluns (8) man page is flawed.
The lsluns usage text and lsluns (8) man page lack the
information on the intended use cases, requirements, and
restrictions.
Solution: Print a message and exit when all filters match nothing.
Do not print confusing messages when a filter matches nothing.
Fix man page formatting.
Enhance usage text and man page. Clarify discovery use case,
relation to NPIV and to zfcp auto LUN scan. Point out
IBM Storwize configuration requirements. Document restriction to
zfcp-only systems.
Reproduction: Use lsluns and specify adapter bus-ID and/or target port WWPN
filter(s) that do not match anything. Either specify inexistent
bus-IDs and/or WWPNs or invalid filter arguments.
Upstream-ID: 5f768dd52d87efddbd7efa23d57c6da62281728b
Problem-ID: 161888
Upstream-Description:
lsluns: point out IBM Storwize configuration requirements
Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.vnet.ibm.com>
---
zconf/lsluns | 4 ++++
zconf/lsluns.8 | 12 ++++++++++++
2 files changed, 16 insertions(+)
--- a/zconf/lsluns
+++ b/zconf/lsluns
@@ -177,6 +177,10 @@ $PROGRAM_NAME [-c <busid>] ... [-p <wwpn
Discovering LUNs only makes sense for NPIV-enabled FCP devices
without zfcp automatic LUN scan. zfcp automatic LUN scan is available
as of kernel version 2.6.37, if not disabled with zfcp.allow_lun_scan=0.
+ For storage products that do not support a REPORT LUNS
+ well-known logical unit (such as IBM Storwize products),
+ ensure that LUN 0 represents a valid peripheral device type.
+ See the man page for more information.
$PROGRAM_NAME -a [-c <busid>] ... [-p <wwpn>] ... [-h] [-v]
--- a/zconf/lsluns.8
+++ b/zconf/lsluns.8
@@ -64,6 +64,18 @@ If not attached already, lsluns temporar
Do not terminate lsluns with a signal. Signals interfere
with the removal of temporarily attached LUNs.
+.TP
+Storage Products
+Some storage products return a peripheral device type of 31==0x1f
+with peripheral qualifier 0 in a SCSI standard INQUIRY command
+for an unmapped FCP LUN 0. Examples are: IBM Storwize products,
+including IBM V7000, IBM V840, IBM V9000, and IBM SAN Volume Controller.
+For lsluns to work with such storage products,
+you must have a host mapping on the storage, which maps some volume
+to exported FCP LUN 0x0000000000000000 (Storwize host map property "SCSI ID" 0)
+for each used FCP-device initiator WWPN. The volume can be
+a minimum-sized thin-provisioned shared stand-in volume.
+
.SH OPTIONS
.TP
.BR \-a ", " \-\-active

View File

@ -0,0 +1,290 @@
Subject: [PATCH] [BZ 161563] mon_tools: Improve systemctl start error handling
From: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Description: cpuplugd, mon_tools: Improve systemctl start error handling
Symptom: "systemctl start cpuplugd/mon_procd/mon_fsstatd" does not
report any errors in case the startup fails.
Problem: For type=simple, systemd forks/execs the process and if that
is successful, it immediately returns. There is no way to
find out if the initial startup fails.
Solution: Use type=fork and run the process in the background. In this
case systemd waits until the initial process returns.
In addition, use PIDFile and ensure that the pid file is
already available when the initial process returns. To
achieve this, use startup synchronization via pipe.
Reproduction: Add invalid values to the config files and start the daemons
with "systemctl start cpuplugd/mon_procd/mon_fsstatd".
Upstream-ID: 780133f825687bc931489aaf13959c793d2a4501
Problem-ID: 161563
Upstream-Description:
mon_tools: Improve systemctl start error handling
This fixes the same issue as in commit 82c8148983fc ("cpuplugd: Improve
systemctl start error handling") for mon_tools (mon_procd and mon_fsstatd).
Currently "systemctl start mon_procd/fsstatd" does not report any errors
in case the startup fails.
Example (with mon_procd):
(change interval in /etc/sysconfig/mon_procd to an invalid value "abc")
# systemctl start mon_procd
The reason is that for type=simple systemd forks/execs mon_procd and if
that is successful immediately returns. There is no way to find out if the
initial startup fails.
Fix this by using type=fork and running the process in the background. In
this case systemd waits until the initial process returns.
In addition use PIDFile and ensure that the pid file is already available
when the initial process returns. To achieve this, use startup
synchronization via pipe. Without that systemd would print the following
warning:
systemd[1]: mon_procd.service: PID file /var/run/mon_procd.pid not readable
(yet?) after start: No such file or directory
With this patch, an early startup error like in the example above, is now
reported correctly in "systemctl start":
# systemctl start mon_procd
Job for mon_procd.service failed because the control process exited...
See "systemctl status mon_procd.service" and "journalctl -xe" for ...
# journalctl -xe | grep mon_procd
mon_procd[3184]: Error: Invalid interval (needs to be greater than 0)
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
---
mon_tools/mon_fsstatd.c | 40 ++++++++++++++++++++++++++++++++--------
mon_tools/mon_procd.c | 40 ++++++++++++++++++++++++++++++++--------
systemd/mon_fsstatd.service.in | 5 +++--
systemd/mon_procd.service.in | 5 +++--
4 files changed, 70 insertions(+), 20 deletions(-)
--- a/mon_tools/mon_fsstatd.c
+++ b/mon_tools/mon_fsstatd.c
@@ -90,17 +90,18 @@ static void fsstatd_open_monwriter(void)
/*
* Store daemon's pid so it can be stopped
*/
-static void store_pid(void)
+static int store_pid(void)
{
FILE *f = fopen(pid_file, "w");
if (!f) {
syslog(LOG_ERR, "cannot open pid file %s: %s", pid_file,
strerror(errno));
- exit(1);
+ return -1;
}
fprintf(f, "%d\n", getpid());
fclose(f);
+ return 0;
}
/*
@@ -244,41 +245,64 @@ static void fsstatd_write_ent(struct mnt
*/
static void fsstatd_daemonize(void)
{
+ int pipe_fds[2], startup_rc = 1;
pid_t pid;
+ if (pipe(pipe_fds) == -1) {
+ syslog(LOG_ERR, "pipe error: %s\n", strerror(errno));
+ exit(1);
+ }
+
/* Fork off the parent process */
pid = fork();
if (pid < 0) {
syslog(LOG_ERR, "fork error: %s\n", strerror(errno));
exit(1);
}
- if (pid > 0)
- exit(0);
+ if (pid > 0) {
+ /* Wait for startup return code from daemon */
+ if (read(pipe_fds[0], &startup_rc, sizeof(startup_rc)) == -1)
+ syslog(LOG_ERR, "pipe read error: %s\n", strerror(errno));
+ /* With startup_rc == 0, pid file was written at this point */
+ exit(startup_rc);
+ }
/* Change the file mode mask */
umask(0);
- /* Store daemon pid */
- store_pid();
/* Catch SIGINT and SIGTERM to clean up pid file on exit */
fsstatd_handle_signals();
/* Create a new SID for the child process */
if (setsid() < 0) {
syslog(LOG_ERR, "setsid error: %s\n", strerror(errno));
- exit(1);
+ goto notify_parent;
}
/* Change the current working directory */
if (chdir("/") < 0) {
syslog(LOG_ERR, "chdir error: %s\n", strerror(errno));
- exit(1);
+ goto notify_parent;
}
/* Close out the standard file descriptors */
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
+
+ /* Store daemon pid */
+ if (store_pid() < 0)
+ goto notify_parent;
+ startup_rc = 0;
+
+notify_parent:
+ /* Inform waiting parent about startup return code */
+ if (write(pipe_fds[1], &startup_rc, sizeof(startup_rc)) == -1) {
+ syslog(LOG_ERR, "pipe write error: %s\n", strerror(errno));
+ exit(1);
+ }
+ if (startup_rc != 0)
+ exit(startup_rc);
}
static int fsstatd_do_work(void)
--- a/mon_tools/mon_procd.c
+++ b/mon_tools/mon_procd.c
@@ -109,17 +109,18 @@ static void procd_open_monwriter(void)
/*
* Store daemon's pid so it can be stopped
*/
-static void store_pid(void)
+static int store_pid(void)
{
FILE *f = fopen(pid_file, "w");
if (!f) {
syslog(LOG_ERR, "cannot open pid file %s: %s", pid_file,
strerror(errno));
- exit(1);
+ return -1;
}
fprintf(f, "%d\n", getpid());
fclose(f);
+ return 0;
}
/*
@@ -897,41 +898,64 @@ static void read_tasks(void)
*/
static void procd_daemonize(void)
{
+ int pipe_fds[2], startup_rc = 1;
pid_t pid;
+ if (pipe(pipe_fds) == -1) {
+ syslog(LOG_ERR, "pipe error: %s\n", strerror(errno));
+ exit(1);
+ }
+
/* Fork off the parent process */
pid = fork();
if (pid < 0) {
syslog(LOG_ERR, "fork error: %s\n", strerror(errno));
exit(1);
}
- if (pid > 0)
- exit(0);
+ if (pid > 0) {
+ /* Wait for startup return code from daemon */
+ if (read(pipe_fds[0], &startup_rc, sizeof(startup_rc)) == -1)
+ syslog(LOG_ERR, "pipe read error: %s\n", strerror(errno));
+ /* With startup_rc == 0, pid file was written at this point */
+ exit(startup_rc);
+ }
/* Change the file mode mask */
umask(0);
- /* Store daemon pid */
- store_pid();
/* Catch SIGINT and SIGTERM to clean up pid file on exit */
procd_handle_signals();
/* Create a new SID for the child process */
if (setsid() < 0) {
syslog(LOG_ERR, "setsid error: %s\n", strerror(errno));
- exit(1);
+ goto notify_parent;
}
/* Change the current working directory */
if (chdir("/") < 0) {
syslog(LOG_ERR, "chdir error: %s\n", strerror(errno));
- exit(1);
+ goto notify_parent;
}
/* Close out the standard file descriptors */
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
+
+ /* Store daemon pid */
+ if (store_pid() < 0)
+ goto notify_parent;
+ startup_rc = 0;
+
+notify_parent:
+ /* Inform waiting parent about startup return code */
+ if (write(pipe_fds[1], &startup_rc, sizeof(startup_rc)) == -1) {
+ syslog(LOG_ERR, "pipe write error: %s\n", strerror(errno));
+ exit(1);
+ }
+ if (startup_rc != 0)
+ exit(startup_rc);
}
static int procd_do_work(void)
--- a/systemd/mon_fsstatd.service.in
+++ b/systemd/mon_fsstatd.service.in
@@ -30,10 +30,11 @@ EnvironmentFile=/etc/sysconfig/mon_fssta
ExecStartPre=-/sbin/modprobe monwriter
ExecStartPre=/sbin/udevadm settle --timeout=10
-ExecStart=@usrsbin_path@/mon_fsstatd -a -i $FSSTAT_INTERVAL
+ExecStart=@usrsbin_path@/mon_fsstatd -i $FSSTAT_INTERVAL
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
-Type=simple
+Type=forking
+PIDFile=/var/run/mon_fsstatd.pid
[Install]
WantedBy=multi-user.target
--- a/systemd/mon_procd.service.in
+++ b/systemd/mon_procd.service.in
@@ -30,10 +30,11 @@ EnvironmentFile=/etc/sysconfig/mon_procd
ExecStartPre=-/sbin/modprobe monwriter
ExecStartPre=/sbin/udevadm settle --timeout=10
-ExecStart=@usrsbin_path@/mon_procd -a -i $PROC_INTERVAL
+ExecStart=@usrsbin_path@/mon_procd -i $PROC_INTERVAL
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
-Type=simple
+Type=forking
+PIDFile=/var/run/mon_procd.pid
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,53 @@
From 2a6a28023bdfe127be68ac605f9a026a82884c80 Mon Sep 17 00:00:00 2001
From: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Date: Tue, 5 Dec 2017 15:40:23 +0100
Subject: [PATCH 1/4] zdev: Enable running chzdev from unknown root devices
When a persistent device configuration is changed, chzdev tries to
find out if it needs to perform additional steps to make this change
persistent. If this check fails, for example because the root device
is located on a RAM-disk, or on a device type not managed by chzdev,
the tool reports an error and exits with non-zero exit code:
chzdev: Could not determine device that provides /
or
chzdev: Could not determine device that provides loop0
This behavior unnecessarily restricts chzdev from being used in
scripted environments like an installation initial RAM-disk.
Fix this by removing the non-zero exit code and moving the message to
verbose output mode only.
Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
---
zdev/src/root.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/zdev/src/root.c b/zdev/src/root.c
index 7f0d39f..668bdbd 100644
--- a/zdev/src/root.c
+++ b/zdev/src/root.c
@@ -35,9 +35,14 @@ exit_code_t root_check(void)
/* Get list of devices that provide the root device. */
selected = selected_dev_list_new();
rc = select_by_path(NULL, selected, config_active, scope_mandatory,
- NULL, NULL, PATH_ROOT, err_print);
- if (rc)
+ NULL, NULL, PATH_ROOT, err_ignore);
+ if (rc) {
+ /* Running from an unknown root device is not an error. */
+ verb("Note: Could not determine if root device configuration "
+ "needs to be updated\n");
+ rc = 0;
goto out;
+ }
/* Determine if any of the devices or device types has been modified. */
mod = strlist_new();
--
2.13.6

View File

@ -0,0 +1,54 @@
From 0348a8443e5f15636f86ef2533a7d6e8fa5d936d Mon Sep 17 00:00:00 2001
From: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Date: Thu, 7 Dec 2017 17:21:11 +0100
Subject: [PATCH 4/4] zdev: Fix zdev dracut module aborting on unknown root
device
Running dracut when the root device is not known to zdev (for example
because it is located on a virtio block device) will cause the zdev
dracut module to incorrectly return an error in the installkernel()
function. As a result dracut aborts with an error.
Fix this by ensuring that the non-zero exit code resulting from lszdev
not being able to determine the root device is not passed on to the
calling function. Also remove unnecessary error output in this case
by leaving the install() function early when the root device is not
known to zdev.
Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
---
zdev/dracut/95zdev/module-setup.sh | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/zdev/dracut/95zdev/module-setup.sh b/zdev/dracut/95zdev/module-setup.sh
index 7c67cd7..4c13a65 100644
--- a/zdev/dracut/95zdev/module-setup.sh
+++ b/zdev/dracut/95zdev/module-setup.sh
@@ -29,13 +29,21 @@ depends() {
}
installkernel() {
- local _modules=$(lszdev --by-path / --columns MODULES --no-headings)
+ local _modules=$(lszdev --by-path / --columns MODULES --no-headings 2>/dev/null)
+ [ -z "$_modules" ] && return 0
[ ! -z "$_modules" ] && instmods $_modules
}
install() {
- local _tempfile=$(mktemp --tmpdir dracut-zdev.XXXXXX)
+ local _tempfile
+
+ # Exit early if root device type is unknown
+ if ! lszdev --by-path / >/dev/null 2>&1 ; then
+ return 0
+ fi
+
+ _tempfile=$(mktemp --tmpdir dracut-zdev.XXXXXX)
if chzdev --export - --persistent --by-path / >/dev/null 2>&1 ; then
# Use persistent configuration
--
2.13.6

View File

@ -22,7 +22,7 @@ diff --git a/common.mak b/common.mak
index b9a9f54..bb6cdf0 100644
--- a/common.mak
+++ b/common.mak
@@ -194,12 +194,14 @@ ALL_CFLAGS = -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE) \
@@ -193,12 +193,14 @@ ALL_CFLAGS = -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE) \
-DS390_TOOLS_LIBDIR=$(TOOLS_LIBDIR) \
-DS390_TOOLS_DATADIR=$(TOOLS_DATADIR) \
-DS390_TOOLS_SYSCONFDIR=$(SYSCONFDIR) \

View File

@ -0,0 +1,28 @@
Subject: [PATCH] [BZ 161467] ziomon: Re-add missing line in ziomon_fcpconf
From: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Description: ziomon: Re-add missing line in ziomon_fcpconf
Symptom: ziomon_fcpconf fails on startup with:
Global symbol "$map_dev" requires explicit package name ...
Problem: During the GPL to MIT conversion process from v1.39.0 to
v2.0.0 one line has been lost by accident.
Solution: Re-add that line again.
Reproduction: Call the ziomon_fcpconf tool.
Upstream-ID: 523d833eb31633673847b6da0edbd35903f14dc4
Problem-ID: 161467
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
---
ziomon/ziomon_fcpconf | 1 +
1 file changed, 1 insertion(+)
--- a/ziomon/ziomon_fcpconf
+++ b/ziomon/ziomon_fcpconf
@@ -58,6 +58,7 @@ sub store_mapper_devices
my $src_dir = shift();
my @entries = grep { ! /^\./ } dir_content($src_dir);
+ foreach my $map_dev (@entries) {
my $tf = catfile($src_dir, "$map_dev");
my $mm = `stat -L -c%t:%T $tf`;
chomp($mm);

View File

@ -0,0 +1,29 @@
Subject: [PATCH] [BZ 161183] zipl: remove invalid dasdview command line option
From: Stefan Haberland <sth@linux.vnet.ibm.com>
Description: zipl: remove invalid dasdview command line option
Symptom: zipl does not work when used with a lvm or device mapper
target.
Problem: The zipl_helper.device-mapper script uses dasdview with
an option "-f" that has been removed recently.
Solution: Remove "-f" from the dasdview call.
Reproduction: Run zipl on a lvm target.
Upstream-ID: -
Problem-ID: 161183
Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
---
zipl/src/zipl_helper.device-mapper | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/zipl/src/zipl_helper.device-mapper
+++ b/zipl/src/zipl_helper.device-mapper
@@ -623,7 +623,7 @@ sub get_dasd_info($)
my $type;
local *HANDLE;
- open(HANDLE, "$dasdview -x -f $dev 2>/dev/null|") or
+ open(HANDLE, "$dasdview -x $dev 2>/dev/null|") or
# dasdview returned with an error
return undef;
while (<HANDLE>) {

View File

@ -1,3 +1,46 @@
-------------------------------------------------------------------
Thu Dec 7 23:08:31 UTC 2017 - mpost@suse.com
- Added the following two patches (bsc#1071166):
s390-tools-sles15-zdev-Enable-running-chzdev-from-unknown-root-devices.patch
s390-tools-sles15-zdev-Fix-zdev-dracut-module-aborting-on-unknown-root.patch
-------------------------------------------------------------------
Tue Dec 5 17:49:35 UTC 2017 - mpost@suse.com
- Added the following patches (bsc#1070836):
s390-tools-sles15-cpuplugd-Improve-systemctl-start-error-handling.patch
s390-tools-sles15-mon_tools-Improve-systemctl-start-error-handling.patch
s390-tools-sles15-lsluns-do-not-scan-all-if-filters-match-nothing.patch
s390-tools-sles15-lsluns-do-not-print-confusing-messages-when-a-filter.patch
s390-tools-sles15-lsluns-fix-flawed-formatting-of-man-page.patch
s390-tools-sles15-lsluns-enhance-usage-statement-and-man-page.patch
s390-tools-sles15-lsluns-clarify-discovery-use-case-relation-to-NPIV-a.patch
s390-tools-sles15-lsluns-point-out-IBM-Storwize-configuration-requirem.patch
s390-tools-sles15-lsluns-document-restriction-to-zfcp-only-systems.patch
s390-tools-sles15-lsluns-complement-alternative-tools-with-lszdev.patch
-------------------------------------------------------------------
Tue Dec 5 15:46:44 UTC 2017 - mpost@suse.com
- Added "--no-root-update" to all the chzdev calls in the following
scripts for bsc#1071165:
ctc_configure
dasd_configure
qeth_configure
zfcp_disk_configure
zfcp_host_configure
-------------------------------------------------------------------
Thu Nov 30 20:22:09 UTC 2017 - mpost@suse.com
- Added the following patches (bsc#1068538)
* s390-tools-sles15-cpi-add-unit-install-section.patch
* s390-tools-sles15-zipl-remove-invalid-dasdview-command-line-option.patch
* s390-tools-sles15-ziomon-re-add-missing-line.patch
- Modified s390-tools-sles15-zdev-Use-correct-path-to-vmcp-binary.patch to
point to the correct line in the common.mk file.
-------------------------------------------------------------------
Thu Nov 23 13:41:27 UTC 2017 - rbrown@suse.com

View File

@ -122,6 +122,21 @@ Patch14: s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl
Patch15: s390-tools-sles15-Fix-truncation-warning.patch
Patch16: s390-tools-sles15-iucvterm-include-ctype-for-toupper.patch
Patch17: s390-tools-sles15-zdev-Use-correct-path-to-vmcp-binary.patch
Patch18: s390-tools-sles15-cpi-add-unit-install-section.patch
Patch19: s390-tools-sles15-zipl-remove-invalid-dasdview-command-line-option.patch
Patch20: s390-tools-sles15-ziomon-re-add-missing-line.patch
Patch21: s390-tools-sles15-cpuplugd-Improve-systemctl-start-error-handling.patch
Patch22: s390-tools-sles15-mon_tools-Improve-systemctl-start-error-handling.patch
Patch23: s390-tools-sles15-lsluns-do-not-scan-all-if-filters-match-nothing.patch
Patch24: s390-tools-sles15-lsluns-do-not-print-confusing-messages-when-a-filter.patch
Patch25: s390-tools-sles15-lsluns-fix-flawed-formatting-of-man-page.patch
Patch26: s390-tools-sles15-lsluns-enhance-usage-statement-and-man-page.patch
Patch27: s390-tools-sles15-lsluns-clarify-discovery-use-case-relation-to-NPIV-a.patch
Patch28: s390-tools-sles15-lsluns-point-out-IBM-Storwize-configuration-requirem.patch
Patch29: s390-tools-sles15-lsluns-document-restriction-to-zfcp-only-systems.patch
Patch30: s390-tools-sles15-lsluns-complement-alternative-tools-with-lszdev.patch
Patch31: s390-tools-sles15-zdev-Enable-running-chzdev-from-unknown-root-devices.patch
Patch32: s390-tools-sles15-zdev-Fix-zdev-dracut-module-aborting-on-unknown-root.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: s390 s390x
@ -195,6 +210,21 @@ to list files and directories.
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p1
%patch32 -p1
cp -vi %{S:22} CAUTION

View File

@ -62,11 +62,11 @@ FCP_WWPN=$(echo ${FCP_WWPN} | tr "A-Z" "a-z")
FCP_LUN=$(echo ${FCP_LUN} | tr "A-Z" "a-z")
if [ "${ON_OFF}" == 0 ]; then
debug_mesg "chzdev -d zfcp-lun ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}"
chzdev -d zfcp-lun ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}
debug_mesg "chzdev -d zfcp-lun --no-root-update ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}"
chzdev -d zfcp-lun --no-root-update ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}
elif [ "${ON_OFF}" == 1 ]; then
debug_mesg "chzdev -e zfcp-lun ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}"
chzdev -e zfcp-lun ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}
debug_mesg "chzdev -e zfcp-lun --no-root-update ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}"
chzdev -e zfcp-lun --no-root-update ${CCW_CHAN_ID}:${FCP_WWPN}:${FCP_LUN}
else mesg "You must specify a 0 or a 1 for the online/offline attribute."
usage
exit 1

View File

@ -74,11 +74,11 @@ if [ -z "${CCW_CHAN_ID}" ] || [ -z "${ON_OFF}" ]; then
fi
if [ "${ON_OFF}" == 0 ]; then
debug_mesg "chzdev -d zfcp-host ${CCW_CHAN_ID}"
chzdev -d zfcp-host ${CCW_CHAN_ID}
debug_mesg "chzdev -d zfcp-host --no-root-update ${CCW_CHAN_ID}"
chzdev -d zfcp-host --no-root-update ${CCW_CHAN_ID}
elif [ "${ON_OFF}" == 1 ]; then
debug_mesg "chzdev -e zfcp-host ${CCW_CHAN_ID}"
chzdev -e zfcp-host ${CCW_CHAN_ID}
debug_mesg "chzdev -e zfcp-host --no-root-update ${CCW_CHAN_ID}"
chzdev -e zfcp-host --no-root-update ${CCW_CHAN_ID}
else mesg "You must specify a 0 or a 1 for the online/offline attribute."
usage
exit 1