Blame 0008-dracut-functions-documentation-and-restructuring.patch

Harald Hoyer 035915
From 7e2bca48208413b940ebdf875c718a0d08e490ac Mon Sep 17 00:00:00 2001
Harald Hoyer 035915
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer 035915
Date: Thu, 16 Feb 2012 11:49:19 +0100
Harald Hoyer 035915
Subject: [PATCH] dracut-functions: documentation and restructuring
Harald Hoyer 035915
Harald Hoyer 035915
---
Harald Hoyer 035915
 dracut-functions |  157 ++++++++++++++++++++++++++++++++++++++++++------------
Harald Hoyer 035915
 1 files changed, 122 insertions(+), 35 deletions(-)
Harald Hoyer 035915
Harald Hoyer 035915
diff --git a/dracut-functions b/dracut-functions
Harald Hoyer 035915
index 0b24889..e0a08ab 100755
Harald Hoyer 035915
--- a/dracut-functions
Harald Hoyer 035915
+++ b/dracut-functions
Harald Hoyer 035915
@@ -32,6 +32,13 @@ if ! type dinfo >/dev/null 2>&1; then
Harald Hoyer 035915
     dlog_init
Harald Hoyer 035915
 fi
Harald Hoyer 035915
 
Harald Hoyer 035915
+# export standard hookdirs
Harald Hoyer 035915
+[[ $hookdirs ]] || {
Harald Hoyer 035915
+    hookdirs="cmdline pre-udev pre-trigger netroot initqueue pre-mount"
Harald Hoyer 035915
+    hookdirs+=" pre-pivot mount emergency shutdown-emergency shutdown cleanup"
Harald Hoyer 035915
+    export hookdirs
Harald Hoyer 035915
+}
Harald Hoyer 035915
+
Harald Hoyer 035915
 # Generic substring function.  If $2 is in $1, return 0.
Harald Hoyer 035915
 strstr() { [[ $1 =~ $2 ]]; }
Harald Hoyer 035915
 
