commit kernel-source for openSUSE:Factory
Hello community, here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2014-09-12 15:24:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kernel-source (Old) and /work/SRC/openSUSE:Factory/.kernel-source.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "kernel-source" Changes: -------- --- /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes 2014-09-07 11:08:25.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes 2014-09-12 15:25:05.000000000 +0200 @@ -1,0 +2,24 @@ +Sun Sep 7 06:40:17 CEST 2014 - jslaby@suse.cz + +- Linux 3.16.2 (bko#81111 bnc#887046 bnc#889790). +- Update config files. +- Refresh patches.xen/xen-x86-EFI. +- Refresh patches.xen/xen-x86-bzImage. +- Refresh patches.xen/xen3-auto-common.diff. +- Refresh patches.xen/xen3-patch-2.6.37. +- Delete + patches.fixes/Btrfs-Fix-memory-corruption-by-ulist_add_merge-on-32. +- Delete patches.fixes/drm-omapdrm-fix-compiler-errors. +- Delete + patches.fixes/nfs-nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null. +- Delete + patches.suse/btrfs-0003-read-lock-extent-buffer-while-walking-backrefs.patch. +- Delete + patches.suse/btrfs-0006-fix-compressed-write-corruption-on-enospc.patch. +- Delete + patches.suse/btrfs-0008-fix-csum-tree-corruption-duplicate-and-outdate.patch. +- Delete + patches.suse/btrfs-0033-fix-task-hang-under-heavy-compressed-write.patch. +- commit dcee397 + +------------------------------------------------------------------- kernel-default.changes: same change kernel-desktop.changes: same change kernel-docs.changes: same change kernel-ec2.changes: same change kernel-lpae.changes: same change kernel-obs-build.changes: same change kernel-obs-qa-xen.changes: same change kernel-obs-qa.changes: same change kernel-pae.changes: same change kernel-source.changes: same change kernel-syms.changes: same change kernel-vanilla.changes: same change kernel-xen.changes: same change ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kernel-debug.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 3.16 -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %define vanilla_only 0 @@ -59,11 +59,11 @@ Summary: A Debug Version of the Kernel License: GPL-2.0 Group: System/Kernel -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif Url: http://www.kernel.org/ BuildRequires: bc kernel-default.spec: same change kernel-desktop.spec: same change ++++++ kernel-docs.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -16,7 +16,7 @@ # -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -25,11 +25,11 @@ Summary: Kernel Documentation License: GPL-2.0 Group: Documentation/Man -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif BuildRequires: docbook-toys BuildRequires: docbook-utils ++++++ kernel-ec2.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 3.16 -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %define vanilla_only 0 @@ -59,11 +59,11 @@ Summary: The Amazon EC2 Xen Kernel License: GPL-2.0 Group: System/Kernel -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif Url: http://www.kernel.org/ BuildRequires: bc kernel-lpae.spec: same change ++++++ kernel-obs-build.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -19,7 +19,7 @@ #!BuildIgnore: post-build-checks -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -45,11 +45,11 @@ Summary: package kernel and initrd for OBS VM builds License: GPL-2.0 Group: SLES -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif %description ++++++ kernel-obs-qa-xen.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -17,7 +17,7 @@ # needsrootforbuild -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -36,11 +36,11 @@ Summary: Basic QA tests for the kernel License: GPL-2.0 Group: SLES -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif %description kernel-obs-qa.spec: same change ++++++ kernel-pae.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 3.16 -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %define vanilla_only 0 @@ -59,11 +59,11 @@ Summary: Kernel with PAE Support License: GPL-2.0 Group: System/Kernel -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif Url: http://www.kernel.org/ BuildRequires: bc ++++++ kernel-source.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -18,7 +18,7 @@ %define srcversion 3.16 -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %define vanilla_only 0 @@ -30,11 +30,11 @@ Summary: The Linux Kernel Sources License: GPL-2.0 Group: Development/Sources -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif Url: http://www.kernel.org/ AutoReqProv: off ++++++ kernel-syms.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -24,12 +24,12 @@ Summary: Kernel Symbol Versions (modversions) License: GPL-2.0 Group: Development/Sources -Version: 3.16.1 +Version: 3.16.2 %if %using_buildservice %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif %else %define kernel_source_release %(LC_ALL=C rpm -q kernel-devel%variant-%version --qf "%{RELEASE}" | grep -v 'not installed' || echo 0) ++++++ kernel-vanilla.spec ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:10.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:10.000000000 +0200 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 3.16 -%define patchversion 3.16.1 +%define patchversion 3.16.2 %define variant %{nil} %define vanilla_only 0 @@ -59,11 +59,11 @@ Summary: The Standard Kernel - without any SUSE patches License: GPL-2.0 Group: System/Kernel -Version: 3.16.1 +Version: 3.16.2 %if 0%{?is_kotd} -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %else -Release: <RELEASE>.g2ab6585 +Release: <RELEASE>.gdcee397 %endif Url: http://www.kernel.org/ BuildRequires: bc kernel-xen.spec: same change ++++++ config.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/xen new/config/i386/xen --- old/config/i386/xen 2014-08-20 13:07:13.000000000 +0200 +++ new/config/i386/xen 2014-09-07 06:40:17.000000000 +0200 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 3.16.0 Kernel Configuration +# Linux/i386 3.16.2 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -453,6 +453,9 @@ CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_PHYSICAL_START=0x2000 +CONFIG_RELOCATABLE=y +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_X86_NEED_RELOCS=y CONFIG_PHYSICAL_ALIGN=0x2000 CONFIG_XEN_BZIMAGE=y CONFIG_HOTPLUG_CPU=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/xen new/config/x86_64/xen --- old/config/x86_64/xen 2014-08-20 13:07:13.000000000 +0200 +++ new/config/x86_64/xen 2014-09-07 06:40:17.000000000 +0200 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 3.16.0 Kernel Configuration +# Linux/x86_64 3.16.2 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -439,6 +439,8 @@ CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_PHYSICAL_START=0x4000 +CONFIG_RELOCATABLE=y +# CONFIG_RANDOMIZE_BASE is not set CONFIG_PHYSICAL_ALIGN=0x4000 CONFIG_XEN_BZIMAGE=y CONFIG_HOTPLUG_CPU=y ++++++ patches.fixes.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/Btrfs-Fix-memory-corruption-by-ulist_add_merge-on-32 new/patches.fixes/Btrfs-Fix-memory-corruption-by-ulist_add_merge-on-32 --- old/patches.fixes/Btrfs-Fix-memory-corruption-by-ulist_add_merge-on-32 2014-08-26 13:57:20.000000000 +0200 +++ new/patches.fixes/Btrfs-Fix-memory-corruption-by-ulist_add_merge-on-32 1970-01-01 01:00:00.000000000 +0100 @@ -1,114 +0,0 @@ -From 4eb1f66dce6c4dc28dd90a7ffbe6b2b1cb08aa4e Mon Sep 17 00:00:00 2001 -From: Takashi Iwai <tiwai@suse.de> -Date: Mon, 28 Jul 2014 10:57:04 +0200 -Subject: [PATCH] Btrfs: Fix memory corruption by ulist_add_merge() on 32bit arch -Git-commit: 4eb1f66dce6c4dc28dd90a7ffbe6b2b1cb08aa4e -Patch-mainline: 3.17-rc1 -References: bnc#887046 - -We've got bug reports that btrfs crashes when quota is enabled on -32bit kernel, typically with the Oops like below: - BUG: unable to handle kernel NULL pointer dereference at 00000004 - IP: [<f9234590>] find_parent_nodes+0x360/0x1380 [btrfs] - *pde = 00000000 - Oops: 0000 [#1] SMP - CPU: 0 PID: 151 Comm: kworker/u8:2 Tainted: G S W 3.15.2-1.gd43d97e-default #1 - Workqueue: btrfs-qgroup-rescan normal_work_helper [btrfs] - task: f1478130 ti: f147c000 task.ti: f147c000 - EIP: 0060:[<f9234590>] EFLAGS: 00010213 CPU: 0 - EIP is at find_parent_nodes+0x360/0x1380 [btrfs] - EAX: f147dda8 EBX: f147ddb0 ECX: 00000011 EDX: 00000000 - ESI: 00000000 EDI: f147dda4 EBP: f147ddf8 ESP: f147dd38 - DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 - CR0: 8005003b CR2: 00000004 CR3: 00bf3000 CR4: 00000690 - Stack: - 00000000 00000000 f147dda4 00000050 00000001 00000000 00000001 00000050 - 00000001 00000000 d3059000 00000001 00000022 000000a8 00000000 00000000 - 00000000 000000a1 00000000 00000000 00000001 00000000 00000000 11800000 - Call Trace: - [<f923564d>] __btrfs_find_all_roots+0x9d/0xf0 [btrfs] - [<f9237bb1>] btrfs_qgroup_rescan_worker+0x401/0x760 [btrfs] - [<f9206148>] normal_work_helper+0xc8/0x270 [btrfs] - [<c025e38b>] process_one_work+0x11b/0x390 - [<c025eea1>] worker_thread+0x101/0x340 - [<c026432b>] kthread+0x9b/0xb0 - [<c0712a71>] ret_from_kernel_thread+0x21/0x30 - [<c0264290>] kthread_create_on_node+0x110/0x110 - -This indicates a NULL corruption in prefs_delayed list. The further -investigation and bisection pointed that the call of ulist_add_merge() -results in the corruption. - -ulist_add_merge() takes u64 as aux and writes a 64bit value into -old_aux. The callers of this function in backref.c, however, pass a -pointer of a pointer to old_aux. That is, the function overwrites -64bit value on 32bit pointer. This caused a NULL in the adjacent -variable, in this case, prefs_delayed. - -Here is a quick attempt to band-aid over this: a new function, -ulist_add_merge_ptr() is introduced to pass/store properly a pointer -value instead of u64. There are still ugly void ** cast remaining -in the callers because void ** cannot be taken implicitly. But, it's -safer than explicit cast to u64, anyway. - -Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=887046 -Cc: <stable@vger.kernel.org> [v3.11+] -Signed-off-by: Takashi Iwai <tiwai@suse.de> -Signed-off-by: Chris Mason <clm@fb.com> - ---- - fs/btrfs/backref.c | 11 +++++------ - fs/btrfs/ulist.h | 15 +++++++++++++++ - 2 files changed, 20 insertions(+), 6 deletions(-) - ---- a/fs/btrfs/backref.c -+++ b/fs/btrfs/backref.c -@@ -276,9 +276,8 @@ static int add_all_parents(struct btrfs_ - } - if (ret > 0) - goto next; -- ret = ulist_add_merge(parents, eb->start, -- (uintptr_t)eie, -- (u64 *)&old, GFP_NOFS); -+ ret = ulist_add_merge_ptr(parents, eb->start, -+ eie, (void **)&old, GFP_NOFS); - if (ret < 0) - break; - if (!ret && extent_item_pos) { -@@ -1011,9 +1010,9 @@ again: - goto out; - ref->inode_list = eie; - } -- ret = ulist_add_merge(refs, ref->parent, -- (uintptr_t)ref->inode_list, -- (u64 *)&eie, GFP_NOFS); -+ ret = ulist_add_merge_ptr(refs, ref->parent, -+ ref->inode_list, -+ (void **)&eie, GFP_NOFS); - if (ret < 0) - goto out; - if (!ret && extent_item_pos) { ---- a/fs/btrfs/ulist.h -+++ b/fs/btrfs/ulist.h -@@ -57,6 +57,21 @@ void ulist_free(struct ulist *ulist); - int ulist_add(struct ulist *ulist, u64 val, u64 aux, gfp_t gfp_mask); - int ulist_add_merge(struct ulist *ulist, u64 val, u64 aux, - u64 *old_aux, gfp_t gfp_mask); -+ -+/* just like ulist_add_merge() but take a pointer for the aux data */ -+static inline int ulist_add_merge_ptr(struct ulist *ulist, u64 val, void *aux, -+ void **old_aux, gfp_t gfp_mask) -+{ -+#if BITS_PER_LONG == 32 -+ u64 old64 = (uintptr_t)*old_aux; -+ int ret = ulist_add_merge(ulist, val, (uintptr_t)aux, &old64, gfp_mask); -+ *old_aux = (void *)((uintptr_t)old64); -+ return ret; -+#else -+ return ulist_add_merge(ulist, val, (u64)aux, (u64 *)old_aux, gfp_mask); -+#endif -+} -+ - struct ulist_node *ulist_next(struct ulist *ulist, - struct ulist_iterator *uiter); - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-omapdrm-fix-compiler-errors new/patches.fixes/drm-omapdrm-fix-compiler-errors --- old/patches.fixes/drm-omapdrm-fix-compiler-errors 2014-08-26 13:57:20.000000000 +0200 +++ new/patches.fixes/drm-omapdrm-fix-compiler-errors 1970-01-01 01:00:00.000000000 +0100 @@ -1,113 +0,0 @@ -From 2d31ca3ad7d5d44c8adc7f253c96ce33f3a2e931 Mon Sep 17 00:00:00 2001 -From: Russell King <rmk+kernel@arm.linux.org.uk> -Date: Sat, 12 Jul 2014 10:53:41 +0100 -Subject: [PATCH] drm: omapdrm: fix compiler errors -Git-commit: 2d31ca3ad7d5d44c8adc7f253c96ce33f3a2e931 -Patch-mainline: 3.17-rc1 - -Regular randconfig nightly testing has detected problems with omapdrm. - -omapdrm fails to build when the kernel is built to support 64-bit DMA -addresses and/or 64-bit physical addresses due to an assumption about -the width of these types. - -Use %pad to print DMA addresses, rather than %x or %Zx (which is even -more wrong than %x). Avoid passing a uint32_t pointer into a function -which expects dma_addr_t pointer. - -Drivers/gpu/drm/omapdrm/omap_plane.c: In function 'omap_plane_pre_apply': -drivers/gpu/drm/omapdrm/omap_plane.c:145:2: error: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' [-Werror=format] -drivers/gpu/drm/omapdrm/omap_plane.c:145:2: error: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'dma_addr_t' [-Werror=format] -Make[5]: *** [drivers/gpu/drm/omapdrm/omap_plane.o] Error 1 -Drivers/gpu/drm/omapdrm/omap_gem.c: In function 'omap_gem_get_paddr': -drivers/gpu/drm/omapdrm/omap_gem.c:794:4: error: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'dma_addr_t' [-Werror=format] -Drivers/gpu/drm/omapdrm/omap_gem.c: In function 'omap_gem_describe': -drivers/gpu/drm/omapdrm/omap_gem.c:991:4: error: format '%Zx' expects argument of type 'size_t', but argument 7 has type 'dma_addr_t' [-Werror=format] -Drivers/gpu/drm/omapdrm/omap_gem.c: In function 'omap_gem_init': -drivers/gpu/drm/omapdrm/omap_gem.c:1470:4: error: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'dma_addr_t' [-Werror=format] -Make[5]: *** [drivers/gpu/drm/omapdrm/omap_gem.o] Error 1 -Drivers/gpu/drm/omapdrm/omap_dmm_tiler.c: In function 'dmm_txn_append': -drivers/gpu/drm/omapdrm/omap_dmm_tiler.c:226:2: error: passing argument 3 of 'alloc_dma' from incompatible pointer type [-Werror] -Make[5]: *** [drivers/gpu/drm/omapdrm/omap_dmm_tiler.o] Error 1 -Make[5]: Target `__build' not remade because of errors. -Make[4]: *** [drivers/gpu/drm/omapdrm] Error 2 - -Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> -Signed-off-by: Dave Airlie <airlied@redhat.com> -Acked-by: Takashi Iwai <tiwai@suse.de> - ---- - drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 6 ++++-- - drivers/gpu/drm/omapdrm/omap_gem.c | 10 +++++----- - drivers/gpu/drm/omapdrm/omap_plane.c | 4 ++-- - 3 files changed, 11 insertions(+), 9 deletions(-) - ---- a/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c -+++ b/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c -@@ -199,7 +199,7 @@ static struct dmm_txn *dmm_txn_init(stru - static void dmm_txn_append(struct dmm_txn *txn, struct pat_area *area, - struct page **pages, uint32_t npages, uint32_t roll) - { -- dma_addr_t pat_pa = 0; -+ dma_addr_t pat_pa = 0, data_pa = 0; - uint32_t *data; - struct pat *pat; - struct refill_engine *engine = txn->engine_handle; -@@ -223,7 +223,9 @@ static void dmm_txn_append(struct dmm_tx - .lut_id = engine->tcm->lut_id, - }; - -- data = alloc_dma(txn, 4*i, &pat->data_pa); -+ data = alloc_dma(txn, 4*i, &data_pa); -+ /* FIXME: what if data_pa is more than 32-bit ? */ -+ pat->data_pa = data_pa; - - while (i--) { - int n = i + roll; ---- a/drivers/gpu/drm/omapdrm/omap_gem.c -+++ b/drivers/gpu/drm/omapdrm/omap_gem.c -@@ -791,7 +791,7 @@ int omap_gem_get_paddr(struct drm_gem_ob - omap_obj->paddr = tiler_ssptr(block); - omap_obj->block = block; - -- DBG("got paddr: %08x", omap_obj->paddr); -+ DBG("got paddr: %pad", &omap_obj->paddr); - } - - omap_obj->paddr_cnt++; -@@ -985,9 +985,9 @@ void omap_gem_describe(struct drm_gem_ob - - off = drm_vma_node_start(&obj->vma_node); - -- seq_printf(m, "%08x: %2d (%2d) %08llx %08Zx (%2d) %p %4d", -+ seq_printf(m, "%08x: %2d (%2d) %08llx %pad (%2d) %p %4d", - omap_obj->flags, obj->name, obj->refcount.refcount.counter, -- off, omap_obj->paddr, omap_obj->paddr_cnt, -+ off, &omap_obj->paddr, omap_obj->paddr_cnt, - omap_obj->vaddr, omap_obj->roll); - - if (omap_obj->flags & OMAP_BO_TILED) { -@@ -1467,8 +1467,8 @@ void omap_gem_init(struct drm_device *de - entry->paddr = tiler_ssptr(block); - entry->block = block; - -- DBG("%d:%d: %dx%d: paddr=%08x stride=%d", i, j, w, h, -- entry->paddr, -+ DBG("%d:%d: %dx%d: paddr=%pad stride=%d", i, j, w, h, -+ &entry->paddr, - usergart[i].stride_pfn << PAGE_SHIFT); - } - } ---- a/drivers/gpu/drm/omapdrm/omap_plane.c -+++ b/drivers/gpu/drm/omapdrm/omap_plane.c -@@ -142,8 +142,8 @@ static void omap_plane_pre_apply(struct - DBG("%dx%d -> %dx%d (%d)", info->width, info->height, - info->out_width, info->out_height, - info->screen_width); -- DBG("%d,%d %08x %08x", info->pos_x, info->pos_y, -- info->paddr, info->p_uv_addr); -+ DBG("%d,%d %pad %pad", info->pos_x, info->pos_y, -+ &info->paddr, &info->p_uv_addr); - - /* TODO: */ - ilace = false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/nfs-nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null new/patches.fixes/nfs-nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null --- old/patches.fixes/nfs-nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null 2014-08-26 13:57:20.000000000 +0200 +++ new/patches.fixes/nfs-nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null 1970-01-01 01:00:00.000000000 +0100 @@ -1,32 +0,0 @@ -From: Andrey Utkin <andrey.krieger.utkin@gmail.com> -Subject: nfs: nfs3_list_one_acl(): check get_acl() result with IS_ERR_OR_NULL -Patch-mainline: Submitted to LKML 24 Jul 2014, reviewed by Trond and HCH -References: bko#81111 bnc#889790 - -There was a check for result being not NULL. But get_acl() may return -NULL, or ERR_PTR, or actual pointer. -The purpose of the function where current change is done is to "list -ACLs only when they are available", so any error condition of get_acl() -mustn't be elevated, and returning 0 there is still valid. - -Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81111 -Signed-off-by: Andrey Utkin <andrey.krieger.utkin@gmail.com> -Acked-by: Jeff Mahoney <jeffm@suse.com> ---- - fs/nfs/nfs3acl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fs/nfs/nfs3acl.c b/fs/nfs/nfs3acl.c -index 8f854dd..d0fec26 100644 ---- a/fs/nfs/nfs3acl.c -+++ b/fs/nfs/nfs3acl.c -@@ -256,7 +256,7 @@ nfs3_list_one_acl(struct inode *inode, int type, const char *name, void *data, - char *p = data + *result; - - acl = get_acl(inode, type); -- if (!acl) -+ if (IS_ERR_OR_NULL(acl)) - return 0; - - posix_acl_release(acl); - ++++++ patches.kernel.org.tar.bz2 ++++++ ++++ 6080 lines of diff (skipped) ++++++ patches.suse.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-0003-read-lock-extent-buffer-while-walking-backrefs.patch new/patches.suse/btrfs-0003-read-lock-extent-buffer-while-walking-backrefs.patch --- old/patches.suse/btrfs-0003-read-lock-extent-buffer-while-walking-backrefs.patch 2014-08-26 13:57:20.000000000 +0200 +++ new/patches.suse/btrfs-0003-read-lock-extent-buffer-while-walking-backrefs.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,30 +0,0 @@ -From: Filipe Manana <fdmanana@suse.com> -Date: Wed, 2 Jul 2014 20:07:54 +0100 -Patch-mainline: 3.17 -Git-commit: 6f7ff6d7832c6be13e8c95598884dbc40ad69fb7 -Subject: [PATCH] Btrfs: read lock extent buffer while walking backrefs - -Before processing the extent buffer, acquire a read lock on it, so -that we're safe against concurrent updates on the extent buffer. - -Signed-off-by: Filipe Manana <fdmanana@suse.com> -Signed-off-by: Chris Mason <clm@fb.com> -Signed-off-by: David Sterba <dsterba@suse.cz> ---- - fs/btrfs/backref.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/fs/btrfs/backref.c -+++ b/fs/btrfs/backref.c -@@ -1001,8 +1001,11 @@ again: - ret = -EIO; - goto out; - } -+ btrfs_tree_read_lock(eb); -+ btrfs_set_lock_blocking_rw(eb, BTRFS_READ_LOCK); - ret = find_extent_in_eb(eb, bytenr, - *extent_item_pos, &eie); -+ btrfs_tree_read_unlock_blocking(eb); - free_extent_buffer(eb); - if (ret < 0) - goto out; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-0006-fix-compressed-write-corruption-on-enospc.patch new/patches.suse/btrfs-0006-fix-compressed-write-corruption-on-enospc.patch --- old/patches.suse/btrfs-0006-fix-compressed-write-corruption-on-enospc.patch 2014-08-26 13:57:20.000000000 +0200 +++ new/patches.suse/btrfs-0006-fix-compressed-write-corruption-on-enospc.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -From: Liu Bo <bo.li.liu@oracle.com> -Date: Thu, 24 Jul 2014 22:48:05 +0800 -Patch-mainline: 3.17 -Git-commit: ce62003f690dff38d3164a632ec69efa15c32cbf -Subject: [PATCH] Btrfs: fix compressed write corruption on enospc - -When failing to allocate space for the whole compressed extent, we'll -fallback to uncompressed IO, but we've forgotten to redirty the pages -which belong to this compressed extent, and these 'clean' pages will -simply skip 'submit' part and go to endio directly, at last we got data -corruption as we write nothing. - -Signed-off-by: Liu Bo <bo.li.liu@oracle.com> -Tested-By: Martin Steigerwald <martin@lichtvoll.de> -Signed-off-by: Chris Mason <clm@fb.com> -Signed-off-by: David Sterba <dsterba@suse.cz> ---- - fs/btrfs/inode.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - ---- a/fs/btrfs/inode.c -+++ b/fs/btrfs/inode.c -@@ -709,6 +709,18 @@ retry: - unlock_extent(io_tree, async_extent->start, - async_extent->start + - async_extent->ram_size - 1); -+ -+ /* -+ * we need to redirty the pages if we decide to -+ * fallback to uncompressed IO, otherwise we -+ * will not submit these pages down to lower -+ * layers. -+ */ -+ extent_range_redirty_for_io(inode, -+ async_extent->start, -+ async_extent->start + -+ async_extent->ram_size - 1); -+ - goto retry; - } - goto out_free; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-0008-fix-csum-tree-corruption-duplicate-and-outdate.patch new/patches.suse/btrfs-0008-fix-csum-tree-corruption-duplicate-and-outdate.patch --- old/patches.suse/btrfs-0008-fix-csum-tree-corruption-duplicate-and-outdate.patch 2014-08-26 13:57:20.000000000 +0200 +++ new/patches.suse/btrfs-0008-fix-csum-tree-corruption-duplicate-and-outdate.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,104 +0,0 @@ -From: Filipe Manana <fdmanana@suse.com> -Date: Sat, 9 Aug 2014 21:22:27 +0100 -Patch-mainline: 3.17 -Git-commit: 27b9a8122ff71a8cadfbffb9c4f0694300464f3b -Subject: [PATCH] Btrfs: fix csum tree corruption, duplicate and outdated - checksums - -Under rare circumstances we can end up leaving 2 versions of a checksum -for the same file extent range. - -The reason for this is that after calling btrfs_next_leaf we process -slot 0 of the leaf it returns, instead of processing the slot set in -path->slots[0]. Most of the time (by far) path->slots[0] is 0, but after -btrfs_next_leaf() releases the path and before it searches for the next -leaf, another task might cause a split of the next leaf, which migrates -some of its keys to the leaf we were processing before calling -btrfs_next_leaf(). In this case btrfs_next_leaf() returns again the -same leaf but with path->slots[0] having a slot number corresponding -to the first new key it got, that is, a slot number that didn't exist -before calling btrfs_next_leaf(), as the leaf now has more keys than -it had before. So we must really process the returned leaf starting at -path->slots[0] always, as it isn't always 0, and the key at slot 0 can -have an offset much lower than our search offset/bytenr. - -For example, consider the following scenario, where we have: - -sums->bytenr: 40157184, sums->len: 16384, sums end: 40173568 -four 4kb file data blocks with offsets 40157184, 40161280, 40165376, 40169472 - - Leaf N: - - slot = 0 slot = btrfs_header_nritems() - 1 - |-------------------------------------------------------------------| - | [(CSUM CSUM 39239680), size 8] ... [(CSUM CSUM 40116224), size 4] | - |-------------------------------------------------------------------| - - Leaf N + 1: - - slot = 0 slot = btrfs_header_nritems() - 1 - |--------------------------------------------------------------------| - | [(CSUM CSUM 40161280), size 32] ... [((CSUM CSUM 40615936), size 8 | - |--------------------------------------------------------------------| - -Because we are at the last slot of leaf N, we call btrfs_next_leaf() to -find the next highest key, which releases the current path and then searches -for that next key. However after releasing the path and before finding that -next key, the item at slot 0 of leaf N + 1 gets moved to leaf N, due to a call -to ctree.c:push_leaf_left() (via ctree.c:split_leaf()), and therefore -btrfs_next_leaf() will returns us a path again with leaf N but with the slot -pointing to its new last key (CSUM CSUM 40161280). This new version of leaf N -is then: - - slot = 0 slot = btrfs_header_nritems() - 2 slot = btrfs_header_nritems() - 1 - |----------------------------------------------------------------------------------------------------| - | [(CSUM CSUM 39239680), size 8] ... [(CSUM CSUM 40116224), size 4] [(CSUM CSUM 40161280), size 32] | - |----------------------------------------------------------------------------------------------------| - -And incorrecly using slot 0, makes us set next_offset to 39239680 and we jump -into the "insert:" label, which will set tmp to: - - tmp = min((sums->len - total_bytes) >> blocksize_bits, - (next_offset - file_key.offset) >> blocksize_bits) = - min((16384 - 0) >> 12, (39239680 - 40157184) >> 12) = - min(4, (u64)-917504 = 18446744073708634112 >> 12) = 4 - -and - - ins_size = csum_size * tmp = 4 * 4 = 16 bytes. - -In other words, we insert a new csum item in the tree with key -(CSUM_OBJECTID CSUM_KEY 40157184 = sums->bytenr) that contains the checksums -for all the data (4 blocks of 4096 bytes each = sums->len). Which is wrong, -because the item with key (CSUM CSUM 40161280) (the one that was moved from -leaf N + 1 to the end of leaf N) contains the old checksums of the last 12288 -bytes of our data and won't get those old checksums removed. - -So this leaves us 2 different checksums for 3 4kb blocks of data in the tree, -and breaks the logical rule: - - Key_N+1.offset >= Key_N.offset + length_of_data_its_checksums_cover - -An obvious bad effect of this is that a subsequent csum tree lookup to get -the checksum of any of the blocks with logical offset of 40161280, 40165376 -or 40169472 (the last 3 4kb blocks of file data), will get the old checksums. - -Cc: stable@vger.kernel.org -Signed-off-by: Filipe Manana <fdmanana@suse.com> -Signed-off-by: Chris Mason <clm@fb.com> -Signed-off-by: David Sterba <dsterba@suse.cz> ---- - fs/btrfs/file-item.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/fs/btrfs/file-item.c -+++ b/fs/btrfs/file-item.c -@@ -756,7 +756,7 @@ again: - found_next = 1; - if (ret != 0) - goto insert; -- slot = 0; -+ slot = path->slots[0]; - } - btrfs_item_key_to_cpu(path->nodes[0], &found_key, slot); - if (found_key.objectid != BTRFS_EXTENT_CSUM_OBJECTID || diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-0033-fix-task-hang-under-heavy-compressed-write.patch new/patches.suse/btrfs-0033-fix-task-hang-under-heavy-compressed-write.patch --- old/patches.suse/btrfs-0033-fix-task-hang-under-heavy-compressed-write.patch 2014-08-26 13:57:20.000000000 +0200 +++ new/patches.suse/btrfs-0033-fix-task-hang-under-heavy-compressed-write.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,567 +0,0 @@ -From: Liu Bo <bo.li.liu@oracle.com> -Date: Fri, 15 Aug 2014 23:36:53 +0800 -Patch-mainline: 3.17 -Git-commit: 9e0af23764344f7f1b68e4eefbe7dc865018b63d -Subject: [PATCH] Btrfs: fix task hang under heavy compressed write - -This has been reported and discussed for a long time, and this hang occurs in -both 3.15 and 3.16. - -Btrfs now migrates to use kernel workqueue, but it introduces this hang problem. - -Btrfs has a kind of work queued as an ordered way, which means that its -ordered_func() must be processed in the way of FIFO, so it usually looks like -- - -normal_work_helper(arg) - work = container_of(arg, struct btrfs_work, normal_work); - - work->func() <---- (we name it work X) - for ordered_work in wq->ordered_list - ordered_work->ordered_func() - ordered_work->ordered_free() - -The hang is a rare case, first when we find free space, we get an uncached block -group, then we go to read its free space cache inode for free space information, -so it will - -file a readahead request - btrfs_readpages() - for page that is not in page cache - __do_readpage() - submit_extent_page() - btrfs_submit_bio_hook() - btrfs_bio_wq_end_io() - submit_bio() - end_workqueue_bio() <--(ret by the 1st endio) - queue a work(named work Y) for the 2nd - also the real endio() - -So the hang occurs when work Y's work_struct and work X's work_struct happens -to share the same address. - -A bit more explanation, - -A,B,C -- struct btrfs_work -arg -- struct work_struct - -kthread: -worker_thread() - pick up a work_struct from @worklist - process_one_work(arg) - worker->current_work = arg; <-- arg is A->normal_work - worker->current_func(arg) - normal_work_helper(arg) - A = container_of(arg, struct btrfs_work, normal_work); - - A->func() - A->ordered_func() - A->ordered_free() <-- A gets freed - - B->ordered_func() - submit_compressed_extents() - find_free_extent() - load_free_space_inode() - ... <-- (the above readhead stack) - end_workqueue_bio() - btrfs_queue_work(work C) - B->ordered_free() - -As if work A has a high priority in wq->ordered_list and there are more ordered -works queued after it, such as B->ordered_func(), its memory could have been -freed before normal_work_helper() returns, which means that kernel workqueue -code worker_thread() still has worker->current_work pointer to be work -A->normal_work's, ie. arg's address. - -Meanwhile, work C is allocated after work A is freed, work C->normal_work -and work A->normal_work are likely to share the same address(I confirmed this -with ftrace output, so I'm not just guessing, it's rare though). - -When another kthread picks up work C->normal_work to process, and finds our -kthread is processing it(see find_worker_executing_work()), it'll think -work C as a collision and skip then, which ends up nobody processing work C. - -So the situation is that our kthread is waiting forever on work C. - -Besides, there're other cases that can lead to deadlock, but the real problem -is that all btrfs workqueue shares one work->func, -- normal_work_helper, -so this makes each workqueue to have its own helper function, but only a -wraper pf normal_work_helper. - -With this patch, I no long hit the above hang. - -Signed-off-by: Liu Bo <bo.li.liu@oracle.com> -Signed-off-by: Chris Mason <clm@fb.com> -Signed-off-by: David Sterba <dsterba@suse.cz> ---- - fs/btrfs/async-thread.c | 44 +++++++++++++++++++++++++++++++-------- - fs/btrfs/async-thread.h | 28 +++++++++++++++++++++++- - fs/btrfs/delayed-inode.c | 4 +-- - fs/btrfs/disk-io.c | 53 +++++++++++++++++++++++++---------------------- - fs/btrfs/extent-tree.c | 7 +++--- - fs/btrfs/inode.c | 35 ++++++++++++++++++++----------- - fs/btrfs/ordered-data.c | 1 - fs/btrfs/qgroup.c | 1 - fs/btrfs/raid56.c | 9 +++++-- - fs/btrfs/reada.c | 3 +- - fs/btrfs/scrub.c | 14 +++++++----- - fs/btrfs/volumes.c | 3 +- - 12 files changed, 141 insertions(+), 61 deletions(-) - ---- a/fs/btrfs/async-thread.c -+++ b/fs/btrfs/async-thread.c -@@ -22,7 +22,6 @@ - #include <linux/list.h> - #include <linux/spinlock.h> - #include <linux/freezer.h> --#include <linux/workqueue.h> - #include "async-thread.h" - #include "ctree.h" - -@@ -55,8 +54,39 @@ struct btrfs_workqueue { - struct __btrfs_workqueue *high; - }; - --static inline struct __btrfs_workqueue --*__btrfs_alloc_workqueue(const char *name, int flags, int max_active, -+static void normal_work_helper(struct btrfs_work *work); -+ -+#define BTRFS_WORK_HELPER(name) \ -+void btrfs_##name(struct work_struct *arg) \ -+{ \ -+ struct btrfs_work *work = container_of(arg, struct btrfs_work, \ -+ normal_work); \ -+ normal_work_helper(work); \ -+} -+ -+BTRFS_WORK_HELPER(worker_helper); -+BTRFS_WORK_HELPER(delalloc_helper); -+BTRFS_WORK_HELPER(flush_delalloc_helper); -+BTRFS_WORK_HELPER(cache_helper); -+BTRFS_WORK_HELPER(submit_helper); -+BTRFS_WORK_HELPER(fixup_helper); -+BTRFS_WORK_HELPER(endio_helper); -+BTRFS_WORK_HELPER(endio_meta_helper); -+BTRFS_WORK_HELPER(endio_meta_write_helper); -+BTRFS_WORK_HELPER(endio_raid56_helper); -+BTRFS_WORK_HELPER(rmw_helper); -+BTRFS_WORK_HELPER(endio_write_helper); -+BTRFS_WORK_HELPER(freespace_write_helper); -+BTRFS_WORK_HELPER(delayed_meta_helper); -+BTRFS_WORK_HELPER(readahead_helper); -+BTRFS_WORK_HELPER(qgroup_rescan_helper); -+BTRFS_WORK_HELPER(extent_refs_helper); -+BTRFS_WORK_HELPER(scrub_helper); -+BTRFS_WORK_HELPER(scrubwrc_helper); -+BTRFS_WORK_HELPER(scrubnc_helper); -+ -+static struct __btrfs_workqueue * -+__btrfs_alloc_workqueue(const char *name, int flags, int max_active, - int thresh) - { - struct __btrfs_workqueue *ret = kzalloc(sizeof(*ret), GFP_NOFS); -@@ -232,13 +262,11 @@ static void run_ordered_work(struct __bt - spin_unlock_irqrestore(lock, flags); - } - --static void normal_work_helper(struct work_struct *arg) -+static void normal_work_helper(struct btrfs_work *work) - { -- struct btrfs_work *work; - struct __btrfs_workqueue *wq; - int need_order = 0; - -- work = container_of(arg, struct btrfs_work, normal_work); - /* - * We should not touch things inside work in the following cases: - * 1) after work->func() if it has no ordered_free -@@ -262,7 +290,7 @@ static void normal_work_helper(struct wo - trace_btrfs_all_work_done(work); - } - --void btrfs_init_work(struct btrfs_work *work, -+void btrfs_init_work(struct btrfs_work *work, btrfs_work_func_t uniq_func, - btrfs_func_t func, - btrfs_func_t ordered_func, - btrfs_func_t ordered_free) -@@ -270,7 +298,7 @@ void btrfs_init_work(struct btrfs_work * - work->func = func; - work->ordered_func = ordered_func; - work->ordered_free = ordered_free; -- INIT_WORK(&work->normal_work, normal_work_helper); -+ INIT_WORK(&work->normal_work, uniq_func); - INIT_LIST_HEAD(&work->ordered_list); - work->flags = 0; - } ---- a/fs/btrfs/async-thread.h -+++ b/fs/btrfs/async-thread.h -@@ -19,12 +19,14 @@ - - #ifndef __BTRFS_ASYNC_THREAD_ - #define __BTRFS_ASYNC_THREAD_ -+#include <linux/workqueue.h> - - struct btrfs_workqueue; - /* Internal use only */ - struct __btrfs_workqueue; - struct btrfs_work; - typedef void (*btrfs_func_t)(struct btrfs_work *arg); -+typedef void (*btrfs_work_func_t)(struct work_struct *arg); - - struct btrfs_work { - btrfs_func_t func; -@@ -38,11 +40,35 @@ struct btrfs_work { - unsigned long flags; - }; - -+#define BTRFS_WORK_HELPER_PROTO(name) \ -+void btrfs_##name(struct work_struct *arg) -+ -+BTRFS_WORK_HELPER_PROTO(worker_helper); -+BTRFS_WORK_HELPER_PROTO(delalloc_helper); -+BTRFS_WORK_HELPER_PROTO(flush_delalloc_helper); -+BTRFS_WORK_HELPER_PROTO(cache_helper); -+BTRFS_WORK_HELPER_PROTO(submit_helper); -+BTRFS_WORK_HELPER_PROTO(fixup_helper); -+BTRFS_WORK_HELPER_PROTO(endio_helper); -+BTRFS_WORK_HELPER_PROTO(endio_meta_helper); -+BTRFS_WORK_HELPER_PROTO(endio_meta_write_helper); -+BTRFS_WORK_HELPER_PROTO(endio_raid56_helper); -+BTRFS_WORK_HELPER_PROTO(rmw_helper); -+BTRFS_WORK_HELPER_PROTO(endio_write_helper); -+BTRFS_WORK_HELPER_PROTO(freespace_write_helper); -+BTRFS_WORK_HELPER_PROTO(delayed_meta_helper); -+BTRFS_WORK_HELPER_PROTO(readahead_helper); -+BTRFS_WORK_HELPER_PROTO(qgroup_rescan_helper); -+BTRFS_WORK_HELPER_PROTO(extent_refs_helper); -+BTRFS_WORK_HELPER_PROTO(scrub_helper); -+BTRFS_WORK_HELPER_PROTO(scrubwrc_helper); -+BTRFS_WORK_HELPER_PROTO(scrubnc_helper); -+ - struct btrfs_workqueue *btrfs_alloc_workqueue(const char *name, - int flags, - int max_active, - int thresh); --void btrfs_init_work(struct btrfs_work *work, -+void btrfs_init_work(struct btrfs_work *work, btrfs_work_func_t helper, - btrfs_func_t func, - btrfs_func_t ordered_func, - btrfs_func_t ordered_free); ---- a/fs/btrfs/delayed-inode.c -+++ b/fs/btrfs/delayed-inode.c -@@ -1395,8 +1395,8 @@ static int btrfs_wq_run_delayed_node(str - return -ENOMEM; - - async_work->delayed_root = delayed_root; -- btrfs_init_work(&async_work->work, btrfs_async_run_delayed_root, -- NULL, NULL); -+ btrfs_init_work(&async_work->work, btrfs_delayed_meta_helper, -+ btrfs_async_run_delayed_root, NULL, NULL); - async_work->nr = nr; - - btrfs_queue_work(root->fs_info->delayed_workers, &async_work->work); ---- a/fs/btrfs/disk-io.c -+++ b/fs/btrfs/disk-io.c -@@ -39,7 +39,6 @@ - #include "btrfs_inode.h" - #include "volumes.h" - #include "print-tree.h" --#include "async-thread.h" - #include "locking.h" - #include "tree-log.h" - #include "free-space-cache.h" -@@ -695,35 +694,41 @@ static void end_workqueue_bio(struct bio - { - struct end_io_wq *end_io_wq = bio->bi_private; - struct btrfs_fs_info *fs_info; -+ struct btrfs_workqueue *wq; -+ btrfs_work_func_t func; - - fs_info = end_io_wq->info; - end_io_wq->error = err; -- btrfs_init_work(&end_io_wq->work, end_workqueue_fn, NULL, NULL); - - if (bio->bi_rw & REQ_WRITE) { -- if (end_io_wq->metadata == BTRFS_WQ_ENDIO_METADATA) -- btrfs_queue_work(fs_info->endio_meta_write_workers, -- &end_io_wq->work); -- else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_FREE_SPACE) -- btrfs_queue_work(fs_info->endio_freespace_worker, -- &end_io_wq->work); -- else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) -- btrfs_queue_work(fs_info->endio_raid56_workers, -- &end_io_wq->work); -- else -- btrfs_queue_work(fs_info->endio_write_workers, -- &end_io_wq->work); -+ if (end_io_wq->metadata == BTRFS_WQ_ENDIO_METADATA) { -+ wq = fs_info->endio_meta_write_workers; -+ func = btrfs_endio_meta_write_helper; -+ } else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_FREE_SPACE) { -+ wq = fs_info->endio_freespace_worker; -+ func = btrfs_freespace_write_helper; -+ } else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) { -+ wq = fs_info->endio_raid56_workers; -+ func = btrfs_endio_raid56_helper; -+ } else { -+ wq = fs_info->endio_write_workers; -+ func = btrfs_endio_write_helper; -+ } - } else { -- if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) -- btrfs_queue_work(fs_info->endio_raid56_workers, -- &end_io_wq->work); -- else if (end_io_wq->metadata) -- btrfs_queue_work(fs_info->endio_meta_workers, -- &end_io_wq->work); -- else -- btrfs_queue_work(fs_info->endio_workers, -- &end_io_wq->work); -+ if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) { -+ wq = fs_info->endio_raid56_workers; -+ func = btrfs_endio_raid56_helper; -+ } else if (end_io_wq->metadata) { -+ wq = fs_info->endio_meta_workers; -+ func = btrfs_endio_meta_helper; -+ } else { -+ wq = fs_info->endio_workers; -+ func = btrfs_endio_helper; -+ } - } -+ -+ btrfs_init_work(&end_io_wq->work, func, end_workqueue_fn, NULL, NULL); -+ btrfs_queue_work(wq, &end_io_wq->work); - } - - /* -@@ -830,7 +835,7 @@ int btrfs_wq_submit_bio(struct btrfs_fs_ - async->submit_bio_start = submit_bio_start; - async->submit_bio_done = submit_bio_done; - -- btrfs_init_work(&async->work, run_one_async_start, -+ btrfs_init_work(&async->work, btrfs_worker_helper, run_one_async_start, - run_one_async_done, run_one_async_free); - - async->bio_flags = bio_flags; ---- a/fs/btrfs/extent-tree.c -+++ b/fs/btrfs/extent-tree.c -@@ -552,7 +552,8 @@ static int cache_block_group(struct btrf - caching_ctl->block_group = cache; - caching_ctl->progress = cache->key.objectid; - atomic_set(&caching_ctl->count, 1); -- btrfs_init_work(&caching_ctl->work, caching_thread, NULL, NULL); -+ btrfs_init_work(&caching_ctl->work, btrfs_cache_helper, -+ caching_thread, NULL, NULL); - - spin_lock(&cache->lock); - /* -@@ -2749,8 +2750,8 @@ int btrfs_async_run_delayed_refs(struct - async->sync = 0; - init_completion(&async->wait); - -- btrfs_init_work(&async->work, delayed_ref_async_start, -- NULL, NULL); -+ btrfs_init_work(&async->work, btrfs_extent_refs_helper, -+ delayed_ref_async_start, NULL, NULL); - - btrfs_queue_work(root->fs_info->extent_workers, &async->work); - ---- a/fs/btrfs/inode.c -+++ b/fs/btrfs/inode.c -@@ -1096,8 +1096,10 @@ static int cow_file_range_async(struct i - async_cow->end = cur_end; - INIT_LIST_HEAD(&async_cow->extents); - -- btrfs_init_work(&async_cow->work, async_cow_start, -- async_cow_submit, async_cow_free); -+ btrfs_init_work(&async_cow->work, -+ btrfs_delalloc_helper, -+ async_cow_start, async_cow_submit, -+ async_cow_free); - - nr_pages = (cur_end - start + PAGE_CACHE_SIZE) >> - PAGE_CACHE_SHIFT; -@@ -1881,7 +1883,8 @@ static int btrfs_writepage_start_hook(st - - SetPageChecked(page); - page_cache_get(page); -- btrfs_init_work(&fixup->work, btrfs_writepage_fixup_worker, NULL, NULL); -+ btrfs_init_work(&fixup->work, btrfs_fixup_helper, -+ btrfs_writepage_fixup_worker, NULL, NULL); - fixup->page = page; - btrfs_queue_work(root->fs_info->fixup_workers, &fixup->work); - return -EBUSY; -@@ -2822,7 +2825,8 @@ static int btrfs_writepage_end_io_hook(s - struct inode *inode = page->mapping->host; - struct btrfs_root *root = BTRFS_I(inode)->root; - struct btrfs_ordered_extent *ordered_extent = NULL; -- struct btrfs_workqueue *workers; -+ struct btrfs_workqueue *wq; -+ btrfs_work_func_t func; - - trace_btrfs_writepage_end_io_hook(page, start, end, uptodate); - -@@ -2831,13 +2835,17 @@ static int btrfs_writepage_end_io_hook(s - end - start + 1, uptodate)) - return 0; - -- btrfs_init_work(&ordered_extent->work, finish_ordered_fn, NULL, NULL); -+ if (btrfs_is_free_space_inode(inode)) { -+ wq = root->fs_info->endio_freespace_worker; -+ func = btrfs_freespace_write_helper; -+ } else { -+ wq = root->fs_info->endio_write_workers; -+ func = btrfs_endio_write_helper; -+ } - -- if (btrfs_is_free_space_inode(inode)) -- workers = root->fs_info->endio_freespace_worker; -- else -- workers = root->fs_info->endio_write_workers; -- btrfs_queue_work(workers, &ordered_extent->work); -+ btrfs_init_work(&ordered_extent->work, func, finish_ordered_fn, NULL, -+ NULL); -+ btrfs_queue_work(wq, &ordered_extent->work); - - return 0; - } -@@ -7173,7 +7181,8 @@ again: - if (!ret) - goto out_test; - -- btrfs_init_work(&ordered->work, finish_ordered_fn, NULL, NULL); -+ btrfs_init_work(&ordered->work, btrfs_endio_write_helper, -+ finish_ordered_fn, NULL, NULL); - btrfs_queue_work(root->fs_info->endio_write_workers, - &ordered->work); - out_test: -@@ -8542,7 +8551,9 @@ struct btrfs_delalloc_work *btrfs_alloc_ - work->inode = inode; - work->wait = wait; - work->delay_iput = delay_iput; -- btrfs_init_work(&work->work, btrfs_run_delalloc_work, NULL, NULL); -+ WARN_ON_ONCE(!inode); -+ btrfs_init_work(&work->work, btrfs_flush_delalloc_helper, -+ btrfs_run_delalloc_work, NULL, NULL); - - return work; - } ---- a/fs/btrfs/ordered-data.c -+++ b/fs/btrfs/ordered-data.c -@@ -627,6 +627,7 @@ int btrfs_wait_ordered_extents(struct bt - spin_unlock(&root->ordered_extent_lock); - - btrfs_init_work(&ordered->flush_work, -+ btrfs_flush_delalloc_helper, - btrfs_run_ordered_extent_work, NULL, NULL); - list_add_tail(&ordered->work_list, &works); - btrfs_queue_work(root->fs_info->flush_workers, ---- a/fs/btrfs/qgroup.c -+++ b/fs/btrfs/qgroup.c -@@ -2551,6 +2551,7 @@ qgroup_rescan_init(struct btrfs_fs_info - memset(&fs_info->qgroup_rescan_work, 0, - sizeof(fs_info->qgroup_rescan_work)); - btrfs_init_work(&fs_info->qgroup_rescan_work, -+ btrfs_qgroup_rescan_helper, - btrfs_qgroup_rescan_worker, NULL, NULL); - - if (ret) { ---- a/fs/btrfs/raid56.c -+++ b/fs/btrfs/raid56.c -@@ -1416,7 +1416,8 @@ cleanup: - - static void async_rmw_stripe(struct btrfs_raid_bio *rbio) - { -- btrfs_init_work(&rbio->work, rmw_work, NULL, NULL); -+ btrfs_init_work(&rbio->work, btrfs_rmw_helper, -+ rmw_work, NULL, NULL); - - btrfs_queue_work(rbio->fs_info->rmw_workers, - &rbio->work); -@@ -1424,7 +1425,8 @@ static void async_rmw_stripe(struct btrf - - static void async_read_rebuild(struct btrfs_raid_bio *rbio) - { -- btrfs_init_work(&rbio->work, read_rebuild_work, NULL, NULL); -+ btrfs_init_work(&rbio->work, btrfs_rmw_helper, -+ read_rebuild_work, NULL, NULL); - - btrfs_queue_work(rbio->fs_info->rmw_workers, - &rbio->work); -@@ -1665,7 +1667,8 @@ static void btrfs_raid_unplug(struct blk - plug = container_of(cb, struct btrfs_plug_cb, cb); - - if (from_schedule) { -- btrfs_init_work(&plug->work, unplug_work, NULL, NULL); -+ btrfs_init_work(&plug->work, btrfs_rmw_helper, -+ unplug_work, NULL, NULL); - btrfs_queue_work(plug->info->rmw_workers, - &plug->work); - return; ---- a/fs/btrfs/reada.c -+++ b/fs/btrfs/reada.c -@@ -798,7 +798,8 @@ static void reada_start_machine(struct b - /* FIXME we cannot handle this properly right now */ - BUG(); - } -- btrfs_init_work(&rmw->work, reada_start_machine_worker, NULL, NULL); -+ btrfs_init_work(&rmw->work, btrfs_readahead_helper, -+ reada_start_machine_worker, NULL, NULL); - rmw->fs_info = fs_info; - - btrfs_queue_work(fs_info->readahead_workers, &rmw->work); ---- a/fs/btrfs/scrub.c -+++ b/fs/btrfs/scrub.c -@@ -428,8 +428,8 @@ struct scrub_ctx *scrub_setup_ctx(struct - sbio->index = i; - sbio->sctx = sctx; - sbio->page_count = 0; -- btrfs_init_work(&sbio->work, scrub_bio_end_io_worker, -- NULL, NULL); -+ btrfs_init_work(&sbio->work, btrfs_scrub_helper, -+ scrub_bio_end_io_worker, NULL, NULL); - - if (i != SCRUB_BIOS_PER_SCTX - 1) - sctx->bios[i]->next_free = i + 1; -@@ -999,8 +999,8 @@ nodatasum_case: - fixup_nodatasum->root = fs_info->extent_root; - fixup_nodatasum->mirror_num = failed_mirror_index + 1; - scrub_pending_trans_workers_inc(sctx); -- btrfs_init_work(&fixup_nodatasum->work, scrub_fixup_nodatasum, -- NULL, NULL); -+ btrfs_init_work(&fixup_nodatasum->work, btrfs_scrub_helper, -+ scrub_fixup_nodatasum, NULL, NULL); - btrfs_queue_work(fs_info->scrub_workers, - &fixup_nodatasum->work); - goto out; -@@ -1616,7 +1616,8 @@ static void scrub_wr_bio_end_io(struct b - sbio->err = err; - sbio->bio = bio; - -- btrfs_init_work(&sbio->work, scrub_wr_bio_end_io_worker, NULL, NULL); -+ btrfs_init_work(&sbio->work, btrfs_scrubwrc_helper, -+ scrub_wr_bio_end_io_worker, NULL, NULL); - btrfs_queue_work(fs_info->scrub_wr_completion_workers, &sbio->work); - } - -@@ -3203,7 +3204,8 @@ static int copy_nocow_pages(struct scrub - nocow_ctx->len = len; - nocow_ctx->mirror_num = mirror_num; - nocow_ctx->physical_for_dev_replace = physical_for_dev_replace; -- btrfs_init_work(&nocow_ctx->work, copy_nocow_pages_worker, NULL, NULL); -+ btrfs_init_work(&nocow_ctx->work, btrfs_scrubnc_helper, -+ copy_nocow_pages_worker, NULL, NULL); - INIT_LIST_HEAD(&nocow_ctx->inodes); - btrfs_queue_work(fs_info->scrub_nocow_workers, - &nocow_ctx->work); ---- a/fs/btrfs/volumes.c -+++ b/fs/btrfs/volumes.c -@@ -5800,7 +5800,8 @@ struct btrfs_device *btrfs_alloc_device( - else - generate_random_uuid(dev->uuid); - -- btrfs_init_work(&dev->work, pending_bios_fn, NULL, NULL); -+ btrfs_init_work(&dev->work, btrfs_submit_helper, -+ pending_bios_fn, NULL, NULL); - - return dev; - } ++++++ patches.xen.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen-x86-EFI new/patches.xen/xen-x86-EFI --- old/patches.xen/xen-x86-EFI 2014-08-06 15:37:49.000000000 +0200 +++ new/patches.xen/xen-x86-EFI 2014-09-07 06:40:17.000000000 +0200 @@ -20,9 +20,9 @@ bool "EFI stub support" - depends on EFI + depends on EFI && !XEN + select RELOCATABLE ---help--- This kernel feature allows a bzImage to be loaded directly - by EFI firmware without the use of a bootloader. --- head.orig/arch/x86/include/mach-xen/asm/setup.h 2011-02-01 14:54:13.000000000 +0100 +++ head/arch/x86/include/mach-xen/asm/setup.h 2011-07-04 12:32:43.000000000 +0200 @@ -3,6 +3,12 @@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen-x86-bzImage new/patches.xen/xen-x86-bzImage --- old/patches.xen/xen-x86-bzImage 2014-08-06 15:37:49.000000000 +0200 +++ new/patches.xen/xen-x86-bzImage 2014-09-07 06:40:17.000000000 +0200 @@ -16,9 +16,9 @@ bool "EFI stub support" - depends on EFI && !XEN + depends on EFI && (!XEN || XEN_BZIMAGE) + select RELOCATABLE ---help--- This kernel feature allows a bzImage to be loaded directly - by EFI firmware without the use of a bootloader. @@ -1809,6 +1809,34 @@ config PHYSICAL_ALIGN Don't change this unless you know what you are doing. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen3-auto-common.diff new/patches.xen/xen3-auto-common.diff --- old/patches.xen/xen3-auto-common.diff 2014-08-06 15:37:49.000000000 +0200 +++ new/patches.xen/xen3-auto-common.diff 2014-09-07 06:40:17.000000000 +0200 @@ -3799,10 +3799,10 @@ +#endif + if (HAVE_PTE_SPECIAL) { - if (likely(!pte_special(pte) || pte_numa(pte))) + if (likely(!pte_special(pte))) goto check_pfn; @@ -779,6 +785,9 @@ struct page *vm_normal_page(struct vm_ar - + return NULL; check_pfn: if (unlikely(pfn > highest_memmap_pfn)) { +#ifdef CONFIG_XEN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen3-patch-2.6.37 new/patches.xen/xen3-patch-2.6.37 --- old/patches.xen/xen3-patch-2.6.37 2014-08-06 15:37:49.000000000 +0200 +++ new/patches.xen/xen3-patch-2.6.37 2014-09-07 06:40:17.000000000 +0200 @@ -3955,9 +3955,9 @@ + if (!is_initial_xendomain()) + return; +#endif - /* Trim out BIOS areas (low 1MB and high 2MB) and E820 regions */ - if (avail->flags & IORESOURCE_MEM) { - if (avail->start < BIOS_END) + /* + * Trim out BIOS area (high 2MB) and E820 regions. We do not remove + * the low 1MB unconditionally, as this area is needed for some ISA --- head.orig/arch/x86/kernel/setup-xen.c 2013-12-06 15:07:45.000000000 +0100 +++ head/arch/x86/kernel/setup-xen.c 2013-12-06 15:07:53.000000000 +0100 @@ -31,6 +31,7 @@ ++++++ series.conf ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:12.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:12.000000000 +0200 @@ -28,6 +28,7 @@ # Send separate patches upstream if you find a problem... ######################################################## patches.kernel.org/patch-3.16.1 + patches.kernel.org/patch-3.16.1-2 ######################################################## # Build fixes that apply to the vanilla kernel too. @@ -226,8 +227,6 @@ ######################################################## # NFS ######################################################## - patches.fixes/nfs-nfs3_list_one_acl-check-get_acl-result-with-is_err_or_null - ######################################################## # lockd + statd @@ -251,17 +250,12 @@ ######################################################## patches.suse/btrfs-use-correct-device-for-maps.patch patches.suse/btrfs-check-index-in-extent_buffer_page - patches.suse/btrfs-0003-read-lock-extent-buffer-while-walking-backrefs.patch - patches.suse/btrfs-0006-fix-compressed-write-corruption-on-enospc.patch - patches.fixes/Btrfs-Fix-memory-corruption-by-ulist_add_merge-on-32 - patches.suse/btrfs-0008-fix-csum-tree-corruption-duplicate-and-outdate.patch patches.suse/btrfs-0011-fill_holes-Fix-slot-number-passed-to-hole_merg.patch patches.suse/btrfs-0016-fix-wrong-write-range-for-filemap_fdatawrite_r.patch patches.suse/btrfs-0017-fix-wrong-extent-mapping-for-DirectIO.patch patches.suse/btrfs-0018-Return-right-extent-when-fiemap-gives-unaligne.patch patches.suse/btrfs-0025-ensure-tmpfile-inode-is-always-persisted-with-.patch patches.suse/btrfs-0027-don-t-monopolize-a-core-when-evicting-inode.patch - patches.suse/btrfs-0033-fix-task-hang-under-heavy-compressed-write.patch ######################################################## # Reiserfs Patches @@ -371,7 +365,6 @@ # DRM/Video ######################################################## patches.fixes/nouveau-fix-race-with-fence-signaling - patches.fixes/drm-omapdrm-fix-compiler-errors ######################################################## # video4linux ++++++ source-timestamp ++++++ --- /var/tmp/diff_new_pack.moXrcX/_old 2014-09-12 15:25:12.000000000 +0200 +++ /var/tmp/diff_new_pack.moXrcX/_new 2014-09-12 15:25:12.000000000 +0200 @@ -1,3 +1,3 @@ -2014-09-03 16:16:22 +0200 -GIT Revision: 2ab65856e31615961771d3a3f9ec60b3ef0e6eec +2014-09-07 06:40:17 +0200 +GIT Revision: dcee3975936b33996dd656617da8e1879ef4dcbd GIT Branch: stable -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de