File s390-tools-sles11sp3-lscss_add_eadm_support.patch of Package s390-tools
Subject: [PATCH] [FEAT LS1004] s390: Allow SCM access via EADM subchannels
From: Sebastian Ott <sebott@linux.vnet.ibm.com>
Summary: s390: Allow SCM access via EADM subchannels
Description: With this feature, Linux can access Storage Class
Memory as a block device.
Upstream-ID: -
Problem-ID: LS1004
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
---
zconf/lscss | 45 +++++++++++++++++++++++++++++++++++++++++----
zconf/lscss.8 | 4 ++++
2 files changed, 45 insertions(+), 4 deletions(-)
--- a/zconf/lscss
+++ b/zconf/lscss
@@ -62,6 +62,8 @@ function print_usage() {
Show IO subchannels. (default)
--chsc
Show CHSC subchannels.
+ --eadm
+ Show EADM subchannels.
-a|--all
Show subchannels of all types.
EOD
@@ -76,10 +78,11 @@ function print_version()
SUBCHANNEL_TYPE_IO=0
SUBCHANNEL_TYPE_CHSC=1
+SUBCHANNEL_TYPE_EADM=3
IDFORMAT=[[:xdigit:]]*.[0-3].[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
-unset SCH_IO SCH_CHSC SHOW_AVAIL UPPERCASE SHORTID DEVTYPES DEVRANGE RANGE
+unset SCH_IO SCH_CHSC SCH_EADM SHOW_AVAIL UPPERCASE SHORTID DEVTYPES DEVRANGE RANGE
shopt -s nocasematch
shopt -s nullglob
@@ -179,9 +182,13 @@ while [ $# -gt 0 ]; do
--chsc)
SCH_CHSC=true
;;
+ --eadm)
+ SCH_EADM=true
+ ;;
-a|--all)
SCH_IO=true
SCH_CHSC=true
+ SCH_EADM=true
;;
--avail)
SHOW_AVAIL=true
@@ -209,7 +216,7 @@ if [ $RANGE ] ;then
parse_ranges $RANGE
fi
-if [ ! \( "$SCH_IO" -o "$SCH_CHSC" \) ] ;then
+if [ ! \( "$SCH_IO" -o "$SCH_CHSC" -o "$SCH_EADM" \) ] ;then
SCH_IO=true
fi
@@ -343,8 +350,24 @@ function print_chsc()
done
}
+function print_eadm()
+{
+ list_sch_of_type $SUBCHANNEL_TYPE_EADM |
+ while read DEV ;do
+ SCH=${DEV%/*}
+ SCH=${SCH##*/}
+ if [ $SHORTID ] ;then
+ if [ ${SCH:0:4} != "0.0." ] ;then
+ continue
+ fi
+ SCH=${SCH#0.0.}
+ fi
+ printf "%-8.8s %-8.8s\n" "n/a" $SCH
+ done
+}
+
if [ $SCH_IO ] ;then
- if [ "$SCH_CHSC" ] ;then
+ if [ \( "$SCH_CHSC" -o "$SCH_EADM" \) ] ;then
echo "IO Subchannels and Devices:"
fi
if [ $SHOW_AVAIL ] ;then
@@ -362,7 +385,7 @@ if [ $SCH_IO ] ;then
fi
if [ $SCH_CHSC ] ;then
- if [ "$SCH_IO" ] ;then
+ if [ \( "$SCH_IO" -o "$SCH_EADM" \) ] ;then
echo
echo "CHSC Subchannels:"
fi
@@ -372,5 +395,19 @@ if [ $SCH_CHSC ] ;then
tr "[:lower:]" "[:upper:]"
else
cat -
+ fi
+fi
+
+if [ $SCH_EADM ] ;then
+ if [ \( "$SCH_IO" -o "$SCH_CHSC" \) ] ;then
+ echo
+ echo "EADM Subchannels:"
+ fi
+ echo "Device Subchan."
+ echo "-----------------"
+ print_eadm | if [ $UPPERCASE ] ;then
+ tr "[:lower:]" "[:upper:]"
+ else
+ cat -
fi
fi
--- a/zconf/lscss.8
+++ b/zconf/lscss.8
@@ -61,6 +61,10 @@ Show IO subchannels. (default)
Show CHSC subchannels.
.TP 8
+.BR --eadm
+Show EADM subchannels.
+
+.TP 8
.BR -a | --all
Show subchannels of all types.