diff --git a/makedumpfile-1.5.9.tar.gz b/makedumpfile-1.5.9.tar.gz deleted file mode 100644 index 601501e..0000000 --- a/makedumpfile-1.5.9.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:47d16312b3226f6d1a1e6548e22c33d00e8851fedab793d97da8d3c0a6205d4a -size 166881 diff --git a/makedumpfile-1.6.0.tar.gz b/makedumpfile-1.6.0.tar.gz new file mode 100644 index 0000000..f808109 --- /dev/null +++ b/makedumpfile-1.6.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3147abc52df2ceac1e9affef45bf37e2f2e1d9979bc94a761ee11e4044072ac +size 175080 diff --git a/makedumpfile-_count-_refcount-rename.patch b/makedumpfile-_count-_refcount-rename.patch new file mode 100644 index 0000000..ee179d6 --- /dev/null +++ b/makedumpfile-_count-_refcount-rename.patch @@ -0,0 +1,102 @@ +From: Vitaly Kuznetsov +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 + +--- + 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; diff --git a/makedumpfile-override-libtinfo.patch b/makedumpfile-override-libtinfo.patch new file mode 100644 index 0000000..22b5a70 --- /dev/null +++ b/makedumpfile-override-libtinfo.patch @@ -0,0 +1,32 @@ +From: Petr Tesarik +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 + +--- + 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 diff --git a/makedumpfile-rpmlintrc b/makedumpfile-rpmlintrc new file mode 100644 index 0000000..d139c39 --- /dev/null +++ b/makedumpfile-rpmlintrc @@ -0,0 +1 @@ +addFilter("devel-file-in-non-devel-package .*/usr/share/makedumpfile-1\.6\.0/eppic_scripts/.*\.c") diff --git a/makedumpfile.changes b/makedumpfile.changes index b9ca791..dbe1b9f 100644 --- a/makedumpfile.changes +++ b/makedumpfile.changes @@ -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 diff --git a/makedumpfile.spec b/makedumpfile.spec index bfef6f1..121004d 100644 --- a/makedumpfile.spec +++ b/makedumpfile.spec @@ -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/