Accepting request 412328 from Kernel:kdump

Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/412328
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/makedumpfile?expand=0&rev=61
This commit is contained in:
Dominique Leuenberger 2016-07-24 17:43:17 +00:00 committed by Git OBS Bridge
commit 597c9a1264
7 changed files with 202 additions and 6 deletions

View File

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

View File

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

View File

@ -0,0 +1,102 @@
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

@ -0,0 +1,32 @@
From: Petr Tesarik <ptesarik@suse.com>
Subject: Allow to override the tinfo library used for eppic
Patch-mainline: never; only needed for compatibility with older ncurses
Allow to override the "-ltinfo" linker option with a make variable.
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
---
Makefile | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/Makefile
+++ b/Makefile
@@ -67,6 +67,8 @@ LIBS := -lsnappy $(LIBS)
CFLAGS += -DUSESNAPPY
endif
+TINFOLIB = -ltinfo
+
LIBS := -lpthread $(LIBS)
all: makedumpfile
@@ -90,7 +92,7 @@ makedumpfile: $(SRC_BASE) $(OBJ_PART) $(
gzip -c ./makedumpfile.conf.5 > ./makedumpfile.conf.5.gz
eppic_makedumpfile.so: extension_eppic.c
- $(CC) $(CFLAGS) $(LDFLAGS) -shared -rdynamic -o $@ extension_eppic.c -fPIC -leppic -ltinfo
+ $(CC) $(CFLAGS) $(LDFLAGS) -shared -rdynamic -o $@ extension_eppic.c -fPIC -leppic ${TINFOLIB}
clean:
rm -f $(OBJ) $(OBJ_PART) $(OBJ_ARCH) makedumpfile makedumpfile.8.gz makedumpfile.conf.5.gz

1
makedumpfile-rpmlintrc Normal file
View File

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

View File

@ -1,3 +1,46 @@
-------------------------------------------------------------------
Tue Jul 12 15:56:04 UTC 2016 - ptesarik@suse.com
- Rename Support-_count-_refcount-rename-in-struct-p.patch to
makedumpfile-_count-_refcount-rename.patch.
-------------------------------------------------------------------
Tue Jul 12 12:16:40 UTC 2016 - ptesarik@suse.com
- Silence rpmlint errors about devel files in non-devel package;
despite their .c suffix, the provided eppic scripts are intended
for production, not development.
-------------------------------------------------------------------
Tue Jul 12 10:08:41 UTC 2016 - ptesarik@suse.com
- Build and install the eppic extension.
- makedumpfile-override-libtinfo.patch: Allow to override the tinfo
library used for eppic.
-------------------------------------------------------------------
Tue Jul 12 09:13:25 UTC 2016 - ptesarik@suse.com
- Update to 1.6.0
* Exclude page structures of non-dumped pages.
- Drop upstreamed patch
* Looking-for-page.compound_order-compound_dtor-.patch
* Skip-examining-compound-tail-pages.patch
-------------------------------------------------------------------
Fri Jul 8 08:50:40 UTC 2016 - mkubecek@suse.cz
- Looking-for-page.compound_order-compound_dtor-.patch:
fix excluding hugepages (kernel 4.4 compatibility)
- Skip-examining-compound-tail-pages.patch
fix excluding compound tail pages (kernel 4.5 compatibility)
-------------------------------------------------------------------
Fri Jul 8 05:57:04 UTC 2016 - mkubecek@suse.cz
- Support-_count-_refcount-rename-in-struct-p.patch:
support 4.7 kernel (page._count renamed to page._refcount)
-------------------------------------------------------------------
Sun Feb 14 08:11:59 UTC 2016 - mpluskal@suse.com

View File

@ -23,23 +23,33 @@
%define have_snappy 0
%endif
%endif
%if 0%{?suse_version} < 1310 && 0%{?sles_version} < 12
%define ncurses_make_opts TINFOLIB=-lncurses
%endif
Name: makedumpfile
Version: 1.5.9
Version: 1.6.0
Release: 0
Summary: Partial kernel dump
License: GPL-2.0
Group: System/Kernel
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
BuildRequires: libelf-devel
BuildRequires: libeppic-devel
BuildRequires: lzo-devel
BuildRequires: ncurses-devel
BuildRequires: xz-devel
BuildRequires: zlib-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: %ix86 x86_64 ia64 ppc ppc64 ppc64le s390x %arm aarch64
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 ppc64le s390x %{arm} aarch64
%if 0%{?suse_version} >= 1140 || 0%{?sles_version} >= 11
BuildRequires: libbz2-devel
%else
@ -58,18 +68,24 @@ via gdb or crash utility.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%build
%if %{have_snappy}
export USESNAPPY=on
%endif
make %{?_smp_mflags} COPTFLAGS="%{optflags}" USELZO=on LINKTYPE=dynamic
export USELZO=on
export LINKTYPE=dynamic
make %{?_smp_mflags} COPTFLAGS="%{optflags}" LDFLAGS="-Wl,-rpath,%{_libdir}/%{name}-%{version}"
make %{?_smp_mflags} COPTFLAGS="%{optflags}" eppic_makedumpfile.so %{?ncurses_make_opts}
%install
install -D -m 0755 makedumpfile %{buildroot}%{_bindir}/makedumpfile
install -D -m 0755 makedumpfile-R.pl %{buildroot}%{_bindir}/makedumpfile-R.pl
install -D -m 0644 makedumpfile.8 %{buildroot}%{_mandir}/man8/makedumpfile.8
install -D -m 0644 makedumpfile.conf.5 %{buildroot}%{_mandir}/man5/makedumpfile.conf.5
install -D -m 0755 eppic_makedumpfile.so %{buildroot}%{_libdir}/%{name}-%{version}/eppic_makedumpfile.so
install -d -m 0755 %{buildroot}%{_datadir}/%{name}-%{version}/eppic_scripts
install -m 0644 -t %{buildroot}%{_datadir}/%{name}-%{version}/eppic_scripts/ eppic_scripts/*
@ -78,6 +94,8 @@ install -m 0644 -t %{buildroot}%{_datadir}/%{name}-%{version}/eppic_scripts/ epp
%doc README COPYING IMPLEMENTATION
%{_mandir}/man?/*
%{_bindir}/*
%dir %{_libdir}/%{name}-%{version}
%{_libdir}/%{name}-%{version}/eppic_makedumpfile.so
%dir %{_datadir}/%{name}-%{version}
%{_datadir}/%{name}-%{version}/eppic_scripts/