kdump-lib: Introduce a help function _crashkernel_add()
This help function can manipulate the crashkernel cmdline by adding an number for each item. Also a basic test case for _crashkernel_add() is provided in this patch. Credit to Philipp, who contributes the original code. Signed-off-by: Pingfan Liu <piliu@redhat.com> Reviewed-by: Coiby Xu <coxu@redhat.com> Reviewed-by: Philipp Rudo <prudo@redhat.com>
This commit is contained in:
parent
0471131a16
commit
51efbcf83e
58
kdump-lib.sh
58
kdump-lib.sh
@ -786,6 +786,64 @@ get_recommend_size()
|
|||||||
echo "0M"
|
echo "0M"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# $1 crashkernel=""
|
||||||
|
# $2 delta in unit of MB
|
||||||
|
_crashkernel_add()
|
||||||
|
{
|
||||||
|
local _ck _add _entry _ret
|
||||||
|
local _range _size _offset
|
||||||
|
|
||||||
|
_ck="$1"
|
||||||
|
_add="$2"
|
||||||
|
_ret=""
|
||||||
|
|
||||||
|
if [[ "$_ck" == *@* ]]; then
|
||||||
|
_offset="@${_ck##*@}"
|
||||||
|
_ck=${_ck%@*}
|
||||||
|
elif [[ "$_ck" == *,high ]] || [[ "$_ck" == *,low ]]; then
|
||||||
|
_offset=",${_ck##*,}"
|
||||||
|
_ck=${_ck%,*}
|
||||||
|
else
|
||||||
|
_offset=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
while read -d , -r _entry; do
|
||||||
|
[[ -n "$_entry" ]] || continue
|
||||||
|
if [[ "$_entry" == *:* ]]; then
|
||||||
|
_range=${_entry%:*}
|
||||||
|
_size=${_entry#*:}
|
||||||
|
else
|
||||||
|
_range=""
|
||||||
|
_size=${_entry}
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${_size: -1}" in
|
||||||
|
K)
|
||||||
|
_size=${_size::-1}
|
||||||
|
_size="$((_size + (_add * 1024)))K"
|
||||||
|
;;
|
||||||
|
M)
|
||||||
|
_size=${_size::-1}
|
||||||
|
_size="$((_size + _add))M"
|
||||||
|
;;
|
||||||
|
G)
|
||||||
|
_size=${_size::-1}
|
||||||
|
_size="$((_size * 1024 + _add))M"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_size="$((_size + (_add * 1024 * 1024)))"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[[ -n "$_range" ]] && _ret+="$_range:"
|
||||||
|
_ret+="$_size,"
|
||||||
|
done <<< "$_ck,"
|
||||||
|
|
||||||
|
_ret=${_ret%,}
|
||||||
|
[[ -n "$_offset" ]] && _ret+=$_offset
|
||||||
|
echo "$_ret"
|
||||||
|
}
|
||||||
|
|
||||||
# get default crashkernel
|
# get default crashkernel
|
||||||
# $1 dump mode, if not specified, dump_mode will be judged by is_fadump_capable
|
# $1 dump mode, if not specified, dump_mode will be judged by is_fadump_capable
|
||||||
kdump_get_arch_recommend_crashkernel()
|
kdump_get_arch_recommend_crashkernel()
|
||||||
|
@ -48,6 +48,26 @@ Describe 'kdump-lib'
|
|||||||
End
|
End
|
||||||
End
|
End
|
||||||
|
|
||||||
|
Describe "_crashkernel_add()"
|
||||||
|
Context "when the input parameter is '1G-4G:256M,4G-64G:320M,64G-:576M'"
|
||||||
|
delta=100
|
||||||
|
Parameters
|
||||||
|
"1G-4G:256M,4G-64G:320M,64G-:576M" "1G-4G:356M,4G-64G:420M,64G-:676M"
|
||||||
|
"1G-4G:256M,4G-64G:320M,64G-:576M@4G" "1G-4G:356M,4G-64G:420M,64G-:676M@4G"
|
||||||
|
"1G-4G:1G,4G-64G:2G,64G-:3G@4G" "1G-4G:1124M,4G-64G:2148M,64G-:3172M@4G"
|
||||||
|
"1G-4G:10000K,4G-64G:20000K,64G-:40000K@4G" "1G-4G:112400K,4G-64G:122400K,64G-:142400K@4G"
|
||||||
|
"300M,high" "400M,high"
|
||||||
|
"300M,low" "400M,low"
|
||||||
|
"500M@1G" "600M@1G"
|
||||||
|
End
|
||||||
|
It "should add delta to the values after ':'"
|
||||||
|
|
||||||
|
When call _crashkernel_add "$1" "$delta"
|
||||||
|
The output should equal "$2"
|
||||||
|
End
|
||||||
|
End
|
||||||
|
End
|
||||||
|
|
||||||
Describe 'prepare_cmdline()'
|
Describe 'prepare_cmdline()'
|
||||||
get_bootcpu_apicid() {
|
get_bootcpu_apicid() {
|
||||||
echo 1
|
echo 1
|
||||||
|
Loading…
Reference in New Issue
Block a user