add normalize_dasd_arg script (#823078)
This commit is contained in:
parent
83347f5b69
commit
8c7c2bc4db
112
normalize_dasd_arg
Normal file
112
normalize_dasd_arg
Normal file
@ -0,0 +1,112 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright 2012 Red Hat, Inc.
|
||||
# License: GPLv2
|
||||
# Author: Jesse Keating <jkeating@redhat.com>
|
||||
#
|
||||
# Normalize DASD data into valid dasd.conf format
|
||||
#
|
||||
# Standard input should be the DASD argument
|
||||
# Standard otuput is the properly formatted content
|
||||
#
|
||||
# it is used in
|
||||
# dracut generated initramfs
|
||||
#
|
||||
# Much of this code was salvaged from linuxrc.s390 from Anaconda:
|
||||
#
|
||||
# License GPLv2+
|
||||
#
|
||||
# Copyright (C) 2000-2004 by
|
||||
# Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
# Oliver Paukstadt <opaukstadt@millenux.com>
|
||||
# Karsten Hopp <karsten@redhat.de>
|
||||
# Florian La Roche <laroche@redhat.com>
|
||||
# Nils Philippsen <nils@redhat.de>
|
||||
# Helge Deller <hdeller@redhat.de>
|
||||
# David Sainty <dsainty@redhat.com>
|
||||
# Copyright (C) IBM Corp. 2008,2009
|
||||
# Author: Steffen Maier <maier@de.ibm.com>
|
||||
|
||||
|
||||
function canonicalize_devno()
|
||||
{
|
||||
case ${#1} in
|
||||
3) echo "0.0.0${1}" ;;
|
||||
4) echo "0.0.${1}" ;;
|
||||
*) echo "${1}" ;;
|
||||
esac
|
||||
return 0
|
||||
}
|
||||
|
||||
read DASD
|
||||
for dasditem in $(echo $DASD |sed 's/,/ /g')
|
||||
do
|
||||
unset range features lo hi attrs devno lodevno hidevno devbusid sys
|
||||
case $dasditem in
|
||||
autodetect|probeonly|nopav|nofcx|"") continue ;; # these don't gen a config
|
||||
*)
|
||||
IFS='('
|
||||
read range features <<< "$dasditem"
|
||||
unset IFS
|
||||
lo=${range%%-*}
|
||||
[[ "$lo" =~ (^[[:xdigit:]]+\.[0-3]\.[[:xdigit:]]{4}$)|(^[[:xdigit:]]{3,4}$) ]]
|
||||
case $? in
|
||||
0) # string matched the pattern
|
||||
lo=$(canonicalize_devno $lo) ;;
|
||||
1) # string did not match the pattern
|
||||
echo $"Incorrect format for lower bound of DASD range $range: $lo"
|
||||
exit 1
|
||||
;;
|
||||
2) echo "l.$LINENO: syntax error in regex of match operator =~, code needs to be fixed" 1>&2 ;;
|
||||
*) echo "l.$LINENO: unexpected return code of regex match operator =~, code needs to be fixed" 1>&2 ;;
|
||||
esac
|
||||
if [ "${range//*-*/}" = "" ]; then
|
||||
hi=${range##*-}
|
||||
[[ "$hi" =~ (^[[:xdigit:]]+\.[0-3]\.[[:xdigit:]]{4}$)|(^[[:xdigit:]]{3,4}$) ]]
|
||||
case $? in
|
||||
0) # string matched the pattern
|
||||
hi=$(canonicalize_devno $hi)
|
||||
if [ "${lo%.*}" != "${hi%.*}" ]; then
|
||||
echo $"Prefixes of DASD range $range do not match: ${lo%.*} != ${hi%.*}"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
1) # string did not match the pattern
|
||||
echo $"Incorrect format for upper bound of DASD range $range: $hi"
|
||||
exit 1
|
||||
;;
|
||||
2) echo "l.$LINENO: syntax error in regex of match operator =~, code needs to be fixed" 1>&2 ;;
|
||||
*) echo "l.$LINENO: unexpected return code of regex match operator =~, code needs to be fixed" 1>&2 ;;
|
||||
esac
|
||||
fi
|
||||
if [ "${features//*)/}" != "" ]; then
|
||||
echo $"Missing closing parenthesis at features of DASD range $range: ($features"
|
||||
exit 1
|
||||
fi
|
||||
if [ -n "$features" ]; then
|
||||
attrs=""
|
||||
features="${features%)}"
|
||||
for feature in $(echo $features |sed 's/:/\n/g'); do
|
||||
case $feature in
|
||||
ro) attrs=$attrs" readonly" ;;
|
||||
diag) attrs=$attrs" use_diag" ;;
|
||||
erplog|failfast) attrs=$attrs" "$feature ;;
|
||||
*) echo $"Unknown DASD feature for device range $range: $feature"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
[ -z "$hi" ] && hi=$lo
|
||||
lodevno=$((0x${lo##*.}))
|
||||
hidevno=$((0x${hi##*.}))
|
||||
for ((devno=$lodevno; $devno <= $hidevno; ++devno)); do
|
||||
devbusid=$(printf "%s.%04x" ${lo%.*} $devno)
|
||||
echo -n "$devbusid"
|
||||
for attr in $attrs; do
|
||||
echo -n " $attr=1"
|
||||
done
|
||||
echo
|
||||
done
|
||||
esac
|
||||
done
|
@ -8,7 +8,7 @@ Name: s390utils
|
||||
Summary: Utilities and daemons for IBM System/z
|
||||
Group: System Environment/Base
|
||||
Version: 1.16.0
|
||||
Release: 7%{?dist}
|
||||
Release: 8%{?dist}
|
||||
Epoch: 2
|
||||
License: GPLv2 and GPLv2+ and CPL
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -38,6 +38,7 @@ Source17: ccw.udev
|
||||
Source18: cpuplugd.initd
|
||||
Source19: mon_statd.initd
|
||||
Source20: 40-z90crypt.rules
|
||||
Source21: normalize_dasd_arg
|
||||
|
||||
Patch1: s390-tools-1.16.0-fedora.patch
|
||||
|
||||
@ -172,6 +173,7 @@ install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
|
||||
install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
|
||||
install -p -m 755 %{SOURCE5} $RPM_BUILD_ROOT/sbin
|
||||
install -p -m 755 %{SOURCE13} $RPM_BUILD_ROOT/sbin
|
||||
install -p -m 755 %{SOURCE21} $RPM_BUILD_ROOT/sbin
|
||||
install -p -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/56-zfcp.rules
|
||||
install -p -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/56-dasd.rules
|
||||
|
||||
@ -528,6 +530,7 @@ fi
|
||||
/sbin/device_cio_free
|
||||
/sbin/zfcp_cio_free
|
||||
/sbin/znet_cio_free
|
||||
/sbin/normalize_dasd_arg
|
||||
/lib/systemd/system/device_cio_free.service
|
||||
%{_sysconfdir}/systemd/system/sysinit.target.wants/device_cio_free.service
|
||||
/lib/udev/ccw_init
|
||||
@ -864,6 +867,9 @@ User-space development files for the s390/s390x architecture.
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed May 23 2012 Dan Horák <dan[at]danny.cz> 2:1.16.0-8
|
||||
- add normalize_dasd_arg script (#823078)
|
||||
|
||||
* Mon May 14 2012 Dan Horák <dan[at]danny.cz> 2:1.16.0-7
|
||||
- ethtool is required by lsqeth (#821421)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user