Accepting request 555142 from Base:System
OBS-URL: https://build.opensuse.org/request/show/555142 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/s390-tools?expand=0&rev=15
This commit is contained in:
commit
cfaef81101
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
27
s390-tools-sles15-cpi-add-unit-install-section.patch
Normal file
27
s390-tools-sles15-cpi-add-unit-install-section.patch
Normal 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
|
@ -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
|
@ -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
|
@ -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)
|
@ -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";
|
@ -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;
|
||||
}
|
@ -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).
|
@ -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)
|
170
s390-tools-sles15-lsluns-fix-flawed-formatting-of-man-page.patch
Normal file
170
s390-tools-sles15-lsluns-fix-flawed-formatting-of-man-page.patch
Normal 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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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) \
|
||||
|
28
s390-tools-sles15-ziomon-re-add-missing-line.patch
Normal file
28
s390-tools-sles15-ziomon-re-add-missing-line.patch
Normal 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);
|
@ -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>) {
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user