On 09/25/15 at 03:12pm, Dave Young wrote:
On 09/19/15 at 02:03pm, Minfei Huang wrote:
> To make code more clear, add a new wrapper function to let config write
> into file once, if kdump calls it repeatly with the same argument.
>
> Make cleanup in function kdump_setup_iscsi_device.
>
> Signed-off-by: Minfei Huang <mhuang(a)redhat.com>
> ---
> dracut-module-setup.sh | 37 ++++++++++++-------------------------
> kdump-lib.sh | 9 +++++++++
> 2 files changed, 21 insertions(+), 25 deletions(-)
>
> diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
> index 9b398eb..0bf189b 100755
> --- a/dracut-module-setup.sh
> +++ b/dracut-module-setup.sh
> @@ -497,15 +497,12 @@ kdump_get_iscsi_initiator() {
> # No ibft handling yet.
> kdump_setup_iscsi_device() {
> local path=$1
> - local tgt_name; local tgt_ipaddr;
> - local username; local password; local userpwd_str;
> - local username_in; local password_in; local userpwd_in_str;
> - local netdev
> - local srcaddr
> - local idev
> - local netroot_str ; local initiator_str;
> + local tgt_name tgt_ipaddr
> + local username password userpwd_str
> + local username_in password_in userpwd_in_str
> + local netdev srcaddr
> + local netroot_str initiator_str
> local netroot_conf="${initdir}/etc/cmdline.d/50iscsi.conf"
> - local initiator_conf="/etc/iscsi/initiatorname.iscsi"
>
> dinfo "Found iscsi component $1"
>
> @@ -542,32 +539,22 @@ kdump_setup_iscsi_device() {
>
> kdump_setup_netdev $netdev $srcaddr
>
> - # prepare netroot= command line
> - # FIXME: Do we need to parse and set other parameters like protocol, port
> - # iscsi_iface_name, netdev_name, LUN etc.
> + [[ -f $netroot_conf ]] || touch $netroot_conf
>
> if is_ipv6_address $tgt_ipaddr; then
> tgt_ipaddr="[$tgt_ipaddr]"
> fi
> -
netroot_str="netroot=iscsi:${userpwd_str}${userpwd_in_str}@$tgt_ipaddr::::$tgt_name"
> -
> - [[ -f $netroot_conf ]] || touch $netroot_conf
>
> - # If netroot target does not exist already, append.
> - if ! grep -q $netroot_str $netroot_conf; then
> - echo $netroot_str >> $netroot_conf
> - dinfo "Appended $netroot_str to $netroot_conf"
> - fi
> + # prepare netroot= command line
> + # FIXME: Do we need to parse and set other parameters like protocol, port
> + # iscsi_iface_name, netdev_name, LUN etc.
> +
netroot_str="netroot=iscsi:${userpwd_str}${userpwd_in_str}@$tgt_ipaddr::::$tgt_name"
> + write_config_once "$netroot_str" "$netroot_conf"
>
> # Setup initator
> initiator_str=$(kdump_get_iscsi_initiator)
> [ $? -ne "0" ] && derror "Failed to get initiator
name" && return 1
> -
> - # If initiator details do not exist already, append.
> - if ! grep -q "$initiator_str" $netroot_conf; then
> - echo "$initiator_str" >> $netroot_conf
> - dinfo "Appended "$initiator_str" to $netroot_conf"
> - fi
> + write_config_once "$netroot_str" "$netroot_conf"
> }
>
> kdump_check_iscsi_targets () {
> diff --git a/kdump-lib.sh b/kdump-lib.sh
> index 4d34206..f6217a0 100755
> --- a/kdump-lib.sh
> +++ b/kdump-lib.sh
> @@ -230,3 +230,12 @@ is_hostname()
> fi
> echo $1 | grep -q "[a-zA-Z]"
> }
> +
> +# $1: content to be appended to file
> +# $2: target file
> +write_config_once()
append_config() is better? Just comment it about it will only append to
target file once is enough.
> +{
> + if ! grep -q "$1" "$2"; then
> + echo "$1" >> "$2"
dinfo in original code is missing
> + fi
> +}
It is only used in one file so I think no need to move it to kdump-lib.sh
though create a function is reasonable.
Hmmm.. Maybe I can add this patch to iSCSI fixed patch set. Thus it is
more reasonable to wrap new function.
Will post the new version with iSCSI fixed patchset.
Thanks
Minfei