Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kdump for openSUSE:Factory checked in at 2023-08-30 10:17:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kdump (Old) and /work/SRC/openSUSE:Factory/.kdump.new.1766 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdump" Wed Aug 30 10:17:34 2023 rev:139 rq:1105935 version:1.9.6 Changes: -------- --- /work/SRC/openSUSE:Factory/kdump/kdump.changes 2023-08-17 19:43:53.590828393 +0200 +++ /work/SRC/openSUSE:Factory/.kdump.new.1766/kdump.changes 2023-08-30 10:17:36.461990501 +0200 @@ -1,0 +2,9 @@ +Fri Aug 25 16:08:41 UTC 2023 - Jiri Bohac <jbo...@suse.com> + +- upgrade to version 1.9.6 + * use newer /sys/kernel/fadump/ instead of /sys/kernel/fadump_ + * use kexec -a which falls back to kexec_load(2) automatically + * update s390 udev rules + * drop systemd device timeout generator + +------------------------------------------------------------------- Old: ---- kdump-1.9.5.tar.xz New: ---- kdump-1.9.6.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdump.spec ++++++ --- /var/tmp/diff_new_pack.ABiYcT/_old 2023-08-30 10:17:41.822181790 +0200 +++ /var/tmp/diff_new_pack.ABiYcT/_new 2023-08-30 10:17:41.826181933 +0200 @@ -53,7 +53,7 @@ %define dracutlibdir %{_prefix}/lib/dracut Name: kdump -Version: 1.9.5 +Version: 1.9.6 Release: 0 Summary: Kernel crash dump scripts and utilities License: GPL-2.0-or-later @@ -64,7 +64,6 @@ BuildRequires: asciidoc BuildRequires: cmake >= 3.7 BuildRequires: gcc-c++ -BuildRequires: libblkid-devel BuildRequires: pkgconfig BuildRequires: systemd-sysvinit BuildRequires: util-linux-systemd ++++++ kdump-1.9.5.tar.xz -> kdump-1.9.6.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/.gitignore new/kdump-1.9.6/.gitignore --- old/kdump-1.9.5/.gitignore 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/.gitignore 2023-08-25 17:54:25.000000000 +0200 @@ -22,7 +22,6 @@ # resulting binaries calibrate/mkelfcorehdr calibrate/trackrss -dracut/device-timeout-generator dracut/init-fadump kdumptool/calibrate diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/70-kdump.rules.in new/kdump-1.9.6/70-kdump.rules.in --- old/kdump-1.9.5/70-kdump.rules.in 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/70-kdump.rules.in 2023-08-25 17:54:25.000000000 +0200 @@ -22,7 +22,7 @@ LABEL="kdump_try_restart" PROGRAM="/bin/cat /sys/kernel/kexec_crash_loaded", RESULT!="0", RUN+="/usr/lib/kdump/load-once.sh" @if @ARCH@ ppc64 ppc64le -SUBSYSTEM=="memory", TEST=="/sys/kernel/fadump_registered", PROGRAM="/bin/cat /sys/kernel/fadump_registered", RESULT!="0", RUN+="/usr/lib/kdump/load-once.sh" +SUBSYSTEM=="memory", TEST=="/sys/kernel/fadump/registered", PROGRAM="/bin/cat /sys/kernel/fadump/registered", RESULT!="0", RUN+="/usr/lib/kdump/load-once.sh" @endif LABEL="kdump_end" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/CMakeLists.txt new/kdump-1.9.6/CMakeLists.txt --- old/kdump-1.9.5/CMakeLists.txt 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/CMakeLists.txt 2023-08-25 17:54:25.000000000 +0200 @@ -72,11 +72,6 @@ # set (CMAKE_LIBRARY_PATH /usr/lib64 ${CMAKE_LIBRARY_PATH}) - -# libblkid -pkg_check_modules(BLKID REQUIRED blkid) - - # # Check for FADUMP # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/NEWS new/kdump-1.9.6/NEWS --- old/kdump-1.9.5/NEWS 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/NEWS 2023-08-25 17:54:25.000000000 +0200 @@ -1,3 +1,10 @@ +1.9.6 +----- + * use newer /sys/kernel/fadump/ instead of /sys/kernel/fadump_ + * use kexec -a which falls back to kexec_load(2) automatically + * update s390 udev rules + * drop systemd device timeout generator + 1.9.5 ----- * SELinux: temporary hack for bsc#1213721 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/README new/kdump-1.9.6/README --- old/kdump-1.9.5/README 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/README 2023-08-25 17:54:25.000000000 +0200 @@ -15,7 +15,6 @@ - asciidoc (http://www.methods.co.nz/asciidoc/), - cmake (http://www.cmake.org/). - - libblkid (libblkid-devel) It's maintained in a git tree at https://github.com/opensuse/kdump/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/calibrate/mkelfcorehdr.c new/kdump-1.9.6/calibrate/mkelfcorehdr.c --- old/kdump-1.9.5/calibrate/mkelfcorehdr.c 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/calibrate/mkelfcorehdr.c 2023-08-25 17:54:25.000000000 +0200 @@ -40,8 +40,6 @@ # define ELF_MACHINE EM_PPC #elif defined(__s390x__) || defined(__s390__) # define ELF_MACHINE EM_S390 -#elif defined(__ia64__) -# define ELF_MACHINE EM_IA_64 #elif defined(__aarch64__) # define ELF_MACHINE EM_AARCH64 #elif defined(__arm__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/doc/man/kdump.5.txt.in new/kdump-1.9.6/doc/man/kdump.5.txt.in --- old/kdump-1.9.5/doc/man/kdump.5.txt.in 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/doc/man/kdump.5.txt.in 2023-08-25 17:54:25.000000000 +0200 @@ -179,7 +179,7 @@ Additional options for *kexec*(8). -Default is "" except on IA64 where it is "--noio". +Default is "". MAKEDUMPFILE_OPTIONS @@ -279,14 +279,13 @@ several options, you have to add their value. The options are: 1:: - kdump command line is written to system log when executing /etc/init.d/kdump. + Print details when loading the dump kernel. 2:: Progress is written to stdout while dumping. 4:: - kdump command line is written so standard output when executing - /etc/init.d/kdump. + (same as 1) 8:: Debugging. The kdump-save script and most of the programs it runs @@ -294,15 +293,6 @@ Generates lots of output. However, it's very useful if something does not work. -16:: - Debugging when loading the kdump kernel. That creates lots of output to - stdout, so only use if you really want to debug that. It is useful if - kdump reports that it cannot find a suitable kernel but you think kdump - is wrong. - -So, for example, if you want to have the command line on stdout when loading the -kernel and also in the system log, just use KDUMP_VERBOSE = 5 (i.e. 1 + 4). - Default: "0". diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/dracut/CMakeLists.txt new/kdump-1.9.6/dracut/CMakeLists.txt --- old/kdump-1.9.5/dracut/CMakeLists.txt 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/dracut/CMakeLists.txt 2023-08-25 17:54:25.000000000 +0200 @@ -15,21 +15,6 @@ # along with this program; if not, see <https://www.gnu.org/licenses>. # -ADD_EXECUTABLE(device-timeout-generator - device-timeout-generator.c -) -TARGET_INCLUDE_DIRECTORIES(device-timeout-generator - PUBLIC ${BLKID_INCLUDE_DIRS}) -TARGET_LINK_LIBRARIES(device-timeout-generator - ${BLKID_LIBRARIES}) - -INSTALL( - TARGETS - device-timeout-generator - DESTINATION - /usr/lib/dracut/modules.d/99kdump -) - INSTALL ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/kdump-save diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/dracut/device-timeout-generator.c new/kdump-1.9.6/dracut/device-timeout-generator.c --- old/kdump-1.9.5/dracut/device-timeout-generator.c 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/dracut/device-timeout-generator.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,501 +0,0 @@ -#define _GNU_SOURCE -#include <string.h> -#include <ctype.h> -#include <stdarg.h> -#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <dirent.h> -#include <syslog.h> -#include <fstab.h> - -#include <blkid.h> - -#define DEV_KMSG "/dev/kmsg" -#define PROC_CMDLINE "/proc/cmdline" -#define ETC_CMDLINE "/etc/cmdline" -#define ETC_CMDLINE_D "/etc/cmdline.d" -#define CONF_SUFFIX ".conf" -#define CONF_SUFFIX_LEN (sizeof(CONF_SUFFIX)-1) - -#define KDUMP_DIR "/kdump/" -#define KDUMP_DIR_LEN (sizeof(KDUMP_DIR)-1) - -#define DEV_PREFIX "/dev/disk/by-" -#define DEV_PREFIX_LEN (sizeof(DEV_PREFIX)-1) - -#define READ_CHUNK_ADD 1024 -#define READ_CHUNK_MIN 256 - -typedef int parser_fn(const char *key, const char *val); -static parser_fn get_timeout; - -static const char program_name[] = "device-timeout-generator"; - -/* Variables that do not change can be global */ -static const char *unitdir; -static size_t unitdirlen; - -static unsigned long timeout; - -static int -error(const char *fmt, ...) -{ - static int fd = -1; - char *msg, *kmsg; - int len; - va_list ap; - - va_start(ap, fmt); - len = vasprintf(&msg, fmt, ap); - if (len < 0) - return len; - fprintf(stderr, "%s\n", msg); - va_end(ap); - - if (fd < 0) { - fd = open(DEV_KMSG, O_WRONLY|O_NOCTTY|O_CLOEXEC); - if (fd < 0) { - free(msg); - return -1; - } - } - - len = asprintf(&kmsg, "<%d> %s [%lu]: %s\n", - LOG_ERR, program_name, (unsigned long)getpid(), msg); - free(msg); - if (len < 0) - return len; - - len = write(fd, kmsg, len); - free(kmsg); - return len; -} - -static inline int -isoctal(char c) -{ - return c >= '0' && c <= '7'; -} - -static char * -skipws(char *s) -{ - while (isspace(*s)) - ++s; - return s; -} - -static void -unescape_fstab(char *spec) -{ - char *p, *q; - - p = q = spec; - while (*p) { - if (p[0] == '\\' && - isoctal(p[1]) && isoctal(p[2]) && isoctal(p[3])) { - *q++ = ((p[1] - '0') << 6) | - ((p[2] - '0') << 3) | - (p[3] - '0'); - p += 3; - } else - *q++ = *p++; - } -} - -static void -unquote(char **p, char *endp) -{ - if (*p && **p == '"') { - ++(*p); - if (endp[-1] == '"') - endp[-1] = '\0'; - } -} - -static char * -get_arg(char *args, char **key, char **val) -{ - int inquote; - - *key = args; - *val = NULL; - inquote = 0; - while (*args && (inquote || !isspace(*args))) { - if (*args == '"') - inquote = !inquote; - else if (*args == '=' && !*val) { - *args = '\0'; - *val = args + 1; - } - ++args; - } - unquote(key, args); - unquote(val, args); - - if (*args) - *args++ = '\0'; - return skipws(args); -} - -static int -parse_args(char *args, parser_fn *parse) -{ - char *key, *val, *p; - - p = skipws(args); - while (*p) { - p = get_arg(p, &key, &val); - if (parse(key, val)) - break; - } - return 0; -} - -static char * -slurp_fd(int fd) -{ - char *buf, *bufp; - size_t len, remain; - ssize_t rdlen; - - buf = bufp = NULL; - len = remain = 0; - do { - if (remain < READ_CHUNK_MIN) { - char *newbuf = realloc(buf, len + READ_CHUNK_ADD + 1); - if (!newbuf) { - free(buf); - return NULL; - } - len += READ_CHUNK_ADD; - remain += READ_CHUNK_ADD; - bufp = newbuf + (bufp - buf); - buf = newbuf; - } - - rdlen = read(fd, bufp, remain); - remain -= rdlen; - } while (rdlen > 0); - - if (rdlen < 0) { - free(buf); - return NULL; - } - - buf[len - remain] = '\0'; - return buf; -} - -static char * -slurp_file(const char *path) -{ - int fd; - char *ret; - - fd = open(path, O_RDONLY); - if (fd < 0) { - error("Cannot open '%s': %s", path, strerror(errno)); - return NULL; - } - - ret = slurp_fd(fd); - if (!ret) - error("Cannot read '%s': %s", path, strerror(errno)); - return ret; -} - -static int -parse_file(const char *fname, parser_fn *parse) -{ - char *args; - int ret; - - args = slurp_file(fname); - if (!args) - return -1; - - ret = parse_args(args, parse); - free(args); - return ret; -} - -static int -parse_dir(const char *dname, parser_fn *parse) -{ - DIR *dir; - struct dirent *e; - - dir = opendir(dname); - if (!dir) { - if (errno != ENOENT) - error("Cannot open '%s': %s", dname, strerror(errno)); - return -1; - } - - while ( (e = readdir(dir)) ) { - size_t len = strlen(e->d_name); - char *endp = e->d_name + len; - int fd; - char *args; - - if (len < CONF_SUFFIX_LEN || - strcmp(endp - CONF_SUFFIX_LEN, CONF_SUFFIX)) - continue; - fd = openat(dirfd(dir), e->d_name, O_RDONLY); - if (fd < 0) { - error("Cannot open '%s': %s", - e->d_name, strerror(errno)); - continue; - } - - args = slurp_fd(fd); - if (!args) { - error("Cannot read '%s': %s", - e->d_name, strerror(errno)); - continue; - } - - parse_args(args, parse); - free(args); - } - closedir(dir); - return 0; -} - -static int -parse_cmdline_files(parser_fn *parse) -{ - parse_dir(ETC_CMDLINE_D, parse); - - if (!access(ETC_CMDLINE, R_OK)) - parse_file(ETC_CMDLINE, parse); - - return parse_file(PROC_CMDLINE, parse); -}; - -static int -get_timeout(const char *key, const char *val) -{ - if (!strcmp(key, "rd.timeout") && val && *val) { - char *end; - unsigned long num = strtoul(val, &end, 0); - if (*end == '\0') - timeout = num; - else - error("Invalid rd.timeout format: %s", val); - } - return 0; -} - -static char * -evaluate_spec(const char *spec) -{ - char *tag, *value; - size_t len; - char *p; - char *ret, *retp; - - tag = strdup(spec); - if (!tag) - return NULL; - - value = strchr(tag, '='); - if (!value) - return tag; - - *value++ = '\0'; - if (*value == '"' || *value == '\'') { - char c = *value++; - - p = strrchr(value, c); - if (!p) { - errno = -EINVAL; - return NULL; - } - *p = '\0'; - } - - len = 4 * strlen(value); - ret = malloc(DEV_PREFIX_LEN + strlen(tag) + 1 + len + 1); - retp = stpcpy(ret, DEV_PREFIX); - for (p = tag; *p; ++p) - *retp++ = tolower(*p); - - *retp++ = '/'; - blkid_encode_string(value, retp, len + 1); - - free(tag); - return ret; -} - -static inline char -hex_digit(unsigned d) -{ - return d < 10 ? d + '0' : d - 10 + 'a'; -} - -static char * -hex_escape(char *s, char c) -{ - *s++ = '\\'; - *s++ = 'x'; - *s++ = hex_digit((unsigned)c >> 4); - *s++ = hex_digit((unsigned)c & 0x0f); - return s; -} - -static inline int -safe_unit_char(char c) -{ - return isalnum(c) || c == ':' || c == '_' || c == '.'; -} - -static char * -path_escape(char *path) -{ - size_t pathlen = strlen(path); - char *dedup, *ret; - char *src, *dst; - - ret = malloc(pathlen * 4 + 1); - if (!ret) - return ret; - - /* remove duplicate slashes */ - dst = dedup = ret + pathlen * 3; - for (src = path; *src; ++src) { - if (src[0] != '/' || (src[1] && src[1] != '/')) - *dst++ = *src; - } - *dst = '\0'; - - /* root directory special case */ - if (*dedup == '\0') - return strcpy(ret, "-"); - - dst = ret; - src = dedup; - if (*src == '/') - ++src; - if (*src == '.') - dst = hex_escape(dst, *src++); - - while (*src) { - if (*src == '/') - *dst++ = '-'; - else if (!safe_unit_char(*src)) - dst = hex_escape(dst, *src); - else - *dst++ = *src; - ++src; - } - *dst = '\0'; - - return ret; -} - -static int -write_conf(const char *path) -{ - FILE *f; - - f = fopen(path, "w"); - if (!f) { - error("Cannot open file '%s': %s", path, strerror(errno)); - return -1; - } - - if (fprintf(f, "[Unit]\nJobTimeoutSec=%lu\n", timeout) < 0) { - error("Cannot write to '%s': %s", path, strerror(errno)); - return -1; - } - - if (fclose(f)) { - error("Cannot close '%s': %s", path, strerror(errno)); - return -1; - } - - return 0; -} - -static int -create_conf(const char *spec) -{ - char *devname, *unitname, *confpath, *p; - int ret; - - devname = evaluate_spec(spec); - if (!devname) { - error("Cannot convert '%s' to device name: %s", - spec, strerror(errno)); - return -1; - } - - unitname = path_escape(devname); - if (!unitname) { - error("Cannot convert '%s' to systemd unit name: %s", - devname, strerror(errno)); - free(devname); - return -1; - } - free(devname); - - confpath = malloc(unitdirlen + 1 + strlen(unitname) + - sizeof(".device.d/timeout.conf")); - if (!confpath) { - error("Cannot allocate path for '%s': %s", - unitname, strerror(errno)); - free(unitname); - return -1; - } - p = stpcpy(confpath, unitdir); - *p++ = '/'; - p = stpcpy(p, unitname); - p = stpcpy(p, ".device.d"); - free(unitname); - - if (mkdir(confpath, S_IRWXU | S_IRWXG | S_IRWXO) && errno != EEXIST) { - error("Cannot create directory '%s': %s", - confpath, strerror(errno)); - free(confpath); - return -1; - } - - p = stpcpy(p, "/timeout.conf"); - ret = write_conf(confpath); - free(confpath); - return ret; -} - -int -main(int argc, char **argv) -{ - struct fstab *fs; - - umask(S_IWGRP | S_IWOTH); - - if (argc != 4) { - error("Wrong number of arguments: %d", argc); - return EXIT_FAILURE; - } - unitdir = argv[1]; - unitdirlen = strlen(argv[1]); - - parse_cmdline_files(get_timeout); - - while ((fs = getfsent()) != NULL) { - if (strncmp(fs->fs_file, KDUMP_DIR, KDUMP_DIR_LEN)) - continue; - - unescape_fstab(fs->fs_spec); - create_conf(fs->fs_spec); - } - - return EXIT_SUCCESS; -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/dracut/module-setup.sh new/kdump-1.9.6/dracut/module-setup.sh --- old/kdump-1.9.5/dracut/module-setup.sh 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/dracut/module-setup.sh 2023-08-25 17:54:25.000000000 +0200 @@ -130,28 +130,15 @@ esac } -# Output variables: -# kdump_kmods additional kernel modules updated -# kdump_ifmap hardware network interface map updated -cmdline_net() { - kdump_cmdline_ip -} - installkernel() { [ -n "$kdump_kmods" ] || return 0 hostonly='' instmods $kdump_kmods } install() { - if [[ $hostonly_cmdline == "yes" ]] ; then - # don't call cmdline_net in a subshell, it sets global variables - _cmdline_f=$(mktemp) || return 1 - cmdline_net > $_cmdline_f - local _cmdline=$(< $_cmdline_f) - rm $_cmdline_f - - [ -n "$_cmdline" ] && printf "%s\n" "$_cmdline" >> "${initdir}/etc/cmdline.d/99kdump-net.conf" - fi + # generate command line for network configuration + kdump_cmdline_ip > "${initdir}/etc/cmdline.d/99kdump-net.conf" + [[ -s "${initdir}/etc/cmdline.d/99kdump-net.conf" ]] || rm "${initdir}/etc/cmdline.d/99kdump-net.conf" # parse the configuration, check values and initialize defaults "$KDUMP_LIBDIR"/kdump-read-config.sh --print > ${initdir}/etc/kdump.conf @@ -162,19 +149,11 @@ inst_hook cmdline 50 "$moddir/kdump-root.sh" inst_script "$moddir"/kdump-save /kdump/kdump-save - if dracut_module_included "systemd" ; then - inst_binary "$moddir/device-timeout-generator" \ - "$systemdutildir"/system-generators/kdump-device-timeout-generator - - inst_simple "$moddir/kdump-save.service" "$systemdsystemunitdir/kdump-save.service" + inst_simple "$moddir/kdump-save.service" "$systemdsystemunitdir/kdump-save.service" - mkdir -p "$initdir/$systemdsystemunitdir"/initrd.target.wants - ln_r "$systemdsystemunitdir"/kdump-save.service \ - "$systemdsystemunitdir"/initrd.target.wants/kdump-save.service - else - inst_hook mount 30 "$moddir/mount-kdump.sh" - inst_hook pre-pivot 90 "$KDUMP_LIBDIR"/kdump-save - fi + mkdir -p "$initdir/$systemdsystemunitdir"/initrd.target.wants + ln_r "$systemdsystemunitdir"/kdump-save.service \ + "$systemdsystemunitdir"/initrd.target.wants/kdump-save.service # per-protocol config case ${KDUMP_PROTO} in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/dracut/setup-kdump.functions new/kdump-1.9.6/dracut/setup-kdump.functions --- old/kdump-1.9.5/dracut/setup-kdump.functions 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/dracut/setup-kdump.functions 2023-08-25 17:54:25.000000000 +0200 @@ -751,22 +751,29 @@ _dev_id_match=", ATTR{dev_id}==\"$_dev_id\"" fi - cat >"${_root}/etc/udev/rules.d/51-qeth-${_dev}.rules" <<EOF -ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="qeth", IMPORT{program}="collect $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$_cdev0", IMPORT{program}="collect $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$_cdev1", IMPORT{program}="collect $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$_cdev2", IMPORT{program}="collect $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -ACTION=="remove", SUBSYSTEM=="drivers", KERNEL=="qeth", IMPORT{program}="collect --remove $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -ACTION=="remove", SUBSYSTEM=="ccw", KERNEL=="$_cdev0", IMPORT{program}="collect --remove $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -ACTION=="remove", SUBSYSTEM=="ccw", KERNEL=="$_cdev1", IMPORT{program}="collect --remove $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -ACTION=="remove", SUBSYSTEM=="ccw", KERNEL=="$_cdev2", IMPORT{program}="collect --remove $_dev %k $_cdev0 $_cdev1 $_cdev2 qeth" -TEST=="[ccwgroup/$_dev]", GOTO="qeth-${_dev}-end" -ACTION=="add", SUBSYSTEM=="ccw", ENV{COLLECT_$_dev}=="0", ATTR{[drivers/ccwgroup:qeth]group}="$_cdev0,$_cdev1,$_cdev2" -ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="qeth", ENV{COLLECT_$_dev}=="0", ATTR{[drivers/ccwgroup:qeth]group}="$_cdev0,$_cdev1,$_cdev2" -LABEL="qeth-$_dev-end" -ACTION=="add", SUBSYSTEM=="ccwgroup", KERNEL=="$_dev", ATTR{portno}="$_portno" -ACTION=="add", SUBSYSTEM=="ccwgroup", KERNEL=="$_dev", ATTR{layer2}="$_layer2" -ACTION=="add", SUBSYSTEM=="ccwgroup", KERNEL=="$_dev", ATTR{online}="1" + cat >"${_root}/etc/udev/rules.d/41-qeth-${_dev}.rules" <<EOF +#generated by kdump +ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="qeth", GOTO="group_qeth_${_dev}" +ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="${_cdev0}", DRIVER=="qeth", GOTO="group_qeth_${_dev}" +ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="${_cdev1}", DRIVER=="qeth", GOTO="group_qeth_${_dev}" +ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="${_cdev2}", DRIVER=="qeth", GOTO="group_qeth_${_dev}" +ACTION=="add", SUBSYSTEM=="ccwgroup", KERNEL=="${_dev}", DRIVER=="qeth", GOTO="cfg_qeth_${_dev}" +GOTO="end_qeth_${_dev}" + +LABEL="group_qeth_${_dev}" +TEST=="[ccwgroup/${_dev}]", GOTO="end_qeth_${_dev}" +TEST!="[ccw/${_cdev0}]", GOTO="end_qeth_${_dev}" +TEST!="[ccw/${_cdev1}]", GOTO="end_qeth_${_dev}" +TEST!="[ccw/${_cdev2}]", GOTO="end_qeth_${_dev}" +ATTR{[drivers/ccwgroup:qeth]group}="${_cdev0},${_cdev1},${_cdev2}" +GOTO="end_qeth_${_dev}" + +LABEL="cfg_qeth_${_dev}" +ATTR{[ccwgroup/0.0.0800]layer2}="${_layer2}" +ATTR{[ccwgroup/0.0.0800]portno}="${_portno}" +ATTR{[ccwgroup/0.0.0800]online}="1" + +LABEL="end_qeth_${_dev}" EOF cat >"${_root}/etc/udev/rules.d/80-persistent-net-${_bootif}.rules" <<EOF diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/init/load.sh new/kdump-1.9.6/init/load.sh --- old/kdump-1.9.5/init/load.sh 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/init/load.sh 2023-08-25 17:54:25.000000000 +0200 @@ -4,8 +4,8 @@ # Load the kdump kernel KEXEC=/sbin/kexec -FADUMP_ENABLED=/sys/kernel/fadump_enabled -FADUMP_REGISTERED=/sys/kernel/fadump_registered +FADUMP_ENABLED=/sys/kernel/fadump/enabled +FADUMP_REGISTERED=/sys/kernel/fadump/registered UDEV_RULES_DIR=/run/udev/rules.d kdump_initrd=/var/lib/kdump/initrd kdump_kernel=/var/lib/kdump/kernel @@ -82,9 +82,8 @@ echo "${kdump_console}" } -# + # Get the name of kernel parameter to limit CPUs -# Linux 2.6.34+ has nr_cpus, older versions must use maxcpus function cpus_param() { # nr_cpus does not work properly on ppc/ppc64/ppc64le @@ -95,14 +94,7 @@ ;; esac - local version=$(get_kernel_version "$1") - version="${version%%-*}" - local verhex=$(IFS=. ; set -- $version ; printf "0x%02x%02x%02x" $1 $2 $3) - if [ $(( $verhex )) -ge $(( 0x020622 )) ] ; then - echo nr_cpus - else - echo maxcpus - fi + echo nr_cpus } # @@ -162,22 +154,6 @@ } # -# Builds the kexec options from KEXEC_OPTIONS -# Parameters: 1) kernel -function build_kexec_options() -{ - local kdump_kernel="$1" - local options="$KEXEC_OPTIONS" - - # add --noio on ia64 - if [ $(uname -i) = "ia64" ] ; then - options="$options --noio" - fi - - echo "$options" -} - -# # Load kdump using kexec function load_kdump_kexec() { @@ -190,41 +166,19 @@ fi local kdump_commandline=$(build_kdump_commandline "$kdump_kernel") - local kexec_options=$(build_kexec_options "$kdump_kernel") - - KEXEC_CALL="$KEXEC -p $kdump_kernel --append=\"$kdump_commandline\"" - KEXEC_CALL="$KEXEC_CALL --initrd=$kdump_initrd $kexec_options" - kdump_echo "Starting load kdump kernel with kexec_file_load(2)" - kdump_echo "kexec cmdline: $KEXEC_CALL -s" + KEXEC_CALL="$KEXEC -p $kdump_kernel --append=\"$kdump_commandline\" --initrd=$kdump_initrd $KEXEC_OPTIONS -a" - output=$(eval "$KEXEC_CALL -s" 2>&1) + $VERBOSE && echo "Starting kdump kernel load; kexec cmdline: $KEXEC_CALL" + eval "$KEXEC_CALL" result=$? - # print stderr in any case to show warnings that normally - # would be supressed (bnc#374185) - echo "$output" - if [ $result -eq 0 ] ; then - kdump_logger "Loaded kdump kernel: $KEXEC_CALL -s, Result: $output" + $VERBOSE && echo "Loaded kdump kernel." return 0 fi - # kexec_file_load(2) failed - kdump_echo "kexec_file_load(2) failed" - kdump_echo "Starting load kdump kernel with kexec_load(2)" - kdump_echo "kexec cmdline: $KEXEC_CALL" - - output=$(eval "$KEXEC_CALL" 2>&1) - result=$? - echo "$output" - - if [ $result -eq 0 ] ; then - kdump_logger "Loaded kdump kernel: $KEXEC_CALL, Result: $output" - else - kdump_logger "FAILED to load kdump kernel: $KEXEC_CALL, Result: $output" - fi - + echo "kexec failed." >&2 return $result } @@ -299,9 +253,6 @@ fi echo "$msg" - if [ $((${KDUMP_VERBOSE:-0} & 1)) -gt 0 ] ; then - logger -t kdump "$msg" - fi return $result } @@ -326,23 +277,8 @@ . /usr/lib/kdump/kdump-read-config.sh -if [ $((${KDUMP_VERBOSE:-0} & 4)) -gt 0 ] ; then - function kdump_echo() - { - echo "$@" - } -else - function kdump_echo(){ :; } -fi - -if [ $((${KDUMP_VERBOSE:-0} & 1)) -gt 0 ] ; then - function kdump_logger() - { - logger -t kdump "$@" - } -else - function kdump_logger(){ :; } -fi +VERBOSE=false +[[ $((${KDUMP_VERBOSE:-0} & 5)) -gt 0 ]] && VERBOSE=true update= shrink= @@ -377,8 +313,8 @@ # see bsc#1213721 #[[ -f "${kdump_initrd}" ]] || exit 6 #[[ -f "${kdump_kernel}" ]] || exit 6 -/bin/test -f "${kdump_initrd}" || exit 6 -/bin/test -f "${kdump_kernel}" || exit 6 +/usr/bin/test -f "${kdump_initrd}" || exit 6 +/usr/bin/test -f "${kdump_kernel}" || exit 6 if [ "$shrink" = yes ] ; then kdumptool calibrate --shrink > /dev/null diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/init/mkdumprd new/kdump-1.9.6/init/mkdumprd --- old/kdump-1.9.5/init/mkdumprd 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/init/mkdumprd 2023-08-25 17:54:25.000000000 +0200 @@ -273,6 +273,7 @@ DRACUT_ARGS=( "--force" "--hostonly" + "--hostonly-cmdline" "--no-hostonly-default-device" "--add" "kdump" "--omit" "plymouth resume usrmount zz-fadumpinit" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/init/unload.sh new/kdump-1.9.6/init/unload.sh --- old/kdump-1.9.5/init/unload.sh 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/init/unload.sh 2023-08-25 17:54:25.000000000 +0200 @@ -4,7 +4,7 @@ # Unload the kdump kernel KEXEC=/sbin/kexec -FADUMP_REGISTERED=/sys/kernel/fadump_registered +FADUMP_REGISTERED=/sys/kernel/fadump/registered UDEV_RULES_DIR=/run/udev/rules.d . /usr/lib/kdump/kdump-read-config.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/kdumptool/calibrate.cc new/kdump-1.9.6/kdumptool/calibrate.cc --- old/kdump-1.9.5/kdumptool/calibrate.cc 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/kdumptool/calibrate.cc 2023-08-25 17:54:25.000000000 +0200 @@ -98,10 +98,6 @@ # define align_memmap s390_align_memmap -#elif defined(__ia64__) -# define DEF_RESERVE_KB MB(768) -# define CAN_REDUCE_CPUS 1 - #elif defined(__aarch64__) # define DEF_RESERVE_KB MB(192) # define CAN_REDUCE_CPUS 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdump-1.9.5/packaging/suse/kdump.spec new/kdump-1.9.6/packaging/suse/kdump.spec --- old/kdump-1.9.5/packaging/suse/kdump.spec 2023-07-28 16:37:45.000000000 +0200 +++ new/kdump-1.9.6/packaging/suse/kdump.spec 2023-08-25 17:54:25.000000000 +0200 @@ -63,7 +63,6 @@ BuildRequires: asciidoc BuildRequires: cmake >= 3.7 BuildRequires: gcc-c++ -BuildRequires: libblkid-devel BuildRequires: pkgconfig BuildRequires: systemd-sysvinit BuildRequires: util-linux-systemd