Accepting request 494686 from home:ptesarik:branches:Kernel:kdump

Upgrade to makedumpfile-1.6.1

OBS-URL: https://build.opensuse.org/request/show/494686
OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/makedumpfile?expand=0&rev=100
This commit is contained in:
Petr Tesařík 2017-05-11 15:50:06 +00:00 committed by Git OBS Bridge
parent a3846ac79b
commit 1ba4387a37
6 changed files with 16 additions and 110 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e3147abc52df2ceac1e9affef45bf37e2f2e1d9979bc94a761ee11e4044072ac
size 175080

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0b6e73106998670407887de9e1a505b3a2dbb2fb517a4b968a665eda8fb097ce
size 176228

View File

@ -1,102 +0,0 @@
From: Vitaly Kuznetsov <vkuznets@redhat.com>
Date: Fri, 17 Jun 2016 18:41:26 +0900
Subject: [PATCH v2] Support _count -> _refcount rename in struct page
Patch-mainline: Released-1-6-1?
Git-commit: 2c21d4656e8d3c2af2b1e14809d076941ae69e96
_count member was renamed to _refcount in linux commit 0139aa7b7fa12
("mm: rename _count, field of the struct page, to _refcount") and this
broke makedumpfile. The reason for making the change was to find all users
accessing it directly and not through the recommended API. I tried
suggesting to revert the change but failed, I see no other choice than to
start supporting both _count and _refcount in makedumpfile.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
makedumpfile.c | 26 +++++++++++++++++++++-----
makedumpfile.h | 3 ++-
2 files changed, 23 insertions(+), 6 deletions(-)
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -1579,7 +1579,14 @@ get_structure_info(void)
*/
SIZE_INIT(page, "page");
OFFSET_INIT(page.flags, "page", "flags");
- OFFSET_INIT(page._count, "page", "_count");
+ OFFSET_INIT(page._refcount, "page", "_refcount");
+ if (OFFSET(page._refcount) == NOT_FOUND_STRUCTURE) {
+ info->flag_use_count = TRUE;
+ OFFSET_INIT(page._refcount, "page", "_count");
+ } else {
+ info->flag_use_count = FALSE;
+ }
+
OFFSET_INIT(page.mapping, "page", "mapping");
OFFSET_INIT(page._mapcount, "page", "_mapcount");
OFFSET_INIT(page.private, "page", "private");
@@ -2044,7 +2051,7 @@ get_mem_type(void)
if ((SIZE(page) == NOT_FOUND_STRUCTURE)
|| (OFFSET(page.flags) == NOT_FOUND_STRUCTURE)
- || (OFFSET(page._count) == NOT_FOUND_STRUCTURE)
+ || (OFFSET(page._refcount) == NOT_FOUND_STRUCTURE)
|| (OFFSET(page.mapping) == NOT_FOUND_STRUCTURE)) {
ret = NOT_FOUND_MEMTYPE;
} else if ((((SYMBOL(node_data) != NOT_FOUND_SYMBOL)
@@ -2151,7 +2158,10 @@ write_vmcoreinfo_data(void)
* write the member offset of 1st kernel
*/
WRITE_MEMBER_OFFSET("page.flags", page.flags);
- WRITE_MEMBER_OFFSET("page._count", page._count);
+ if (info->flag_use_count)
+ WRITE_MEMBER_OFFSET("page._count", page._refcount);
+ else
+ WRITE_MEMBER_OFFSET("page._refcount", page._refcount);
WRITE_MEMBER_OFFSET("page.mapping", page.mapping);
WRITE_MEMBER_OFFSET("page.lru", page.lru);
WRITE_MEMBER_OFFSET("page._mapcount", page._mapcount);
@@ -2491,7 +2501,13 @@ read_vmcoreinfo(void)
READ_MEMBER_OFFSET("page.flags", page.flags);
- READ_MEMBER_OFFSET("page._count", page._count);
+ READ_MEMBER_OFFSET("page._refcount", page._refcount);
+ if (OFFSET(page._refcount) == NOT_FOUND_STRUCTURE) {
+ info->flag_use_count = TRUE;
+ READ_MEMBER_OFFSET("page._count", page._refcount);
+ } else {
+ info->flag_use_count = FALSE;
+ }
READ_MEMBER_OFFSET("page.mapping", page.mapping);
READ_MEMBER_OFFSET("page.lru", page.lru);
READ_MEMBER_OFFSET("page._mapcount", page._mapcount);
@@ -5615,7 +5631,7 @@ __exclude_unnecessary_pages(unsigned lon
pcache = page_cache + (index_pg * SIZE(page));
flags = ULONG(pcache + OFFSET(page.flags));
- _count = UINT(pcache + OFFSET(page._count));
+ _count = UINT(pcache + OFFSET(page._refcount));
mapping = ULONG(pcache + OFFSET(page.mapping));
if (OFFSET(page.compound_order) != NOT_FOUND_STRUCTURE) {
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -1100,6 +1100,7 @@ struct DumpInfo {
int flag_nospace; /* the flag of "No space on device" error */
int flag_vmemmap; /* kernel supports vmemmap address space */
int flag_excludevm; /* -e - excluding unused vmemmap pages */
+ int flag_use_count; /* _refcount is named _count in struct page */
unsigned long vaddr_for_vtop; /* virtual address for debugging */
long page_size; /* size of page */
long page_shift;
@@ -1483,7 +1484,7 @@ struct size_table {
struct offset_table {
struct page {
long flags;
- long _count;
+ long _refcount;
long mapping;
long lru;
long _mapcount;

View File

@ -1 +1 @@
addFilter("devel-file-in-non-devel-package .*/usr/share/makedumpfile-1\.6\.0/eppic_scripts/.*\.c")
addFilter("devel-file-in-non-devel-package .*/usr/share/makedumpfile-1\.6\.1/eppic_scripts/.*\.c")

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Thu May 11 15:32:13 UTC 2017 - ptesarik@suse.com
- Update to 1.6.1
* Enhance support for aarch64
* Enhance support for ppc64
* Support kernels up to 4.8
- Drop upstreamed patch
* makedumpfile-_count-_refcount-rename.patch
-------------------------------------------------------------------
Tue Jul 12 15:56:04 UTC 2016 - ptesarik@suse.com

View File

@ -1,7 +1,7 @@
#
# spec file for package makedumpfile
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -29,7 +29,7 @@
%endif
Name: makedumpfile
Version: 1.6.0
Version: 1.6.1
Release: 0
Summary: Partial kernel dump
License: GPL-2.0
@ -38,7 +38,6 @@ Url: https://sourceforge.net/projects/makedumpfile/
Source: https://sourceforge.net/projects/makedumpfile/files/makedumpfile/%{version}/%{name}-%{version}.tar.gz
Source99: %{name}-rpmlintrc
Patch0: %{name}-coptflags.diff
Patch1: %{name}-_count-_refcount-rename.patch
Patch2: %{name}-override-libtinfo.patch
BuildRequires: libdw-devel
BuildRequires: libebl-devel
@ -68,7 +67,6 @@ via gdb or crash utility.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%build