Harald Hoyer 035915
@@ -66,6 +73,8 @@ vercmp() {
Harald Hoyer 035915
     esac
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# is_func <command>
Harald Hoyer 035915
+# Check whether $1 is a function.
Harald Hoyer 035915
 is_func() {
Harald Hoyer 035915
     [[ $(type -t $1) = "function" ]]
Harald Hoyer 035915
 }
Harald Hoyer 035915
@@ -82,6 +91,12 @@ print_vars() {
Harald Hoyer 035915
     done
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# normalize_path <path>
Harald Hoyer 035915
+# Prints the normalized path, where it removes any duplicated
Harald Hoyer 035915
+# and trailing slashes.
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ normalize_path ///test/test//
Harald Hoyer 035915
+# /test/test
Harald Hoyer 035915
 normalize_path() {
Harald Hoyer 035915
     shopt -q -s extglob
Harald Hoyer 035915
     set -- "${1//+(\/)//}"
Harald Hoyer 035915
@@ -89,10 +104,15 @@ normalize_path() {
Harald Hoyer 035915
     echo "${1%/}"
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# convert_abs_rel <from> <to>
Harald Hoyer 035915
+# Prints the relative path, when creating a symlink to <to> from <from>.
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ convert_abs_rel /usr/bin/test /bin/test-2
Harald Hoyer 035915
+# ../../bin/test-2
Harald Hoyer 035915
+# $ ln -s $(convert_abs_rel /usr/bin/test /bin/test-2) /usr/bin/test
Harald Hoyer 035915
 convert_abs_rel() {
Harald Hoyer 035915
     local __current __absolute __abssize __cursize __newpath __oldifs
Harald Hoyer 035915
     local -i __i __level
Harald Hoyer 035915
-#    PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): ';
Harald Hoyer 035915
 
Harald Hoyer 035915
     set -- "$(normalize_path "$1")" "$(normalize_path "$2")"
Harald Hoyer 035915
 
Harald Hoyer 035915
@@ -141,6 +161,12 @@ convert_abs_rel() {
Harald Hoyer 035915
     echo "$__newpath"
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# get_fs_env <device>
Harald Hoyer 035915
+# Get and set the ID_FS_TYPE and ID_FS_UUID variable from udev for a device.
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ get_fs_env /dev/sda2; echo $ID_FS_TYPE; echo $ID_FS_UUID
Harald Hoyer 035915
+# ext4
Harald Hoyer 035915
+# 551a39aa-4ae9-4e70-a262-ef665cadb574
Harald Hoyer 035915
 get_fs_env() {
Harald Hoyer 035915
     [[ $1 ]] || return
Harald Hoyer 035915
     unset ID_FS_TYPE
Harald Hoyer 035915
@@ -157,6 +183,21 @@ get_fs_env() {
Harald Hoyer 035915
     fi
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# get_fs_uuid <device>
Harald Hoyer 035915
+# Prints the filesystem UUID for a device.
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ get_fs_uuid /dev/sda2
Harald Hoyer 035915
+# 551a39aa-4ae9-4e70-a262-ef665cadb574
Harald Hoyer 035915
+get_fs_uuid() (
Harald Hoyer 035915
+    get_fs_env $1 || return
Harald Hoyer 035915
+    echo $ID_FS_UUID
Harald Hoyer 035915
+)
Harald Hoyer 035915
+
Harald Hoyer 035915
+# get_fs_type <device>
Harald Hoyer 035915
+# Prints the filesystem type for a device.
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ get_fs_type /dev/sda1
Harald Hoyer 035915
+# ext4
Harald Hoyer 035915
 get_fs_type() (
Harald Hoyer 035915
     [[ $1 ]] || return
Harald Hoyer 035915
     if [[ $1 != ${1#/dev/block/nfs:} ]] \
Harald Hoyer 035915
@@ -172,12 +213,11 @@ get_fs_type() (
Harald Hoyer 035915
     find_dev_fstype $1
Harald Hoyer 035915
 )
Harald Hoyer 035915
 
Harald Hoyer 035915
-get_fs_uuid() (
Harald Hoyer 035915
-    get_fs_env $1 || return
Harald Hoyer 035915
-    echo $ID_FS_UUID
Harald Hoyer 035915
-)
Harald Hoyer 035915
-
Harald Hoyer 035915
-
Harald Hoyer 035915
+# get_maj_min <device>
Harald Hoyer 035915
+# Prints the major and minor of a device node.
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ get_maj_min /dev/sda2
Harald Hoyer 035915
+# 8:2
Harald Hoyer 035915
 get_maj_min() {
Harald Hoyer 035915
     local _dev
Harald Hoyer 035915
     _dev=$(stat -L -c '$((0x%t)):$((0x%T))' "$1" 2>/dev/null)
Harald Hoyer 035915
@@ -185,6 +225,16 @@ get_maj_min() {
Harald Hoyer 035915
     echo $_dev
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# find_block_device <mountpoint>
Harald Hoyer 035915
+# Prints the major and minor number of the block device
Harald Hoyer 035915
+# for a given mountpoint.
Harald Hoyer 035915
+# Unless $use_fstab is set to "yes" the functions
Harald Hoyer 035915
+# uses /proc/self/mountinfo as the primary source of the
Harald Hoyer 035915
+# information and only falls back to /etc/fstab, if the mountpoint
Harald Hoyer 035915
+# is not found there.
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ find_block_device /usr
Harald Hoyer 035915
+# 8:4
Harald Hoyer 035915
 find_block_device() {
Harald Hoyer 035915
     local _x _mpt _majmin _dev _fs _maj _min
Harald Hoyer 035915
     if [[ $use_fstab != yes ]]; then
Harald Hoyer 035915
@@ -219,6 +269,14 @@ find_block_device() {
Harald Hoyer 035915
     return 1
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# find_dev_fstype <device>
Harald Hoyer 035915
+# Echo the filesystem type for a given device.
Harald Hoyer 035915
+# /proc/self/mountinfo is taken as the primary source of information
Harald Hoyer 035915
+# and /etc/fstab is used as a fallback.
Harald Hoyer 035915
+# No newline is appended!
Harald Hoyer 035915
+# Example:
Harald Hoyer 035915
+# $ find_dev_fstype /dev/sda2;echo
Harald Hoyer 035915
+# ext4
Harald Hoyer 035915
 find_dev_fstype() {
Harald Hoyer 035915
     local _x _mpt _majmin _dev _fs _maj _min
Harald Hoyer 035915
     while read _x _x _majmin _x _mpt _x _x _fs _dev _x; do
Harald Hoyer 035915
@@ -240,6 +298,9 @@ find_dev_fstype() {
Harald Hoyer 035915
 # finds the major:minor of the block device backing the root filesystem.
Harald Hoyer 035915
 find_root_block_device() { find_block_device /; }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# for_each_host_dev_fs <func>
Harald Hoyer 035915
+# Execute "<func> <dev> <filesystem>" for every "<dev>|<fs>" pair found
Harald Hoyer 035915
+# in ${host_fs_types[@]}
Harald Hoyer 035915
 for_each_host_dev_fs()
Harald Hoyer 035915
 {
Harald Hoyer 035915
     local _func="$1"
Harald Hoyer 035915
@@ -581,12 +642,6 @@ inst() {
Harald Hoyer 035915
     return 1
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
-[[ $hookdirs ]] || {
Harald Hoyer 035915
-    hookdirs="cmdline pre-udev pre-trigger netroot initqueue pre-mount"
Harald Hoyer 035915
-    hookdirs+=" pre-pivot mount emergency shutdown-emergency shutdown cleanup"
Harald Hoyer 035915
-    export hookdirs
Harald Hoyer 035915
-}
Harald Hoyer 035915
-
Harald Hoyer 035915
 # install function specialized for hooks
Harald Hoyer 035915
 # $1 = type of hook, $2 = hook priority (lower runs first), $3 = hook
Harald Hoyer 035915
 # All hooks should be POSIX/SuS compliant, they will be sourced by init.
Harald Hoyer 035915
@@ -630,6 +685,9 @@ inst_any() {
Harald Hoyer 035915
     return 1
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# dracut_install [-o ] <file> [<file> ... ]
Harald Hoyer 035915
+# Install <file> to the initramfs image
Harald Hoyer 035915
+# -o optionally install the <file> and don't fail, if it is not there
Harald Hoyer 035915
 dracut_install() {
Harald Hoyer 035915
     local _optional=no
Harald Hoyer 035915
     if [[ $1 = '-o' ]]; then
Harald Hoyer 035915
@@ -697,6 +755,10 @@ inst_opt_decompress() {
Harald Hoyer 035915
     done
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# module_check <dracut module>
Harald Hoyer 035915
+# execute the check() function of module-setup.sh of <dracut module>
Harald Hoyer 035915
+# or the "check" script, if module-setup.sh is not found
Harald Hoyer 035915
+# "check $hostonly" is called
Harald Hoyer 035915
 module_check() {
Harald Hoyer 035915
     local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
     local _ret
Harald Hoyer 035915
@@ -723,6 +785,35 @@ module_check() {
Harald Hoyer 035915
     return $_ret
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# module_check_mount <dracut module>
Harald Hoyer 035915
+# execute the check() function of module-setup.sh of <dracut module>
Harald Hoyer 035915
+# or the "check" script, if module-setup.sh is not found
Harald Hoyer 035915
+# "mount_needs=1 check 0" is called
Harald Hoyer 035915
+module_check_mount() {
Harald Hoyer 035915
+    local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
+    local _ret
Harald Hoyer 035915
+    mount_needs=1
Harald Hoyer 035915
+    [[ -d $_moddir ]] || return 1
Harald Hoyer 035915
+    if [[ ! -f $_moddir/module-setup.sh ]]; then
Harald Hoyer 035915
+        # if we do not have a check script, we are unconditionally included
Harald Hoyer 035915
+        [[ -x $_moddir/check ]] || return 0
Harald Hoyer 035915
+        mount_needs=1 $_moddir/check 0
Harald Hoyer 035915
+        _ret=$?
Harald Hoyer 035915
+    else
Harald Hoyer 035915
+        unset check depends install installkernel
Harald Hoyer 035915
+        . $_moddir/module-setup.sh
Harald Hoyer 035915
+        is_func check || return 1
Harald Hoyer 035915
+        check 0
Harald Hoyer 035915
+        _ret=$?
Harald Hoyer 035915
+        unset check depends install installkernel
Harald Hoyer 035915
+    fi
Harald Hoyer 035915
+    unset mount_needs
Harald Hoyer 035915
+    return $_ret
Harald Hoyer 035915
+}
Harald Hoyer 035915
+
Harald Hoyer 035915
+# module_depends <dracut module>
Harald Hoyer 035915
+# execute the depends() function of module-setup.sh of <dracut module>
Harald Hoyer 035915
+# or the "depends" script, if module-setup.sh is not found
Harald Hoyer 035915
 module_depends() {
Harald Hoyer 035915
     local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
     local _ret
Harald Hoyer 035915
@@ -743,6 +834,9 @@ module_depends() {
Harald Hoyer 035915
     fi
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# module_install <dracut module>
Harald Hoyer 035915
+# execute the install() function of module-setup.sh of <dracut module>
Harald Hoyer 035915
+# or the "install" script, if module-setup.sh is not found
Harald Hoyer 035915
 module_install() {
Harald Hoyer 035915
     local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
     local _ret
Harald Hoyer 035915
@@ -761,6 +855,9 @@ module_install() {
Harald Hoyer 035915
     fi
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# module_installkernel <dracut module>
Harald Hoyer 035915
+# execute the installkernel() function of module-setup.sh of <dracut module>
Harald Hoyer 035915
+# or the "installkernel" script, if module-setup.sh is not found
Harald Hoyer 035915
 module_installkernel() {
Harald Hoyer 035915
     local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
     local _ret
Harald Hoyer 035915
@@ -779,28 +876,9 @@ module_installkernel() {
Harald Hoyer 035915
     fi
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
-module_check_mount() {
Harald Hoyer 035915
-    local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
-    local _ret
Harald Hoyer 035915
-    mount_needs=1
Harald Hoyer 035915
-    [[ -d $_moddir ]] || return 1
Harald Hoyer 035915
-    if [[ ! -f $_moddir/module-setup.sh ]]; then
Harald Hoyer 035915
-        # if we do not have a check script, we are unconditionally included
Harald Hoyer 035915
-        [[ -x $_moddir/check ]] || return 0
Harald Hoyer 035915
-        mount_needs=1 $_moddir/check 0
Harald Hoyer 035915
-        _ret=$?
Harald Hoyer 035915
-    else
Harald Hoyer 035915
-        unset check depends install installkernel
Harald Hoyer 035915
-        . $_moddir/module-setup.sh
Harald Hoyer 035915
-        is_func check || return 1
Harald Hoyer 035915
-        check 0
Harald Hoyer 035915
-        _ret=$?
Harald Hoyer 035915
-        unset check depends install installkernel
Harald Hoyer 035915
-    fi
Harald Hoyer 035915
-    unset mount_needs
Harald Hoyer 035915
-    return $_ret
Harald Hoyer 035915
-}
Harald Hoyer 035915
-
Harald Hoyer 035915
+# check_mount <dracut module>
Harald Hoyer 035915
+# check_mount checks, if a dracut module is needed for the given
Harald Hoyer 035915
+# device and filesystem types in "${host_fs_types[@]}"
Harald Hoyer 035915
 check_mount() {
Harald Hoyer 035915
     local _mod=$1
Harald Hoyer 035915
     local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
@@ -840,6 +918,10 @@ check_mount() {
Harald Hoyer 035915
     return 0
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# check_module <dracut module> [<use_as_dep>]
Harald Hoyer 035915
+# check if a dracut module is to be used in the initramfs process
Harald Hoyer 035915
+# if <use_as_dep> is set, then the process also keeps track
Harald Hoyer 035915
+# that the modules were checked for the dependency tracking process
Harald Hoyer 035915
 check_module() {
Harald Hoyer 035915
     local _mod=$1
Harald Hoyer 035915
     local _moddir=$(echo ${dracutbasedir}/modules.d/??${1})
Harald Hoyer 035915
@@ -891,6 +973,8 @@ check_module() {
Harald Hoyer 035915
     return 0
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# for_each_module_dir <func>
Harald Hoyer 035915
+# execute "<func> <dracut module> 1"
Harald Hoyer 035915
 for_each_module_dir() {
Harald Hoyer 035915
     local _modcheck
Harald Hoyer 035915
     local _mod
Harald Hoyer 035915
@@ -1028,7 +1112,10 @@ find_kernel_modules () {
Harald Hoyer 035915
     find_kernel_modules_by_path  drivers
Harald Hoyer 035915
 }
Harald Hoyer 035915
 
Harald Hoyer 035915
+# instmods <kernel module> [<kernel module> ... ]
Harald Hoyer 035915
+# instmods <kernel subsystem>
Harald Hoyer 035915
 # install kernel modules along with all their dependencies.
Harald Hoyer 035915
+# <kernel subsystem> can be e.g. "=block" or "=drivers/usb/storage"
Harald Hoyer 035915
 instmods() {
Harald Hoyer 035915
     [[ $no_kernel = yes ]] && return
Harald Hoyer 035915
     # called [sub]functions inherit _fderr