From 66eecc0116e9cdf189137a96485126fe501730e2 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 20 Apr 2022 16:56:02 +0100 Subject: [PATCH] Parse auto_reset_crashkernel in kdump resolves: rhbz#2042772 Add new directives and options for chrony --- ...y-add-new-directives-and-options-745.patch | 109 +++++++ ...ump-parse-auto_reset_crashkernel-754.patch | 276 ++++++++++++++++++ augeas.spec | 15 +- 3 files changed, 399 insertions(+), 1 deletion(-) create mode 100644 0001-Chrony-add-new-directives-and-options-745.patch create mode 100644 0002-Kdump-parse-auto_reset_crashkernel-754.patch diff --git a/0001-Chrony-add-new-directives-and-options-745.patch b/0001-Chrony-add-new-directives-and-options-745.patch new file mode 100644 index 0000000..a75a8b8 --- /dev/null +++ b/0001-Chrony-add-new-directives-and-options-745.patch @@ -0,0 +1,109 @@ +From 08101c754aafab4d0f79367839bbd0d6012c31cf Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 2 Mar 2022 14:54:39 +0100 +Subject: [PATCH 1/2] Chrony: add new directives and options (#745) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Support new configuration added in chrony 4.1 and 4.2. + +Co-authored-by: Raphaƫl Pinson +(cherry picked from commit 5f3a566511626c35f69961598f1f332db01ed7a1) +--- + lenses/chrony.aug | 11 ++++++++--- + lenses/tests/test_chrony.aug | 9 +++++++-- + 2 files changed, 15 insertions(+), 5 deletions(-) + +diff --git a/lenses/chrony.aug b/lenses/chrony.aug +index 91c8ed51..d1c29531 100644 +--- a/lenses/chrony.aug ++++ b/lenses/chrony.aug +@@ -57,8 +57,11 @@ module Chrony = + (************************************************************************ + * Group: Create required expressions + ************************************************************************) ++ (* Variable: hex *) ++ let hex = /[0-9a-fA-F]+/ ++ + (* Variable: number *) +- let number = integer | decimal | decimal . /[eE]/ . integer ++ let number = integer | decimal | decimal . /[eE]/ . integer | hex + + (* Variable: address_re *) + let address_re = Rx.ip | Rx.hostname +@@ -79,6 +82,8 @@ module Chrony = + Server/Peer/Pool options with values + *) + let cmd_options = "asymmetry" ++ | "certset" ++ | "extfield" + | "filter" + | "key" + | /maxdelay((dev)?ratio)?/ +@@ -96,7 +101,7 @@ module Chrony = + Server/Peer/Pool options without values + *) + let cmd_flags = "auto_offline"|"iburst"|"noselect"|"offline"|"prefer" +- |"require"|"trust"|"xleave"|"burst"|"nts" ++ |"copy"|"require"|"trust"|"xleave"|"burst"|"nts" + + (* Variable: ntp_source + Server/Peer/Pool key names +@@ -183,7 +188,7 @@ module Chrony = + | "nocerttimecheck" | "ntsdumpdir" | "ntsntpserver" + | "ntsport" | "ntsprocesses" | "ntsrefresh" | "ntsrotate" + | "ntsservercert" | "ntsserverkey" | "ntstrustedcerts" +- | "ntpsigndsocket" | "pidfile" ++ | "ntpsigndsocket" | "pidfile" | "ptpport" + | "port" | "reselectdist" | "rtcautotrim" | "rtcdevice" + | "rtcfile" | "sched_priority" | "stratumweight" | "user" + +diff --git a/lenses/tests/test_chrony.aug b/lenses/tests/test_chrony.aug +index 0c86cde7..691e63f7 100644 +--- a/lenses/tests/test_chrony.aug ++++ b/lenses/tests/test_chrony.aug +@@ -17,8 +17,8 @@ module Test_Chrony = + server ntp1.example.com + server ntp2.example.com iburst + server ntp3.example.com presend 2 +-server ntp4.example.com offline polltarget 4 +-server ntp5.example.com maxdelay 2 offline ++server ntp4.example.com offline polltarget 4 extfield F323 copy ++server ntp5.example.com maxdelay 2 offline certset 1 + server ntp6.example.com maxdelay 2 iburst presend 2 xleave offset 1e-4 + server ntp7.example.com iburst presend 2 offline prefer trust require + server ntp8.example.com minsamples 8 maxsamples 16 version 3 +@@ -88,6 +88,7 @@ ntsport 123 + ntsprocesses 2 + ntsrefresh 86400 + ntsrotate 86400 ++ptpport 319 + " + + test Chrony.lns get exampleconf = +@@ -110,10 +111,13 @@ ntsrotate 86400 + { "server" = "ntp4.example.com" + { "offline" } + { "polltarget" = "4" } ++ { "extfield" = "F323" } ++ { "copy" } + } + { "server" = "ntp5.example.com" + { "maxdelay" = "2" } + { "offline" } ++ { "certset" = "1" } + } + { "server" = "ntp6.example.com" + { "maxdelay" = "2" } +@@ -312,6 +316,7 @@ ntsrotate 86400 + { "ntsprocesses" = "2" } + { "ntsrefresh" = "86400" } + { "ntsrotate" = "86400" } ++ { "ptpport" = "319" } + + + (* Local Variables: *) +-- +2.31.1 + diff --git a/0002-Kdump-parse-auto_reset_crashkernel-754.patch b/0002-Kdump-parse-auto_reset_crashkernel-754.patch new file mode 100644 index 0000000..3e205b7 --- /dev/null +++ b/0002-Kdump-parse-auto_reset_crashkernel-754.patch @@ -0,0 +1,276 @@ +From e0bce2e8c21ccc69729676e8dc6fa1e541aedee2 Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Wed, 20 Apr 2022 10:13:06 +0200 +Subject: [PATCH 2/2] Kdump: parse "auto_reset_crashkernel" (#754) + +The "auto_reset_crashkernel" keyword was introduced in the following +kexec-tools patch set: + + [PATCH v5 00/13] crashkernel=auto: support fadump and remove + crashkernel.default + https://lists.fedoraproject.org/archives/list/kexec@lists.fedoraproject.org/thread/V5WPTRAPJR65QXSTNW6W6E7ZBAUCQNUH/#V5WPTRAPJR65QXSTNW6W6E7ZBAUCQNUH + +Related upstream commit: + + https://src.fedoraproject.org/rpms/kexec-tools/c/73ced7f451a72 + +Recognize "auto_reset_crashkernel" in "kdump.aug". Update the test case. +Also copy "kdump.conf" from kexec-tools @ 73ced7f451a72 to +"tests/root/etc/kdump.conf". + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2042772 +Signed-off-by: Laszlo Ersek +(cherry picked from commit 288a028da531a5f58d9ee89bc29fd73e7483bf24) +--- + lenses/kdump.aug | 4 + + lenses/tests/test_kdump.aug | 2 + + tests/root/etc/kdump.conf | 192 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 198 insertions(+) + create mode 100644 tests/root/etc/kdump.conf + +diff --git a/lenses/kdump.aug b/lenses/kdump.aug +index ddf50ede..e50486c3 100644 +--- a/lenses/kdump.aug ++++ b/lenses/kdump.aug +@@ -25,6 +25,7 @@ let empty = Util.empty + let comment = Util.comment + let value_to_eol = store /[^ \t\n#][^\n#]*[^ \t\n#]|[^ \t\n#]/ + let int_to_eol = store Rx.integer ++let yn_to_eol = store ("yes" | "no") + let delimiter = Util.del_ws_spc + let eol = Util.eol + let value_to_spc = store Rx.neg1 +@@ -64,9 +65,12 @@ let simple_kws = "raw" | "net" | "path" | "core_collector" | "kdump_post" + let int_kws = "force_rebuild" | "override_resettable" | "debug_mem_level" + | "link_delay" | "disk_timeout" + ++let yn_kws = "auto_reset_crashkernel" ++ + let option = Build.key_value_line_comment ( simple_kws | fs_types ) + delimiter value_to_eol comment + | Build.key_value_line_comment int_kws delimiter int_to_eol comment ++ | Build.key_value_line_comment yn_kws delimiter yn_to_eol comment + | list "extra_bins" + | list "extra_modules" + | list "blacklist" +diff --git a/lenses/tests/test_kdump.aug b/lenses/tests/test_kdump.aug +index 51c79a38..ff82af05 100644 +--- a/lenses/tests/test_kdump.aug ++++ b/lenses/tests/test_kdump.aug +@@ -11,6 +11,7 @@ module Test_Kdump = + #comment after empty line + # + #comment after empty comment ++auto_reset_crashkernel yes + path /var/crash #comment after entry + core_collector makedumpfile -c + default poweroff +@@ -49,6 +50,7 @@ blacklist gfs2 + { "#comment" = "comment after empty line" } + { } + { "#comment" = "comment after empty comment" } ++ { "auto_reset_crashkernel" = "yes" } + { "path" = "/var/crash" + { "#comment" = "comment after entry" } } + { "core_collector" = "makedumpfile -c" } +diff --git a/tests/root/etc/kdump.conf b/tests/root/etc/kdump.conf +new file mode 100644 +index 00000000..d4fc78b0 +--- /dev/null ++++ b/tests/root/etc/kdump.conf +@@ -0,0 +1,192 @@ ++# This file contains a series of commands to perform (in order) in the kdump ++# kernel after a kernel crash in the crash kernel(1st kernel) has happened. ++# ++# Directives in this file are only applicable to the kdump initramfs, and have ++# no effect once the root filesystem is mounted and the normal init scripts are ++# processed. ++# ++# Currently, only one dump target and path can be specified. If the dumping to ++# the configured target fails, the failure action which can be configured via ++# the "failure_action" directive will be performed. ++# ++# Supported options: ++# ++# auto_reset_crashkernel ++# - whether to reset kernel crashkernel to new default value ++# or not when kexec-tools updates the default crashkernel value and ++# existing kernels using the old default kernel crashkernel value. ++# The default value is yes. ++# ++# raw ++# - Will dd /proc/vmcore into . ++# Use persistent device names for partition devices, ++# such as /dev/vg/. ++# ++# nfs ++# - Will mount nfs to , and copy /proc/vmcore to ++# //%HOST-%DATE/, supports DNS. ++# ++# ssh ++# - Will save /proc/vmcore to :/%HOST-%DATE/, ++# supports DNS. ++# NOTE: make sure the user has write permissions on the server. ++# ++# sshkey ++# - Will use the sshkey to do ssh dump. ++# Specify the path of the ssh key to use when dumping ++# via ssh. The default value is /root/.ssh/kdump_id_rsa. ++# ++# ++# - Will mount -t , and copy ++# /proc/vmcore to //%HOST_IP-%DATE/. ++# NOTE: can be a device node, label or uuid. ++# It's recommended to use persistent device names ++# such as /dev/vg/. ++# Otherwise it's suggested to use label or uuid. ++# ++# path ++# - "path" represents the file system path in which vmcore ++# will be saved. If a dump target is specified in ++# kdump.conf, then "path" is relative to the specified ++# dump target. ++# ++# Interpretation of "path" changes a bit if the user didn't ++# specify any dump target explicitly in kdump.conf. In this ++# case, "path" represents the absolute path from root. The ++# dump target and adjusted path are arrived at automatically ++# depending on what's mounted in the current system. ++# ++# Ignored for raw device dumps. If unset, will use the default ++# "/var/crash". ++# ++# core_collector ++# - This allows you to specify the command to copy ++# the vmcore. The default is makedumpfile, which on ++# some architectures can drastically reduce vmcore size. ++# See /sbin/makedumpfile --help for a list of options. ++# Note that the -i and -g options are not needed here, ++# as the initrd will automatically be populated with a ++# config file appropriate for the running kernel. ++# The default core_collector for raw/ssh dump is: ++# "makedumpfile -F -l --message-level 7 -d 31". ++# The default core_collector for other targets is: ++# "makedumpfile -l --message-level 7 -d 31". ++# ++# "makedumpfile -F" will create a flattened vmcore. ++# You need to use "makedumpfile -R" to rearrange the dump data to ++# a normal dumpfile readable with analysis tools. For example: ++# "makedumpfile -R vmcore < vmcore.flat". ++# ++# For core_collector format details, you can refer to ++# kexec-kdump-howto.txt or kdump.conf manpage. ++# ++# kdump_post ++# - This directive allows you to run a executable binary ++# or script after the vmcore dump process terminates. ++# The exit status of the current dump process is fed to ++# the executable binary or script as its first argument. ++# All files under /etc/kdump/post.d are collectively sorted ++# and executed in lexical order, before binary or script ++# specified kdump_post parameter is executed. ++# ++# kdump_pre ++# - Works like the "kdump_post" directive, but instead of running ++# after the dump process, runs immediately before it. ++# Exit status of this binary is interpreted as follows: ++# 0 - continue with dump process as usual ++# non 0 - run the final action (reboot/poweroff/halt) ++# All files under /etc/kdump/pre.d are collectively sorted and ++# executed in lexical order, after binary or script specified ++# kdump_pre parameter is executed. ++# Even if the binary or script in /etc/kdump/pre.d directory ++# returns non 0 exit status, the processing is continued. ++# ++# extra_bins ++# - This directive allows you to specify additional binaries or ++# shell scripts to be included in the kdump initrd. ++# Generally they are useful in conjunction with a kdump_post ++# or kdump_pre binary or script which depends on these extra_bins. ++# ++# extra_modules ++# - This directive allows you to specify extra kernel modules ++# that you want to be loaded in the kdump initrd. ++# Multiple modules can be listed, separated by spaces, and any ++# dependent modules will automatically be included. ++# ++# failure_action ++# - Action to perform in case dumping fails. ++# reboot: Reboot the system. ++# halt: Halt the system. ++# poweroff: Power down the system. ++# shell: Drop to a bash shell. ++# Exiting the shell reboots the system by default, ++# or perform "final_action". ++# dump_to_rootfs: Dump vmcore to rootfs from initramfs context and ++# reboot by default or perform "final_action". ++# Useful when non-root dump target is specified. ++# The default option is "reboot". ++# ++# default ++# - Same as the "failure_action" directive above, but this directive ++# is obsolete and will be removed in the future. ++# ++# final_action ++# - Action to perform in case dumping succeeds. Also performed ++# when "shell" or "dump_to_rootfs" failure action finishes. ++# Each action is same as the "failure_action" directive above. ++# The default is "reboot". ++# ++# force_rebuild <0 | 1> ++# - By default, kdump initrd will only be rebuilt when necessary. ++# Specify 1 to force rebuilding kdump initrd every time when kdump ++# service starts. ++# ++# force_no_rebuild <0 | 1> ++# - By default, kdump initrd will be rebuilt when necessary. ++# Specify 1 to bypass rebuilding of kdump initrd. ++# ++# force_no_rebuild and force_rebuild options are mutually ++# exclusive and they should not be set to 1 simultaneously. ++# ++# override_resettable <0 | 1> ++# - Usually an unresettable block device can't be a dump target. ++# Specifying 1 when you want to dump even though the block ++# target is unresettable ++# By default, it is 0, which will not try dumping destined to fail. ++# ++# dracut_args ++# - Pass extra dracut options when rebuilding kdump initrd. ++# ++# fence_kdump_args ++# - Command line arguments for fence_kdump_send (it can contain ++# all valid arguments except hosts to send notification to). ++# ++# fence_kdump_nodes ++# - List of cluster node(s) except localhost, separated by spaces, ++# to send fence_kdump notifications to. ++# (this option is mandatory to enable fence_kdump). ++# ++ ++#raw /dev/vg/lv_kdump ++#ext4 /dev/vg/lv_kdump ++#ext4 LABEL=/boot ++#ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937 ++#nfs my.server.com:/export/tmp ++#nfs [2001:db8::1:2:3:4]:/export/tmp ++#ssh user@my.server.com ++#ssh user@2001:db8::1:2:3:4 ++#sshkey /root/.ssh/kdump_id_rsa ++auto_reset_crashkernel yes ++path /var/crash ++core_collector makedumpfile -l --message-level 7 -d 31 ++#core_collector scp ++#kdump_post /var/crash/scripts/kdump-post.sh ++#kdump_pre /var/crash/scripts/kdump-pre.sh ++#extra_bins /usr/bin/lftp ++#extra_modules gfs2 ++#failure_action shell ++#force_rebuild 1 ++#force_no_rebuild 1 ++#dracut_args --omit-drivers "cfg80211 snd" --add-drivers "ext2 ext3" ++#fence_kdump_args -p 7410 -f auto -c 0 -i 10 ++#fence_kdump_nodes node1 node2 +-- +2.31.1 + diff --git a/augeas.spec b/augeas.spec index 03787a8..132ad5d 100644 --- a/augeas.spec +++ b/augeas.spec @@ -1,6 +1,6 @@ Name: augeas Version: 1.13.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A library for changing configuration files License: LGPLv2+ @@ -14,6 +14,14 @@ URL: http://augeas.net/ # So I had to create a tarball myself using make dist. Source0: %{name}-%{version}.tar.gz +# Add new directives and options for chrony. +# Upstream commit 5f3a566511626c35f69961598f1f332db01ed7a1 +Patch1: 0001-Chrony-add-new-directives-and-options-745.patch + +# Parse auto_reset_crashkernel in kdump (RHBZ#2042772). +# Upstream commit 288a028da531a5f58d9ee89bc29fd73e7483bf24 +Patch2: 0002-Kdump-parse-auto_reset_crashkernel-754.patch + Provides: bundled(gnulib) BuildRequires: make @@ -130,6 +138,11 @@ rm -f $RPM_BUILD_ROOT/usr/bin/dump %{_libdir}/libfa.a %changelog +* Wed Aug 20 2022 Richard W.M. Jones - 1.13.0-2 +- Parse auto_reset_crashkernel in kdump + resolves: rhbz#2042772 +- Add new directives and options for chrony + * Wed Jan 12 2022 Richard W.M. Jones - 1.13.0-1 - New upstream version 1.13.0