- additional patches to support Linux Hybrid Network Virtualization
- move commands that dont depend on perl to core subpackage - update hcnmgr patch - sys_ident: Skip length field from search - ofpathname: Use NVMe controller physical nsid
This commit is contained in:
parent
9b0e5ec27e
commit
f30d899cba
78
0001-ofpathname-Use-NVMe-controller-physical-nsid.patch
Normal file
78
0001-ofpathname-Use-NVMe-controller-physical-nsid.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
From 21c860888425762468d339950518ab8b0940ecea Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tyrel Datwyler <tyreld@linux.ibm.com>
|
||||||
|
Date: Mon, 5 Oct 2020 13:03:45 -0700
|
||||||
|
Subject: [PATCH] ofpathname: Use NVMe controller physical nsid
|
||||||
|
|
||||||
|
Linux creates logical block devices of the the form nvmeXnYpZ such that X = the
|
||||||
|
controller, Y = namepsace, and Z = partition. For example:
|
||||||
|
|
||||||
|
/dev/nvme0n1p1
|
||||||
|
|
||||||
|
The Linux namespace numbering scheme for namespaces always starts at 1 and
|
||||||
|
increases monotonically regardless of the actual numbering scheme of the
|
||||||
|
namespaces as seen by the physical NVMe controller. Accordingly, the Open
|
||||||
|
firmware path binding utilizes the namespace id as seen by the controller and
|
||||||
|
not the necessarily the one given in the logical block device name.
|
||||||
|
|
||||||
|
As such we need to use the "nsid" attribute in the sysfs entry for the logical
|
||||||
|
device to properly map back and forth from OP pathnames.
|
||||||
|
|
||||||
|
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
|
||||||
|
---
|
||||||
|
scripts/ofpathname | 24 ++++++++++++++++--------
|
||||||
|
1 file changed, 16 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/ofpathname b/scripts/ofpathname
|
||||||
|
index 2ceae25..41b8c5c 100755
|
||||||
|
--- a/scripts/ofpathname
|
||||||
|
+++ b/scripts/ofpathname
|
||||||
|
@@ -659,6 +659,11 @@ l2of_nvme()
|
||||||
|
devspec=`$CAT $PWD/device/devspec | tr -d '\000'`
|
||||||
|
if [[ -n $devspec ]]; then
|
||||||
|
found=1
|
||||||
|
+ if [[ -n $devnsid ]]; then
|
||||||
|
+ # Linux logical nsid might not match nvme controller nsid
|
||||||
|
+ goto_dir $dir "nsid"
|
||||||
|
+ devnsid=`$CAT $PWD/nsid | tr -d '\000'`
|
||||||
|
+ fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
@@ -1609,16 +1614,9 @@ of2l_nvme()
|
||||||
|
local dir
|
||||||
|
local link
|
||||||
|
|
||||||
|
- for dir in `$FIND /sys/block -name "nvme*n$nsid"`; do
|
||||||
|
+ for dir in `$FIND /sys/class/nvme -name "nvme[0-9]*"`; do
|
||||||
|
cd $dir
|
||||||
|
|
||||||
|
- link=`get_link "device"` # points to nvme[0-9]+ (non-namespace)
|
||||||
|
- if [[ -n $link ]]; then
|
||||||
|
- cd $link
|
||||||
|
- else
|
||||||
|
- continue
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
link=`get_link "device"` # points to pci address dir
|
||||||
|
if [[ -n $link ]]; then
|
||||||
|
cd $link
|
||||||
|
@@ -1635,6 +1633,16 @@ of2l_nvme()
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
+ for dir in `$FIND /sys/block -name "${LOGICAL_DEVNAME}n[0-9]*"`; do
|
||||||
|
+ cd $dir
|
||||||
|
+
|
||||||
|
+ local devnsid=`$CAT ./nsid 2>/dev/null`
|
||||||
|
+ if [[ $devnsid = $nsid ]]; then
|
||||||
|
+ LOGICAL_DEVNAME="${dir##*/}"
|
||||||
|
+ break
|
||||||
|
+ fi
|
||||||
|
+ done
|
||||||
|
+
|
||||||
|
if [[ -n $LOGICAL_DEVNAME ]] \
|
||||||
|
&& [[ -n $part ]]; then
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
13
0002-sys_ident--skip-length-field-from-search.patch
Normal file
13
0002-sys_ident--skip-length-field-from-search.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff -up powerpc-utils-1.3.8/src/sys_ident.c.me powerpc-utils-1.3.8/src/sys_ident.c
|
||||||
|
--- powerpc-utils-1.3.8/src/sys_ident.c.me 2020-10-06 15:35:56.620350621 +0200
|
||||||
|
+++ powerpc-utils-1.3.8/src/sys_ident.c 2020-10-06 15:36:31.468849936 +0200
|
||||||
|
@@ -267,7 +267,8 @@ print_proc_sn_value(void)
|
||||||
|
"parameter from RTAS\n");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
- pos = strstr(buf, "uid=");
|
||||||
|
+ /* Ignore length field (first 2 bytes) */
|
||||||
|
+ pos = strstr(buf +2, "uid=");
|
||||||
|
if (pos == NULL) {
|
||||||
|
fprintf(stderr, "Parameter from RTAS does "
|
||||||
|
"not contain uid\n");
|
@ -0,0 +1,162 @@
|
|||||||
|
commit 4b2d10942e2d964ecc1fe58c9460c34993ff10be
|
||||||
|
Author: Mingming Cao <mmc@linux.vnet.ibm.com>
|
||||||
|
Date: Thu Nov 19 21:38:24 2020 -0800
|
||||||
|
|
||||||
|
Disable vnic as backup vdevice for migratable SR_IOV
|
||||||
|
|
||||||
|
In version 1.0 we only allow configure ibmveth as
|
||||||
|
migritable SR_IOV backup vdevice. When ibmvnic become
|
||||||
|
more stablized we will enable vnic as backup.
|
||||||
|
|
||||||
|
Signed-off-by: Mingming Cao <mmc@linux.vnet.ibm.com>
|
||||||
|
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
|
||||||
|
|
||||||
|
diff --git a/scripts/hcnmgr b/scripts/hcnmgr
|
||||||
|
index 1135a85..0c09d8c 100644
|
||||||
|
--- a/scripts/hcnmgr
|
||||||
|
+++ b/scripts/hcnmgr
|
||||||
|
@@ -37,6 +37,8 @@ DRC_INDEX=0
|
||||||
|
DEVNAME=""
|
||||||
|
MODE=""
|
||||||
|
PHYSLOC=""
|
||||||
|
+VIO_TYPE=""
|
||||||
|
+VNIC_SPT=""
|
||||||
|
|
||||||
|
# Usage statements
|
||||||
|
usage() {
|
||||||
|
@@ -80,6 +82,7 @@ E_EPERM=1 # Platform not supported
|
||||||
|
E_BUSY=16 # Device busy
|
||||||
|
E_ENODEV=19 # Failed get device name
|
||||||
|
E_NOMODULE=5 # Failed to load bonding module
|
||||||
|
+E_INVAL_DEV=6 # Vdevice not supported
|
||||||
|
E_ENETUNREACH=101 # No network management command nmcli
|
||||||
|
|
||||||
|
#
|
||||||
|
@@ -93,19 +96,22 @@ err() {
|
||||||
|
|
||||||
|
case $eno in
|
||||||
|
"$E_INVAL")
|
||||||
|
- e_mesg="$HCNCMD:error code $eno, hybrid network ID HCNID does not exist"
|
||||||
|
+ e_mesg="$HCNCMD:error code $eno, Hybrid network ID HCNID does not exist"
|
||||||
|
+ ;;
|
||||||
|
+ "$E_INVAL_DEV")
|
||||||
|
+ e_mesg="$HCNCMD:error code $eno, Backing vdevice not supported"
|
||||||
|
;;
|
||||||
|
"$E_EPERM")
|
||||||
|
- e_mesg="$HCNCMD:error code $eno, platform is not supported"
|
||||||
|
+ e_mesg="$HCNCMD:error code $eno, Platform is not supported"
|
||||||
|
;;
|
||||||
|
"$E_BUSY")
|
||||||
|
- e_mesg="$HCNCMD:error code $eno, network device busy, no backup device"
|
||||||
|
+ e_mesg="$HCNCMD:error code $eno, Network device busy, no backup device"
|
||||||
|
;;
|
||||||
|
"$E_ENODEV")
|
||||||
|
- e_mesg="$HCNCMD:error code $eno, failed to find device or get device name"
|
||||||
|
+ e_mesg="$HCNCMD:error code $eno, Failed to find device or get device name"
|
||||||
|
;;
|
||||||
|
"$E_NOMODULE")
|
||||||
|
- e_mesg="$HCNCMD:error code $eno, failed to load bonding module"
|
||||||
|
+ e_mesg="$HCNCMD:error code $eno, Failed to load bonding module"
|
||||||
|
;;
|
||||||
|
"$E_ENETUNREACH")
|
||||||
|
e_mesg="$HCNCMD:error code $eno, nmcli command not installed"
|
||||||
|
@@ -147,6 +153,7 @@ hcnlog() {
|
||||||
|
esac
|
||||||
|
|
||||||
|
}
|
||||||
|
+
|
||||||
|
# function search_dev:
|
||||||
|
# Given DRX_INDEX, Search for device-tree, looking for migratable SR_IOV
|
||||||
|
# backend vnic or ibmveth device to configure hybrid network
|
||||||
|
@@ -171,6 +178,7 @@ search_dev() {
|
||||||
|
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
|
||||||
|
hcnlog DEBUG "search_dev: found device "
|
||||||
|
hcnlog DEBUG "search_dev: exit"
|
||||||
|
+ VIO_TYPE="SRIOV"
|
||||||
|
return $E_SUCCESS
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
@@ -184,6 +192,7 @@ search_dev() {
|
||||||
|
if [[ $index == "$1" ]]; then
|
||||||
|
hcnlog DEBUG "found matching drc_index $index in $dev"
|
||||||
|
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
|
||||||
|
+ VIO_TYPE="VNIC"
|
||||||
|
hcnlog DEBUG "search_dev: found device "
|
||||||
|
hcnlog DEBUG "search_dev: exit"
|
||||||
|
return $E_SUCCESS
|
||||||
|
@@ -201,6 +210,7 @@ search_dev() {
|
||||||
|
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
|
||||||
|
hcnlog DEBUG "search_dev: found device "
|
||||||
|
hcnlog DEBUG "search_dev: exit"
|
||||||
|
+ VIO_TYPE="L_LAN"
|
||||||
|
return $E_SUCCESS
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
@@ -340,6 +350,10 @@ do_config_vdevice() {
|
||||||
|
cfghcn() {
|
||||||
|
hcnlog DEBUG "cfghcn: enter $1"
|
||||||
|
search_dev "$1"
|
||||||
|
+ if [[ $VIO_TYPE == "VNIC" && $VNIC_SPT == "OFF" ]]; then
|
||||||
|
+ hcnlog WARN "Backing device $VIO_TYPE for Migratable VF is not supported in hcnmgr version $VERSION"
|
||||||
|
+ err $E_INVAL_DEV
|
||||||
|
+ fi
|
||||||
|
do_config_vdevice
|
||||||
|
return $E_SUCCESS
|
||||||
|
}
|
||||||
|
@@ -512,23 +526,10 @@ scanhcn() {
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
- hcnlog DEBUG "search vnic device with ibm,hcn-id propterty......"
|
||||||
|
+ hcnlog DEBUG "search ibmveth device with ibm,hcn-id propterty......"
|
||||||
|
# Look at every vNIC device with ibm,hcn-id propterty
|
||||||
|
# join or create bond for this hcnid if not exist, add vnic device as
|
||||||
|
# slave for this bond accosiated with hcnid, if not already to
|
||||||
|
- for dev in "$DT_PATH"/vdevice/vnic*; do
|
||||||
|
- [ -d "$dev" ] || continue
|
||||||
|
- if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
|
||||||
|
- hcnlog DEBUG "scanhcn found vnic device with hcnid "
|
||||||
|
- hcnlog INFO "scanhcn configure HCN and vnic device"
|
||||||
|
- do_config_vdevice
|
||||||
|
- fi
|
||||||
|
- done
|
||||||
|
-
|
||||||
|
- # Look at every veth device with ibm,hcn-id propterty
|
||||||
|
- # join or create bond for this hcnid if not exist, add ibmveth device as
|
||||||
|
- # slave for this bond accosiated with hcnid, if not already to
|
||||||
|
- hcnlog DEBUG "search ibmveth device with ibm,hcn-id propterty......"
|
||||||
|
for dev in "$DT_PATH"/vdevice/l-lan*; do
|
||||||
|
[ -d "$dev" ] || continue
|
||||||
|
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
|
||||||
|
@@ -538,6 +539,21 @@ scanhcn() {
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
+ if [[ $VNIC_SPT != "OFF" ]]; then
|
||||||
|
+ hcnlog DEBUG "search vnic device with ibm,hcn-id propterty......"
|
||||||
|
+ # Look at every vNIC device with ibm,hcn-id propterty
|
||||||
|
+ # join or create bond for this hcnid if not exist, add vnic device as
|
||||||
|
+ # slave for this bond accosiated with hcnid, if not already to
|
||||||
|
+ for dev in "$DT_PATH"/vdevice/vnic*; do
|
||||||
|
+ [ -d "$dev" ] || continue
|
||||||
|
+ if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
|
||||||
|
+ hcnlog DEBUG "scanhcn found vnic device with hcnid "
|
||||||
|
+ hcnlog INFO "scanhcn configure HCN and vnic device"
|
||||||
|
+ do_config_vdevice
|
||||||
|
+ fi
|
||||||
|
+ done
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
# Next clean up dead connections left from orgitinal LPAR after inactive miration
|
||||||
|
|
||||||
|
# list of all HCN ids
|
||||||
|
@@ -583,6 +599,9 @@ fi
|
||||||
|
if ! nmcli --version >/dev/null 2>&1; then
|
||||||
|
err $E_ENETUNREACH
|
||||||
|
fi
|
||||||
|
+if [[ $VERSION == "1.0" ]]; then
|
||||||
|
+ VNIC_SPT="OFF"
|
||||||
|
+fi
|
||||||
|
|
||||||
|
#Validate bonding module is loaded
|
||||||
|
if ! lsmod | grep -q bonding; then
|
@ -0,0 +1,86 @@
|
|||||||
|
commit e51995667279164a6c8ce4c3ba0217fffda22d6d
|
||||||
|
Author: Mingming Cao <mmc@linux.vnet.ibm.com>
|
||||||
|
Date: Thu Nov 19 21:41:31 2020 -0800
|
||||||
|
|
||||||
|
Clean up dead network config interface after inactive migration
|
||||||
|
|
||||||
|
With inactive parition migration, we found there are
|
||||||
|
dead network interface asscoiated with the SR_IOV from
|
||||||
|
source LPAR that still exist.
|
||||||
|
|
||||||
|
We need to cleanup the old network interface
|
||||||
|
related to this devname from source LPAR. Normally
|
||||||
|
in the active parition migration case, this was done
|
||||||
|
when HMC issue commands to OS remove the
|
||||||
|
VF from hybrid network. Because of the inactive
|
||||||
|
migration, the OS was not notified before migration
|
||||||
|
that the VF was removed, thus leaves the dead network
|
||||||
|
interface belongs on the original MVF on source lpar
|
||||||
|
not cleaned up. This cause the confusion of the network
|
||||||
|
manager to bring up the bondings with new MVFs at destination
|
||||||
|
LPAR.
|
||||||
|
|
||||||
|
After inactive parition migration the same devname
|
||||||
|
could possiblily used at the destination LPAR.
|
||||||
|
It can be assigned to a different hybrid
|
||||||
|
network (different hcnid). At the OS boot time,
|
||||||
|
the same devname but with different hcnid will
|
||||||
|
be configured. However the old network work interface
|
||||||
|
associated with the same devname from the source LPAR
|
||||||
|
has not been cleaned up yet.
|
||||||
|
|
||||||
|
This patch fix this by during the boot time scan and
|
||||||
|
if found an VFs has more than two bonding interfaces,
|
||||||
|
or has old VF ifcfg, removed the expired one.
|
||||||
|
|
||||||
|
Signed-off-by: Mingming Cao <mmc@linux.vnet.ibm.com>
|
||||||
|
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
|
||||||
|
|
||||||
|
diff --git a/scripts/hcnmgr b/scripts/hcnmgr
|
||||||
|
index 0c09d8c..a76505e 100644
|
||||||
|
--- a/scripts/hcnmgr
|
||||||
|
+++ b/scripts/hcnmgr
|
||||||
|
@@ -518,6 +518,27 @@ scanhcn() {
|
||||||
|
[ -d "$dev" ] || continue
|
||||||
|
if [ -e "$dev"/ibm,hcn-id ] && get_dev_hcn "$dev"; then
|
||||||
|
hcnlog DEBUG "scanhcn found sr-iov device with hcnid "
|
||||||
|
+
|
||||||
|
+ # After online from inactive migration, destination
|
||||||
|
+ # LPAR may have same mvf devname but associated with different
|
||||||
|
+ # bonding than from source LPAR
|
||||||
|
+ # clean up expired bonding SR_IOV connections
|
||||||
|
+
|
||||||
|
+ for cfg in $(ls $IFCONFIG_PATH | grep "$DEVNAME" | grep "bond"); do
|
||||||
|
+ hid=$(echo "$cfg" | sed -e 's/ifcfg-//' | cut -d '-' -f 1 | sed -e 's/bond//')
|
||||||
|
+ if [ -e "$IFCONFIG_PATH/ifcfg-$DEVNAME" ]; then
|
||||||
|
+ rm "$IFCONFIG_PATH/ifcfg-$DEVNAME"
|
||||||
|
+ fi
|
||||||
|
+ if [[ $hid != "" && $hid != "$HCNID" ]] ; then
|
||||||
|
+ hcnlog INFO "Delete dead bonding slave ifcfg file $IFCONFIG_PATH/$cfg"
|
||||||
|
+ rm $IFCONFIG_PATH/"$cfg"
|
||||||
|
+ if nmcli -f NAME con show | grep -q "bond$hid-$DEVNAME\s"; then
|
||||||
|
+ hcnlog INFO "Delete dead bonding connection $connection"
|
||||||
|
+ nmcli con delete "bond$hid-$DEVNAME"
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+ done
|
||||||
|
+
|
||||||
|
hcnlog INFO "scanhcn configure HCN and sr-iov device"
|
||||||
|
do_config_vdevice
|
||||||
|
# Save found HCN ids in array HcnIds
|
||||||
|
@@ -558,13 +579,12 @@ scanhcn() {
|
||||||
|
|
||||||
|
# list of all HCN ids
|
||||||
|
ids="${HcnIds[*]}"
|
||||||
|
-
|
||||||
|
# After inactive migration, LPAR may have old bonding connections
|
||||||
|
# with network device on original LPAR
|
||||||
|
- # clean up dead bonding connections
|
||||||
|
+ # clean up dead bonding connections
|
||||||
|
for connection in $(nmcli -f NAME con show | grep "${ids// /\\|}"); do
|
||||||
|
dev=$(echo "$connection" | cut -d '-' -f 2)
|
||||||
|
- if [ ! -e /sys/class/net/"$dev" ]; then
|
||||||
|
+ if [[ $dev != "NAME" && ! -e /sys/class/net/"$dev" ]]; then
|
||||||
|
hcnlog INFO "Delete dead bonding connection $connection"
|
||||||
|
nmcli con delete "$connection"
|
||||||
|
fi
|
@ -0,0 +1,94 @@
|
|||||||
|
commit f1ec5f04fdac3e87c3c85c2d85f79339d916e864
|
||||||
|
Author: Mingming Cao <mmc@linux.vnet.ibm.com>
|
||||||
|
Date: Thu Nov 19 21:30:40 2020 -0800
|
||||||
|
|
||||||
|
HNV fixes for qrydev and remove lsdevinfo
|
||||||
|
|
||||||
|
This patch fixes a few issues found during testing:
|
||||||
|
|
||||||
|
1) Fix qrydev checking for active interface error
|
||||||
|
|
||||||
|
2) Skip collecting lsdevinfo right before migration
|
||||||
|
When the LPARs has large number of devices, this can
|
||||||
|
take quite a long time and flood the log message.
|
||||||
|
|
||||||
|
3) Wait for OS ready to lookup device name for configure
|
||||||
|
HNV device. We need give OS longer time to prepare pci
|
||||||
|
device after DLPAR to show up for ofpathname(). We have
|
||||||
|
run into several issues HNV issues the hcncfgdrc command
|
||||||
|
to configure the vdevices before ofpathname able
|
||||||
|
to find the device name yet.
|
||||||
|
|
||||||
|
4) Currently the hybrid network virtualization is only
|
||||||
|
supported on PowerVM LPAR. We should allow exit the hcnmgr
|
||||||
|
gracefully on other power platform instead of return error.
|
||||||
|
|
||||||
|
Signed-off-by: Mingming Cao <mmc@linux.vnet.ibm.com>
|
||||||
|
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
|
||||||
|
|
||||||
|
diff --git a/scripts/hcnmgr b/scripts/hcnmgr
|
||||||
|
index e699c6a..1135a85 100644
|
||||||
|
--- a/scripts/hcnmgr
|
||||||
|
+++ b/scripts/hcnmgr
|
||||||
|
@@ -218,7 +218,7 @@ search_dev() {
|
||||||
|
# $1 path to device-tree device
|
||||||
|
#
|
||||||
|
get_dev_hcn() {
|
||||||
|
- local wait=30
|
||||||
|
+ local wait=12
|
||||||
|
local dev=$1
|
||||||
|
|
||||||
|
hcnlog DEBUG "get_dev_hcn: enter $1"
|
||||||
|
@@ -235,7 +235,7 @@ get_dev_hcn() {
|
||||||
|
fi
|
||||||
|
|
||||||
|
hcnlog DEBUG "ofpathname return $?, devname is $DEVNAME rety counter $wait"
|
||||||
|
- sleep 1
|
||||||
|
+ sleep 15
|
||||||
|
|
||||||
|
((wait--))
|
||||||
|
if [[ $wait == 0 ]]; then
|
||||||
|
@@ -393,7 +393,7 @@ qrydev() {
|
||||||
|
BOND_PATH=$BOND_BASEPATH/$BONDNAME/bonding
|
||||||
|
|
||||||
|
hcnlog DEBUG "check if the network interface for this SR_IOV is not up, return success"
|
||||||
|
- if ! nmcli -f DEVICE con show --active | grep -q "$BONDNAME-$DEVNAME"; then
|
||||||
|
+ if ! nmcli -f DEVICE con show --active | grep -q "$DEVNAME"; then
|
||||||
|
hcnlog DEBUG "network connection $BONDNAME-$DEVNAME is inactive or nonexist"
|
||||||
|
hcnlog DEBUG "HCNID $HCNID devname $DEVNAME mode $MODE physloc $PHYSLOC"
|
||||||
|
hcnlog DEBUG "qryhcn: exit"
|
||||||
|
@@ -435,7 +435,6 @@ show_hcnstatus() {
|
||||||
|
nmcli connection show >>$LOG_FILE
|
||||||
|
nmcli device status >>$LOG_FILE
|
||||||
|
ip addr show >>$LOG_FILE
|
||||||
|
- lsdevinfo >>$LOG_FILE
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
@@ -569,10 +568,15 @@ exec &> >(tee -a $LOG_FILE)
|
||||||
|
NOW=$(date +"%m-%d-%Y %T")
|
||||||
|
echo "=======================$NOW============================"
|
||||||
|
|
||||||
|
+HCNCMD=$(basename "$0")
|
||||||
|
+hcnlog DEBUG "$HCNCMD enter"
|
||||||
|
+
|
||||||
|
#Validate this tool is running on powerpc platform
|
||||||
|
. "$PSERIES_PLATFORM"
|
||||||
|
if [ "$platform" != "$PLATFORM_PSERIES_LPAR" ]; then
|
||||||
|
- err $E_EPERM
|
||||||
|
+ hcnlog INFO "HNV is only supported on PowerVM LPAR"
|
||||||
|
+ hcnlog INFO "$HCNCMD exit"
|
||||||
|
+ exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Validate NMCLI packages is install to manage networking
|
||||||
|
@@ -588,9 +592,6 @@ if ! lsmod | grep -q bonding; then
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
-HCNCMD=$(basename "$0")
|
||||||
|
-hcnlog DEBUG "$HCNCMD enter"
|
||||||
|
-
|
||||||
|
#getops for help and version
|
||||||
|
while getopts "sVhd:" arg; do
|
||||||
|
case "$arg" in
|
@ -37,85 +37,6 @@ diff -up powerpc-utils-1.3.8/man/hcnmgr.8.me powerpc-utils-1.3.8/man/hcnmgr.8
|
|||||||
+.B
|
+.B
|
||||||
+\fB-h\fP
|
+\fB-h\fP
|
||||||
+Display this help information and exit
|
+Display this help information and exit
|
||||||
diff -up powerpc-utils-1.3.8/scripts/hcnmgr.me powerpc-utils-1.3.8/scripts/hcnmgr
|
|
||||||
--- powerpc-utils-1.3.8/scripts/hcnmgr.me 2020-10-01 13:03:10.839439027 +0200
|
|
||||||
+++ powerpc-utils-1.3.8/scripts/hcnmgr 2020-10-01 13:06:18.479509944 +0200
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-#! /bin/bash
|
|
||||||
+#!/usr/bin/bash
|
|
||||||
|
|
||||||
# Copyright (c) 2020 International Business Machines
|
|
||||||
#
|
|
||||||
@@ -562,34 +562,7 @@ scanhcn() {
|
|
||||||
# Main
|
|
||||||
#
|
|
||||||
|
|
||||||
-#All echo messages goes into $LOG_FILE
|
|
||||||
-exec &> >(tee -a $LOG_FILE)
|
|
||||||
-
|
|
||||||
-#Start debug log $LOG_FILE with date and time
|
|
||||||
-NOW=$(date +"%m-%d-%Y %T")
|
|
||||||
-echo "=======================$NOW============================"
|
|
||||||
-
|
|
||||||
-#Validate this tool is running on powerpc platform
|
|
||||||
-. "$PSERIES_PLATFORM"
|
|
||||||
-if [ "$platform" != "$PLATFORM_PSERIES_LPAR" ]; then
|
|
||||||
- err $E_EPERM
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-#Validate NMCLI packages is install to manage networking
|
|
||||||
-if ! nmcli --version >/dev/null 2>&1; then
|
|
||||||
- err $E_ENETUNREACH
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
-#Validate bonding module is loaded
|
|
||||||
-if ! lsmod | grep -q bonding; then
|
|
||||||
- hcnlog DEBUG "HCNMGR: Bonding module not loaded, load module ..."
|
|
||||||
- if ! modprobe bonding; then
|
|
||||||
- err $E_NOMODULE
|
|
||||||
- fi
|
|
||||||
-fi
|
|
||||||
-
|
|
||||||
HCNCMD=$(basename "$0")
|
|
||||||
-hcnlog DEBUG "$HCNCMD enter"
|
|
||||||
|
|
||||||
#getops for help and version
|
|
||||||
while getopts "sVhd:" arg; do
|
|
||||||
@@ -616,6 +589,34 @@ while getopts "sVhd:" arg; do
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
+#All echo messages goes into $LOG_FILE
|
|
||||||
+exec &> >(tee -a $LOG_FILE)
|
|
||||||
+
|
|
||||||
+hcnlog DEBUG "$HCNCMD enter"
|
|
||||||
+
|
|
||||||
+#Start debug log $LOG_FILE with date and time
|
|
||||||
+NOW=$(date +"%m-%d-%Y %T")
|
|
||||||
+echo "=======================$NOW============================"
|
|
||||||
+
|
|
||||||
+#Validate this tool is running on powerpc platform
|
|
||||||
+. "$PSERIES_PLATFORM"
|
|
||||||
+if [ "$platform" != "$PLATFORM_PSERIES_LPAR" ]; then
|
|
||||||
+ err $E_EPERM
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+#Validate NMCLI packages is install to manage networking
|
|
||||||
+if ! nmcli --version >/dev/null 2>&1; then
|
|
||||||
+ err $E_ENETUNREACH
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+#Validate bonding module is loaded
|
|
||||||
+if ! lsmod | grep -q bonding; then
|
|
||||||
+ hcnlog DEBUG "HCNMGR: Bonding module not loaded, load module ..."
|
|
||||||
+ if ! modprobe bonding; then
|
|
||||||
+ err $E_NOMODULE
|
|
||||||
+ fi
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
#Log this scripts command line to syslog
|
|
||||||
hcnlog INFO "$HCNCMD $*"
|
|
||||||
|
|
||||||
diff -up powerpc-utils-1.3.8/Makefile.am.me powerpc-utils-1.3.8/Makefile.am
|
diff -up powerpc-utils-1.3.8/Makefile.am.me powerpc-utils-1.3.8/Makefile.am
|
||||||
--- powerpc-utils-1.3.8/Makefile.am.me 2020-10-01 13:33:29.444024403 +0200
|
--- powerpc-utils-1.3.8/Makefile.am.me 2020-10-01 13:33:29.444024403 +0200
|
||||||
+++ powerpc-utils-1.3.8/Makefile.am 2020-10-01 13:34:08.284854506 +0200
|
+++ powerpc-utils-1.3.8/Makefile.am 2020-10-01 13:34:08.284854506 +0200
|
||||||
@ -129,4 +50,3 @@ diff -up powerpc-utils-1.3.8/Makefile.am.me powerpc-utils-1.3.8/Makefile.am
|
|||||||
|
|
||||||
EXTRA_DIST += $(bin_SCRIPTS) $(sbin_SCRIPTS) $(man_MANS)
|
EXTRA_DIST += $(bin_SCRIPTS) $(sbin_SCRIPTS) $(man_MANS)
|
||||||
|
|
||||||
diff -up powerpc-utils-1.3.8/Makefile.in.me powerpc-utils-1.3.8/Makefile.in
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Name: powerpc-utils
|
Name: powerpc-utils
|
||||||
Version: 1.3.8
|
Version: 1.3.8
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
Summary: Utilities for PowerPC platforms
|
Summary: PERL-based scripts for maintaining and servicing PowerPC systems
|
||||||
|
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
URL: https://github.com/ibm-power-utilities/powerpc-utils
|
URL: https://github.com/ibm-power-utilities/powerpc-utils
|
||||||
@ -20,16 +20,9 @@ BuildRequires: libservicelog-devel >= 1.0.1-2
|
|||||||
BuildRequires: perl-generators
|
BuildRequires: perl-generators
|
||||||
BuildRequires: systemd
|
BuildRequires: systemd
|
||||||
|
|
||||||
Requires: which
|
|
||||||
# rtas_dump explicit dependency
|
# rtas_dump explicit dependency
|
||||||
Requires: perl(Data::Dumper)
|
Requires: perl(Data::Dumper)
|
||||||
Requires: %{name}-core = %{version}-%{release}
|
Requires: %{name}-core = %{version}-%{release}
|
||||||
Requires: systemd
|
|
||||||
Requires: kmod
|
|
||||||
Requires: which
|
|
||||||
Requires(post): systemd
|
|
||||||
Requires(preun): systemd
|
|
||||||
Requires(postun): systemd
|
|
||||||
|
|
||||||
Patch1: powerpc-utils-1.3.8-man.patch
|
Patch1: powerpc-utils-1.3.8-man.patch
|
||||||
Patch2: powerpc-utils-1.3.8-makefile.patch
|
Patch2: powerpc-utils-1.3.8-makefile.patch
|
||||||
@ -38,14 +31,23 @@ Patch4: powerpc-utils-1.3.5-update_flash_nv.patch
|
|||||||
Patch5: powerpc-utils-1.3.8-install-man.patch
|
Patch5: powerpc-utils-1.3.8-install-man.patch
|
||||||
Patch6: powerpc-utils-manpage-lparstat.patch
|
Patch6: powerpc-utils-manpage-lparstat.patch
|
||||||
Patch7: powerpc-utils-1.3.8-hcnmgr.patch
|
Patch7: powerpc-utils-1.3.8-hcnmgr.patch
|
||||||
|
Patch8: 0001-ofpathname-Use-NVMe-controller-physical-nsid.patch
|
||||||
|
Patch9: 0002-sys_ident--skip-length-field-from-search.patch
|
||||||
|
Patch10: powerpc-utils-1.3.8-f1ec5f04fdac3e87c3c85c2d85f79339d916e864.patch
|
||||||
|
Patch11: powerpc-utils-1.3.8-4b2d10942e2d964ecc1fe58c9460c34993ff10be.patch
|
||||||
|
Patch12: powerpc-utils-1.3.8-e51995667279164a6c8ce4c3ba0217fffda22d6d.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Utilities for PowerPC platforms.
|
PERL-based scripts for maintaining and servicing PowerPC systems.
|
||||||
|
|
||||||
|
|
||||||
%package core
|
%package core
|
||||||
Summary: Core utilities for PowerPC platforms
|
Summary: Core utilities for maintaining and servicing PowerPC systems
|
||||||
|
Requires(post): systemd
|
||||||
|
Requires(preun): systemd
|
||||||
|
Requires(postun): systemd
|
||||||
|
Requires: kmod
|
||||||
|
Requires: which
|
||||||
Requires: /usr/bin/awk
|
Requires: /usr/bin/awk
|
||||||
Requires: /usr/bin/basename
|
Requires: /usr/bin/basename
|
||||||
Requires: /usr/bin/bc
|
Requires: /usr/bin/bc
|
||||||
@ -62,7 +64,7 @@ Requires: /usr/bin/udevadm
|
|||||||
|
|
||||||
|
|
||||||
%description core
|
%description core
|
||||||
Utilities needed when installing Fedora on PowerPC systems.
|
Core utilities for maintaining and servicing PowerPC systems.
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
@ -100,7 +102,7 @@ ln -s serv_config.8 %{buildroot}%{_mandir}/man8/uspchrp.8
|
|||||||
# deprecated, use sosreport instead
|
# deprecated, use sosreport instead
|
||||||
rm -f $RPM_BUILD_ROOT%{_sbindir}/snap $RPM_BUILD_ROOT%{_mandir}/man8/snap.8*
|
rm -f $RPM_BUILD_ROOT%{_sbindir}/snap $RPM_BUILD_ROOT%{_mandir}/man8/snap.8*
|
||||||
|
|
||||||
%post
|
%post core
|
||||||
systemctl daemon-reload >/dev/null 2>&1 || :
|
systemctl daemon-reload >/dev/null 2>&1 || :
|
||||||
systemctl start hcn-init.service >/dev/null 2>&1 || :
|
systemctl start hcn-init.service >/dev/null 2>&1 || :
|
||||||
systemctl enable hcn-init.service >/dev/null 2>&1 || :
|
systemctl enable hcn-init.service >/dev/null 2>&1 || :
|
||||||
@ -108,7 +110,7 @@ systemctl enable hcn-init.service >/dev/null 2>&1 || :
|
|||||||
/usr/sbin/smtstate --save >/dev/null 2>&1 || :
|
/usr/sbin/smtstate --save >/dev/null 2>&1 || :
|
||||||
|
|
||||||
|
|
||||||
%preun
|
%preun core
|
||||||
svc=$(systemctl list-units -la | grep -Fq smtstate.service; echo $?)
|
svc=$(systemctl list-units -la | grep -Fq smtstate.service; echo $?)
|
||||||
if [ "$svc" = "0" ]; then
|
if [ "$svc" = "0" ]; then
|
||||||
systemctl stop smtstate.service >/dev/null 2>&1 || :
|
systemctl stop smtstate.service >/dev/null 2>&1 || :
|
||||||
@ -119,22 +121,28 @@ if systemctl is-enabled hcn-init.service |grep -q "enabled"; then
|
|||||||
systemctl disable hcn-init.service >/dev/null 2>&1 || :
|
systemctl disable hcn-init.service >/dev/null 2>&1 || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
%postun
|
%postun core
|
||||||
systemctl daemon-reload >/dev/null 2>&1 || :
|
systemctl daemon-reload >/dev/null 2>&1 || :
|
||||||
|
|
||||||
%files
|
%files
|
||||||
|
# PERL-based scripts for maintaining and servicing PowerPC systems
|
||||||
%doc README Changelog
|
%doc README Changelog
|
||||||
|
%{_sbindir}/hvcsadmin
|
||||||
|
%{_sbindir}/rtas_dump
|
||||||
|
%{_mandir}/man8/hvcsadmin.8*
|
||||||
|
%{_mandir}/man8/rtas_dump.8*
|
||||||
|
|
||||||
|
%files core
|
||||||
|
%license COPYING
|
||||||
%dir /var/lib/powerpc-utils
|
%dir /var/lib/powerpc-utils
|
||||||
/var/lib/powerpc-utils/smt.state
|
/var/lib/powerpc-utils/smt.state
|
||||||
%{_unitdir}/smtstate.service
|
%{_unitdir}/smtstate.service
|
||||||
%{_unitdir}/smt_off.service
|
%{_unitdir}/smt_off.service
|
||||||
%{_unitdir}/hcn-init.service
|
%{_unitdir}/hcn-init.service
|
||||||
|
|
||||||
%{_bindir}/amsstat
|
%{_bindir}/amsstat
|
||||||
%{_sbindir}/activate_firmware
|
%{_sbindir}/activate_firmware
|
||||||
%{_sbindir}/bootlist
|
%{_sbindir}/bootlist
|
||||||
%{_sbindir}/errinjct
|
%{_sbindir}/errinjct
|
||||||
%{_sbindir}/hvcsadmin
|
|
||||||
%{_sbindir}/lparstat
|
%{_sbindir}/lparstat
|
||||||
%{_sbindir}/lsdevinfo
|
%{_sbindir}/lsdevinfo
|
||||||
%{_sbindir}/lsprop
|
%{_sbindir}/lsprop
|
||||||
@ -145,7 +153,6 @@ systemctl daemon-reload >/dev/null 2>&1 || :
|
|||||||
%{_sbindir}/nvsetenv
|
%{_sbindir}/nvsetenv
|
||||||
%{_sbindir}/ppc64_cpu
|
%{_sbindir}/ppc64_cpu
|
||||||
%{_sbindir}/rtas_dbg
|
%{_sbindir}/rtas_dbg
|
||||||
%{_sbindir}/rtas_dump
|
|
||||||
%{_sbindir}/rtas_event_decode
|
%{_sbindir}/rtas_event_decode
|
||||||
%{_sbindir}/rtas_ibm_get_vpd
|
%{_sbindir}/rtas_ibm_get_vpd
|
||||||
%{_sbindir}/serv_config
|
%{_sbindir}/serv_config
|
||||||
@ -163,13 +170,15 @@ systemctl daemon-reload >/dev/null 2>&1 || :
|
|||||||
%{_sbindir}/hcnversion
|
%{_sbindir}/hcnversion
|
||||||
%{_sbindir}/vcpustat
|
%{_sbindir}/vcpustat
|
||||||
%{_sbindir}/smtstate
|
%{_sbindir}/smtstate
|
||||||
|
%{_sbindir}/nvram
|
||||||
|
%{_sbindir}/ofpathname
|
||||||
|
%{_sbindir}/pseries_platform
|
||||||
|
%{_sbindir}/drmgr
|
||||||
%{_mandir}/man1/amsstat.1*
|
%{_mandir}/man1/amsstat.1*
|
||||||
%{_mandir}/man5/lparcfg.5*
|
%{_mandir}/man5/lparcfg.5*
|
||||||
%{_mandir}/man8/activate_firmware.8*
|
%{_mandir}/man8/activate_firmware.8*
|
||||||
%{_mandir}/man8/bootlist.8*
|
%{_mandir}/man8/bootlist.8*
|
||||||
%{_mandir}/man8/errinjct.8*
|
%{_mandir}/man8/errinjct.8*
|
||||||
%{_mandir}/man8/hvcsadmin.8*
|
|
||||||
%{_mandir}/man8/lparstat.8*
|
%{_mandir}/man8/lparstat.8*
|
||||||
%{_mandir}/man8/lsdevinfo.8*
|
%{_mandir}/man8/lsdevinfo.8*
|
||||||
%{_mandir}/man8/lsprop.8*
|
%{_mandir}/man8/lsprop.8*
|
||||||
@ -180,7 +189,6 @@ systemctl daemon-reload >/dev/null 2>&1 || :
|
|||||||
%{_mandir}/man8/nvsetenv.8*
|
%{_mandir}/man8/nvsetenv.8*
|
||||||
%{_mandir}/man8/ppc64_cpu.8*
|
%{_mandir}/man8/ppc64_cpu.8*
|
||||||
%{_mandir}/man8/rtas_dbg.8*
|
%{_mandir}/man8/rtas_dbg.8*
|
||||||
%{_mandir}/man8/rtas_dump.8*
|
|
||||||
%{_mandir}/man8/rtas_event_decode.8*
|
%{_mandir}/man8/rtas_event_decode.8*
|
||||||
%{_mandir}/man8/rtas_ibm_get_vpd.8*
|
%{_mandir}/man8/rtas_ibm_get_vpd.8*
|
||||||
%{_mandir}/man8/serv_config.8*
|
%{_mandir}/man8/serv_config.8*
|
||||||
@ -194,21 +202,19 @@ systemctl daemon-reload >/dev/null 2>&1 || :
|
|||||||
%{_mandir}/man8/vcpustat.8.gz
|
%{_mandir}/man8/vcpustat.8.gz
|
||||||
%{_mandir}/man8/smtstate.8.gz
|
%{_mandir}/man8/smtstate.8.gz
|
||||||
%{_mandir}/man8/hcnmgr.8*
|
%{_mandir}/man8/hcnmgr.8*
|
||||||
|
|
||||||
%files core
|
|
||||||
%license COPYING
|
|
||||||
|
|
||||||
%{_sbindir}/nvram
|
|
||||||
%{_sbindir}/ofpathname
|
|
||||||
%{_sbindir}/pseries_platform
|
|
||||||
%{_sbindir}/drmgr
|
|
||||||
|
|
||||||
%{_mandir}/man8/nvram.8*
|
%{_mandir}/man8/nvram.8*
|
||||||
%{_mandir}/man8/ofpathname.8*
|
%{_mandir}/man8/ofpathname.8*
|
||||||
%{_mandir}/man8/drmgr.8*
|
%{_mandir}/man8/drmgr.8*
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Dec 22 2020 Than Ngo <than@redhat.com> - 1.3.8-4
|
||||||
|
- additional patches to support Linux Hybrid Network Virtualization
|
||||||
|
- move commands that dont depend on perl to core subpackage
|
||||||
|
- update hcnmgr patch
|
||||||
|
- sys_ident: Skip length field from search
|
||||||
|
- ofpathname: Use NVMe controller physical nsid
|
||||||
|
|
||||||
* Thu Oct 01 2020 Than Ngo <than@redhat.com> - 1.3.8-3
|
* Thu Oct 01 2020 Than Ngo <than@redhat.com> - 1.3.8-3
|
||||||
- add hcnmgr man page
|
- add hcnmgr man page
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user