Skip to content

Commit

Permalink
zdev: add helper to convert from zdev config to dasd_mod.dasd
Browse files Browse the repository at this point in the history
Converts zdev configuration into the syntax of the kernel module parameter
dasd_mod.dasd. Only DASD options with non-default values are emitted. The
result string occurs on stdout. It represents one device-specification for
the given DASD device bus-ID.

Example:
/lib/s390-tools/zdev-to-dasd_mod.dasd persistent 0.0.da5d
0.0.da5d(erplog)

User:
storaged-project/blivet#1162
to generate dracut cmdline entries such as rd.dasd=0.0.da5d(erplog)

Signed-off-by: Steffen Maier <[email protected]>
  • Loading branch information
steffen-maier committed Nov 28, 2023
1 parent 97aa088 commit b66396d
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
3 changes: 2 additions & 1 deletion zdev/src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,12 @@ libs = $(rootdir)/libap/libap.a \
chzdev: $(chzdev_objects) $(libs)
lszdev: $(lszdev_objects) $(libs)

install: chzdev zdev_id
install: chzdev zdev_id zdev-to-dasd_mod.dasd
$(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)
$(INSTALL) -c chzdev $(DESTDIR)$(BINDIR)
$(INSTALL) -c lszdev $(DESTDIR)$(BINDIR)
$(INSTALL) -c zdev_id $(DESTDIR)$(TOOLS_LIBDIR)
$(INSTALL) -c zdev-to-dasd_mod.dasd $(DESTDIR)$(TOOLS_LIBDIR)
ifeq ($(HAVE_DRACUT),1)
$(INSTALL) -m 755 zdev-root-update.dracut \
$(DESTDIR)$(TOOLS_LIBDIR)/zdev-root-update
Expand Down
37 changes: 37 additions & 0 deletions zdev/src/zdev-to-dasd_mod.dasd
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash
#
# Copyright IBM Corp. 2023
#
# s390-tools is free software; you can redistribute it and/or modify
# it under the terms of the MIT license. See LICENSE for details.
#
# zdev-to-dasd_mod.dasd
# Converts zdev configuration into the syntax of the kernel module parameter
# dasd_mod.dasd. Only DASD options with non-default values are emitted. The
# result string occurs on stdout. It represents one device-specification for
# the given DASD device bus-ID.
#

function usage() {
echo "usage: ${0##*/} active|persistent <DASD device bus-ID>" 1>&2
exit 1
}

[[ $# -eq 2 ]] || usage

[[ "$1" == active ]] || [[ "$1" == persistent ]] || usage

_selection="--${1}"
_busid="$2"

while read -r _line; do
case "$_line" in
"readonly=1") _attrs="${_attrs:+${_attrs}:}ro" ;;
"use_diag=1") _attrs="${_attrs:+${_attrs}:}diag" ;;
"raw_track_access=1") _attrs="${_attrs:+${_attrs}:}raw" ;;
"erplog=1") _attrs="${_attrs:+${_attrs}:}erplog" ;;
"failfast=1") _attrs="${_attrs:+${_attrs}:}failfast" ;;
esac
done < <(chzdev dasd "$_busid" "$_selection" --export - --quiet)
[[ -n "$_attrs" ]] && _attrs="($_attrs)"
printf "%s%s\n" "$_busid" "$_attrs"

0 comments on commit b66396d

Please sign in to comment.