Hello community, here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2015-06-23 12:05:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2015-06-15 18:18:20.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes 2015-06-23 12:05:02.000000000 +0200 @@ -1,0 +2,20 @@ +Thu Jun 18 17:11:04 CEST 2015 - [email protected] + +- Btrfs: fix regression in raid level conversion. +- Btrfs: fix uninit variable in clone ioctl. +- Btrfs: fix range cloning when same inode used as source and + destination. +- btrfs: cleanup orphans while looking up default subvolume. +- btrfs: incorrect handling for fiemap_fill_next_extent return. +- Btrfs: send, don't leave without decrementing clone root's + send_progress. +- Btrfs: send, add missing check for dead clone root. +- commit 56152db + +------------------------------------------------------------------- +Fri Jun 12 15:39:21 CEST 2015 - [email protected] + +- Update config files: extend CONFIG_DPM_WATCHDOG_TIMEOUT to 60 (bnc#934397) +- commit b5e86cc + +------------------------------------------------------------------- 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-pv.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.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -61,7 +61,7 @@ Group: System/Kernel Version: 4.0.5 %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif kernel-default.spec: same change kernel-desktop.spec: same change ++++++ kernel-docs.spec ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -29,7 +29,7 @@ Group: Documentation/Man Version: 4.0.5 %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif ++++++ kernel-ec2.spec ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -61,7 +61,7 @@ Group: System/Kernel Version: 4.0.5 %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif kernel-lpae.spec: same change ++++++ kernel-obs-build.spec ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -47,7 +47,7 @@ Group: SLES Version: 4.0.5 %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif kernel-obs-qa-xen.spec: same change kernel-obs-qa.spec: same change ++++++ kernel-pae.spec ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -61,7 +61,7 @@ Group: System/Kernel Version: 4.0.5 %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif kernel-pv.spec: same change ++++++ kernel-source.spec ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -32,7 +32,7 @@ Group: Development/Sources Version: 4.0.5 %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif ++++++ kernel-syms.spec ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -27,7 +27,7 @@ Version: 4.0.5 %if %using_buildservice %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif ++++++ kernel-vanilla.spec ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:08.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:08.000000000 +0200 @@ -61,7 +61,7 @@ Group: System/Kernel Version: 4.0.5 %if 0%{?is_kotd} -Release: <RELEASE>.g0e899eb +Release: <RELEASE>.g56152db %else Release: 0 %endif kernel-xen.spec: same change ++++++ config.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/arm64/default new/config/arm64/default --- old/config/arm64/default 2015-05-19 12:31:37.000000000 +0200 +++ new/config/arm64/default 2015-06-12 15:39:21.000000000 +0200 @@ -483,7 +483,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_OPP=y CONFIG_PM_CLK=y # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/arm64/vanilla new/config/arm64/vanilla --- old/config/arm64/vanilla 2015-05-19 12:31:37.000000000 +0200 +++ new/config/arm64/vanilla 2015-06-12 15:39:21.000000000 +0200 @@ -470,7 +470,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_OPP=y CONFIG_PM_CLK=y # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv6hl/default new/config/armv6hl/default --- old/config/armv6hl/default 2015-05-19 12:31:37.000000000 +0200 +++ new/config/armv6hl/default 2015-06-12 15:39:21.000000000 +0200 @@ -646,7 +646,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_APM_EMULATION=m CONFIG_PM_OPP=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv6hl/vanilla new/config/armv6hl/vanilla --- old/config/armv6hl/vanilla 2015-05-19 12:31:37.000000000 +0200 +++ new/config/armv6hl/vanilla 2015-06-12 15:39:21.000000000 +0200 @@ -644,7 +644,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_APM_EMULATION=m CONFIG_PM_OPP=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv7hl/default new/config/armv7hl/default --- old/config/armv7hl/default 2015-05-19 12:31:37.000000000 +0200 +++ new/config/armv7hl/default 2015-06-12 15:39:21.000000000 +0200 @@ -954,7 +954,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_APM_EMULATION=m CONFIG_PM_OPP=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv7hl/lpae new/config/armv7hl/lpae --- old/config/armv7hl/lpae 2015-05-19 12:31:37.000000000 +0200 +++ new/config/armv7hl/lpae 2015-06-12 15:39:21.000000000 +0200 @@ -861,7 +861,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_APM_EMULATION=m CONFIG_PM_OPP=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv7hl/vanilla new/config/armv7hl/vanilla --- old/config/armv7hl/vanilla 2015-05-19 12:31:37.000000000 +0200 +++ new/config/armv7hl/vanilla 2015-06-12 15:39:21.000000000 +0200 @@ -952,7 +952,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_APM_EMULATION=m CONFIG_PM_OPP=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/debug new/config/i386/debug --- old/config/i386/debug 2015-05-19 12:31:37.000000000 +0200 +++ new/config/i386/debug 2015-06-12 15:39:21.000000000 +0200 @@ -589,7 +589,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/default new/config/i386/default --- old/config/i386/default 2015-05-19 12:31:37.000000000 +0200 +++ new/config/i386/default 2015-06-12 15:39:21.000000000 +0200 @@ -580,7 +580,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/desktop new/config/i386/desktop --- old/config/i386/desktop 2015-05-19 12:31:37.000000000 +0200 +++ new/config/i386/desktop 2015-06-12 15:39:21.000000000 +0200 @@ -592,7 +592,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/pae new/config/i386/pae --- old/config/i386/pae 2015-05-19 12:31:37.000000000 +0200 +++ new/config/i386/pae 2015-06-12 15:39:21.000000000 +0200 @@ -594,7 +594,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/pv new/config/i386/pv --- old/config/i386/pv 2015-05-19 12:31:37.000000000 +0200 +++ new/config/i386/pv 2015-06-12 15:39:21.000000000 +0200 @@ -602,7 +602,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/vanilla new/config/i386/vanilla --- old/config/i386/vanilla 2015-05-19 12:31:37.000000000 +0200 +++ new/config/i386/vanilla 2015-06-12 15:39:21.000000000 +0200 @@ -578,7 +578,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/xen new/config/i386/xen --- old/config/i386/xen 2015-05-19 12:31:37.000000000 +0200 +++ new/config/i386/xen 2015-06-12 15:39:21.000000000 +0200 @@ -494,7 +494,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/debug new/config/x86_64/debug --- old/config/x86_64/debug 2015-05-19 12:31:37.000000000 +0200 +++ new/config/x86_64/debug 2015-06-12 15:39:21.000000000 +0200 @@ -582,7 +582,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/default new/config/x86_64/default --- old/config/x86_64/default 2015-05-19 12:31:37.000000000 +0200 +++ new/config/x86_64/default 2015-06-12 15:39:21.000000000 +0200 @@ -587,7 +587,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/desktop new/config/x86_64/desktop --- old/config/x86_64/desktop 2015-05-19 12:31:37.000000000 +0200 +++ new/config/x86_64/desktop 2015-06-12 15:39:21.000000000 +0200 @@ -585,7 +585,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/pv new/config/x86_64/pv --- old/config/x86_64/pv 2015-05-19 12:31:37.000000000 +0200 +++ new/config/x86_64/pv 2015-06-12 15:39:21.000000000 +0200 @@ -594,7 +594,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/vanilla new/config/x86_64/vanilla --- old/config/x86_64/vanilla 2015-05-19 12:31:37.000000000 +0200 +++ new/config/x86_64/vanilla 2015-06-12 15:39:21.000000000 +0200 @@ -585,7 +585,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=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 2015-05-19 12:31:37.000000000 +0200 +++ new/config/x86_64/xen 2015-06-12 15:39:21.000000000 +0200 @@ -484,7 +484,7 @@ # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y CONFIG_DPM_WATCHDOG=y -CONFIG_DPM_WATCHDOG_TIMEOUT=12 +CONFIG_DPM_WATCHDOG_TIMEOUT=60 CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_CLK=y ++++++ patches.fixes.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch new/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch --- old/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch 2015-06-18 17:11:06.000000000 +0200 @@ -0,0 +1,35 @@ +From: Filipe Manana <[email protected]> +Date: Mon, 2 Mar 2015 20:53:52 +0000 +Patch-mainline: 4.1 +Git-commit: 571534e54794d7e861651e77c539d475b3e69cba +Subject: [PATCH] Btrfs: send, add missing check for dead clone root + +After we locked the root's root item, a concurrent snapshot deletion +call might have set the dead flag on it. So check if the dead flag +is set and abort if it is, just like we do for the parent root. + +Signed-off-by: Filipe Manana <[email protected]> +Reviewed-by: David Sterba <[email protected]> +Signed-off-by: Chris Mason <[email protected]> +Signed-off-by: David Sterba <[email protected]> +--- + fs/btrfs/send.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c +index d6033f540cc7..6ec28f13659e 100644 +--- a/fs/btrfs/send.c ++++ b/fs/btrfs/send.c +@@ -5855,7 +5855,8 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_) + clone_sources_to_rollback = i + 1; + spin_lock(&clone_root->root_item_lock); + clone_root->send_in_progress++; +- if (!btrfs_root_readonly(clone_root)) { ++ if (!btrfs_root_readonly(clone_root) || ++ btrfs_root_dead(clone_root)) { + spin_unlock(&clone_root->root_item_lock); + srcu_read_unlock(&fs_info->subvol_srcu, index); + ret = -EPERM; +-- +2.1.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch new/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch --- old/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch 2015-06-18 17:11:06.000000000 +0200 @@ -0,0 +1,64 @@ +From: Filipe Manana <[email protected]> +Date: Mon, 2 Mar 2015 20:53:53 +0000 +Patch-mainline: 4.1 +Git-commit: 27824c380c8dd68167729f5dc9cff97598534745 +Subject: [PATCH] Btrfs: send, don't leave without decrementing clone + root's send_progress + +If the clone root was not readonly or the dead flag was set on it, we were +leaving without decrementing the root's send_progress counter (and before +we just incremented it). If a concurrent snapshot deletion was in progress +and ended up being aborted, it would be impossible to later attempt to +delete again the snapshot, since the root's send_in_progress counter could +never go back to 0. + +We were also setting clone_sources_to_rollback to i + 1 too early - if we +bailed out because the clone root we got is not readonly or flagged as dead +we ended up later derreferencing a null pointer because we didn't assign +the clone root to sctx->clone_roots[i].root: + + for (i = 0; sctx && i < clone_sources_to_rollback; i++) + btrfs_root_dec_send_in_progress( + sctx->clone_roots[i].root); + +So just don't increment the send_in_progress counter if the root is readonly +or flagged as dead. + +Signed-off-by: Filipe Manana <[email protected]> +Reviewed-by: David Sterba <[email protected]> +Signed-off-by: Chris Mason <[email protected]> +Signed-off-by: David Sterba <[email protected]> +--- + fs/btrfs/send.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c +index 6ec28f13659e..571de5a08fe7 100644 +--- a/fs/btrfs/send.c ++++ b/fs/btrfs/send.c +@@ -5852,9 +5852,7 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_) + ret = PTR_ERR(clone_root); + goto out; + } +- clone_sources_to_rollback = i + 1; + spin_lock(&clone_root->root_item_lock); +- clone_root->send_in_progress++; + if (!btrfs_root_readonly(clone_root) || + btrfs_root_dead(clone_root)) { + spin_unlock(&clone_root->root_item_lock); +@@ -5862,10 +5860,12 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_) + ret = -EPERM; + goto out; + } ++ clone_root->send_in_progress++; + spin_unlock(&clone_root->root_item_lock); + srcu_read_unlock(&fs_info->subvol_srcu, index); + + sctx->clone_roots[i].root = clone_root; ++ clone_sources_to_rollback = i + 1; + } + vfree(clone_sources_tmp); + clone_sources_tmp = NULL; +-- +2.1.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch new/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch --- old/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch 2015-06-18 17:11:06.000000000 +0200 @@ -0,0 +1,41 @@ +From: Chengyu Song <[email protected]> +Date: Tue, 24 Mar 2015 18:12:56 -0400 +Patch-mainline: 4.1 +Git-commit: 317785074b63535d5f57d67043ed39afe4e31194 +Subject: [PATCH] btrfs: incorrect handling for fiemap_fill_next_extent + return + +fiemap_fill_next_extent returns 0 on success, -errno on error, 1 if this was +the last extent that will fit in user array. If 1 is returned, the return +value may eventually returned to user space, which should not happen, according +to manpage of ioctl. + +Signed-off-by: Chengyu Song <[email protected]> +Reviewed-by: David Sterba <[email protected]> +Reviewed-by: Liu Bo <[email protected]> +Signed-off-by: Chris Mason <[email protected]> +Signed-off-by: David Sterba <[email protected]> +--- + fs/btrfs/extent_io.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c +index d688cfe5d496..782f3bc4651d 100644 +--- a/fs/btrfs/extent_io.c ++++ b/fs/btrfs/extent_io.c +@@ -4514,8 +4514,11 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, + } + ret = fiemap_fill_next_extent(fieinfo, em_start, disko, + em_len, flags); +- if (ret) ++ if (ret) { ++ if (ret == 1) ++ ret = 0; + goto out_free; ++ } + } + out_free: + free_extent_map(em); +-- +2.1.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch new/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch --- old/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch 2015-06-18 17:11:06.000000000 +0200 @@ -0,0 +1,44 @@ +From: Jeff Mahoney <[email protected]> +Date: Fri, 20 Mar 2015 14:02:09 -0400 +Patch-mainline: 4.1 +Git-commit: a9accf42219b06d2984a1a1d53635843a7f1920a +Subject: [PATCH] btrfs: cleanup orphans while looking up default subvolume + +Orphans in the fs tree are cleaned up via open_ctree and subvolume +orphans are cleaned via btrfs_lookup_dentry -- except when a default +subvolume is in use. The name for the default subvolume uses a manual +lookup that doesn't trigger orphan cleanup and needs to trigger it +manually as well. This doesn't apply to the remount case since the +subvolumes are cleaned up by walking the root radix tree. + +Signed-off-by: Jeff Mahoney <[email protected]> +Reviewed-by: David Sterba <[email protected]> +Signed-off-by: Chris Mason <[email protected]> +Signed-off-by: David Sterba <[email protected]> +--- + fs/btrfs/super.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c +index 05fef198ff94..e477ed67a49a 100644 +--- a/fs/btrfs/super.c ++++ b/fs/btrfs/super.c +@@ -901,6 +901,15 @@ static struct dentry *get_default_root(struct super_block *sb, + if (IS_ERR(new_root)) + return ERR_CAST(new_root); + ++ if (!(sb->s_flags & MS_RDONLY)) { ++ int ret; ++ down_read(&fs_info->cleanup_work_sem); ++ ret = btrfs_orphan_cleanup(new_root); ++ up_read(&fs_info->cleanup_work_sem); ++ if (ret) ++ return ERR_PTR(ret); ++ } ++ + dir_id = btrfs_root_dirid(&new_root->root_item); + setup_root: + location.objectid = dir_id; +-- +2.1.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch new/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch --- old/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch 2015-06-18 17:11:06.000000000 +0200 @@ -0,0 +1,132 @@ +From: Filipe Manana <[email protected]> +Date: Tue, 31 Mar 2015 14:56:46 +0100 +Patch-mainline: 4.1 +Git-commit: 877f4ee55c9e3198d105596bd9b3a30314edfa46 +Subject: [PATCH] Btrfs: fix range cloning when same inode used as source + and destination + +While searching for extents to clone we might find one where we only use +a part of it coming from its tail. If our destination inode is the same +the source inode, we end up removing the tail part of the extent item and +insert after a new one that point to the same extent with an adjusted +key file offset and data offset. After this we search for the next extent +item in the fs/subvol tree with a key that has an offset incremented by +one. But this second search leaves us at the new extent item we inserted +previously, and since that extent item has a non-zero data offset, it +it can make us call btrfs_drop_extents with an empty range (start == end) +which causes the following warning: + +[23978.537119] WARNING: CPU: 6 PID: 16251 at fs/btrfs/file.c:550 btrfs_drop_extent_cache+0x43/0x385 [btrfs]() +(...) +[23978.557266] Call Trace: +[23978.557978] [<ffffffff81425fd9>] dump_stack+0x4c/0x65 +[23978.559191] [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb +[23978.560699] [<ffffffffa047f0ea>] ? btrfs_drop_extent_cache+0x43/0x385 [btrfs] +[23978.562389] [<ffffffff8104544d>] warn_slowpath_null+0x1a/0x1c +[23978.563613] [<ffffffffa047f0ea>] btrfs_drop_extent_cache+0x43/0x385 [btrfs] +[23978.565103] [<ffffffff810e3a18>] ? time_hardirqs_off+0x15/0x28 +[23978.566294] [<ffffffff81079ff8>] ? trace_hardirqs_off+0xd/0xf +[23978.567438] [<ffffffffa047f73d>] __btrfs_drop_extents+0x6b/0x9e1 [btrfs] +[23978.568702] [<ffffffff8107c03f>] ? trace_hardirqs_on+0xd/0xf +[23978.569763] [<ffffffff811441c0>] ? ____cache_alloc+0x69/0x2eb +[23978.570817] [<ffffffff81142269>] ? virt_to_head_page+0x9/0x36 +[23978.571872] [<ffffffff81143c15>] ? cache_alloc_debugcheck_after.isra.42+0x16c/0x1cb +[23978.573466] [<ffffffff811420d5>] ? kmemleak_alloc_recursive.constprop.52+0x16/0x18 +[23978.574962] [<ffffffffa0480d07>] btrfs_drop_extents+0x66/0x7f [btrfs] +[23978.576179] [<ffffffffa049aa35>] btrfs_clone+0x516/0xaf5 [btrfs] +[23978.577311] [<ffffffffa04983dc>] ? lock_extent_range+0x7b/0xcd [btrfs] +[23978.578520] [<ffffffffa049b2a2>] btrfs_ioctl_clone+0x28e/0x39f [btrfs] +[23978.580282] [<ffffffffa049d9ae>] btrfs_ioctl+0xb51/0x219a [btrfs] +(...) +[23978.591887] ---[ end trace 988ec2a653d03ed3 ]--- + +Then we attempt to insert a new extent item with a key that already +exists, which makes btrfs_insert_empty_item return -EEXIST resulting in +abortion of the current transaction: + +[23978.594355] WARNING: CPU: 6 PID: 16251 at fs/btrfs/super.c:260 __btrfs_abort_transaction+0x52/0x114 [btrfs]() +(...) +[23978.622589] Call Trace: +[23978.623181] [<ffffffff81425fd9>] dump_stack+0x4c/0x65 +[23978.624359] [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb +[23978.625573] [<ffffffffa044ab6c>] ? __btrfs_abort_transaction+0x52/0x114 [btrfs] +[23978.626971] [<ffffffff810453f0>] warn_slowpath_fmt+0x46/0x48 +[23978.628003] [<ffffffff8108a6c8>] ? vprintk_default+0x1d/0x1f +[23978.629138] [<ffffffffa044ab6c>] __btrfs_abort_transaction+0x52/0x114 [btrfs] +[23978.630528] [<ffffffffa049ad1b>] btrfs_clone+0x7fc/0xaf5 [btrfs] +[23978.631635] [<ffffffffa04983dc>] ? lock_extent_range+0x7b/0xcd [btrfs] +[23978.632886] [<ffffffffa049b2a2>] btrfs_ioctl_clone+0x28e/0x39f [btrfs] +[23978.634119] [<ffffffffa049d9ae>] btrfs_ioctl+0xb51/0x219a [btrfs] +(...) +[23978.647714] ---[ end trace 988ec2a653d03ed4 ]--- + +This is wrong because we should not process the extent item that we just +inserted previously, and instead process the extent item that follows it +in the tree + +For example for the test case I wrote for fstests: + + bs=$((64 * 1024)) + mkfs.btrfs -f -l $bs -O ^no-holes /dev/sdc + mount /dev/sdc /mnt + + xfs_io -f -c "pwrite -S 0xaa $(($bs * 2)) $(($bs * 2))" /mnt/foo + + $CLONER_PROG -s $((3 * $bs)) -d $((267 * $bs)) -l 0 /mnt/foo /mnt/foo + $CLONER_PROG -s $((217 * $bs)) -d $((95 * $bs)) -l 0 /mnt/foo /mnt/foo + +The second clone call fails with -EEXIST, because when we process the +first extent item (offset 262144), we drop part of it (counting from the +end) and then insert a new extent item with a key greater then the key we +found. The next time we search the tree we search for a key with offset +262144 + 1, which leaves us at the new extent item we have just inserted +but we think it refers to an extent that we need to clone. + +Fix this by ensuring the next search key uses an offset corresponding to +the offset of the key we found previously plus the data length of the +corresponding extent item. This ensures we skip new extent items that we +inserted and works for the case of implicit holes too (NO_HOLES feature). + +A test case for fstests follows soon. + +Signed-off-by: Filipe Manana <[email protected]> +Signed-off-by: Chris Mason <[email protected]> +Signed-off-by: David Sterba <[email protected]> +--- + fs/btrfs/ioctl.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c +index 2b4c5423672d..d79c599240a7 100644 +--- a/fs/btrfs/ioctl.c ++++ b/fs/btrfs/ioctl.c +@@ -3206,6 +3206,8 @@ static int btrfs_clone(struct inode *src, struct inode *inode, + key.offset = off; + + while (1) { ++ u64 next_key_min_offset; ++ + /* + * note the key will change type as we walk through the + * tree. +@@ -3286,7 +3288,7 @@ static int btrfs_clone(struct inode *src, struct inode *inode, + } else if (key.offset >= off + len) { + break; + } +- ++ next_key_min_offset = key.offset + datal; + size = btrfs_item_size_nr(leaf, slot); + read_extent_buffer(leaf, buf, + btrfs_item_ptr_offset(leaf, slot), +@@ -3501,7 +3503,7 @@ static int btrfs_clone(struct inode *src, struct inode *inode, + break; + } + btrfs_release_path(path); +- key.offset++; ++ key.offset = next_key_min_offset; + } + ret = 0; + +-- +2.1.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch new/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch --- old/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch 2015-06-18 17:11:06.000000000 +0200 @@ -0,0 +1,32 @@ +From: Chris Mason <[email protected]> +Date: Sat, 11 Apr 2015 05:09:06 -0700 +Patch-mainline: 4.1 +Git-commit: 2eb8c62e317b2305da00dc7986a982fa9637fedc +Subject: [PATCH] Btrfs: fix uninit variable in clone ioctl + +Commit 0d97a64e0 creates a new variable but doesn't always set it up. +This puts it back to the original method (key.offset + 1) for the cases +not covered by Filipe's new logic. + +Signed-off-by: Chris Mason <[email protected]> +Signed-off-by: David Sterba <[email protected]> +--- + fs/btrfs/ioctl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c +index d79c599240a7..64e8fb639f72 100644 +--- a/fs/btrfs/ioctl.c ++++ b/fs/btrfs/ioctl.c +@@ -3206,7 +3206,7 @@ static int btrfs_clone(struct inode *src, struct inode *inode, + key.offset = off; + + while (1) { +- u64 next_key_min_offset; ++ u64 next_key_min_offset = key.offset + 1; + + /* + * note the key will change type as we walk through the +-- +2.1.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch new/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch --- old/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch 2015-06-18 17:11:06.000000000 +0200 @@ -0,0 +1,55 @@ +From: Chris Mason <[email protected]> +Date: Tue, 19 May 2015 18:54:41 -0700 +Patch-mainline: 4.1 +Git-commit: 25c5856aa419479bb07466fd7d0de01da0b7b421 +Subject: [PATCH] Btrfs: fix regression in raid level conversion + +Commit 2f0810880f082fa8ba66ab2c33b02e4ff9770a5e changed +btrfs_set_block_group_ro to avoid trying to allocate new chunks with the +new raid profile during conversion. This fixed failures when there was +no space on the drive to allocate a new chunk, but the metadata +reserves were sufficient to continue the conversion. + +But this ended up causing a regression when the drive had plenty of +space to allocate new chunks, mostly because reduce_alloc_profile isn't +using the new raid profile. + +Fixing btrfs_reduce_alloc_profile is a bigger patch. For now, do a +partial revert of 2f0810880, and don't error out if we hit ENOSPC. + +Signed-off-by: Chris Mason <[email protected]> +Tested-by: Dave Sterba <[email protected]> +Reported-by: Holger Hoffstaette <[email protected]> +Signed-off-by: David Sterba <[email protected]> +--- + fs/btrfs/extent-tree.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +--- a/fs/btrfs/extent-tree.c ++++ b/fs/btrfs/extent-tree.c +@@ -8544,6 +8544,25 @@ int btrfs_set_block_group_ro(struct btrf + goto out; + } + ++ /* ++ * if we are changing raid levels, try to allocate a corresponding ++ * block group with the new raid level. ++ */ ++ alloc_flags = update_block_group_flags(root, cache->flags); ++ if (alloc_flags != cache->flags) { ++ ret = do_chunk_alloc(trans, root, alloc_flags, ++ CHUNK_ALLOC_FORCE); ++ /* ++ * ENOSPC is allowed here, we may have enough space ++ * already allocated at the new raid level to ++ * carry on ++ */ ++ if (ret == -ENOSPC) ++ ret = 0; ++ if (ret < 0) ++ goto out; ++ } ++ + ret = set_block_group_ro(cache, 0); + if (!ret) + goto out; ++++++ series.conf ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:09.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:09.000000000 +0200 @@ -281,6 +281,13 @@ ######################################################## patches.suse/btrfs-use-correct-device-for-maps.patch patches.fixes/btrfs-revert-delete-chunk-allocation.patch + patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch + patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch + patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch + patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch + patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch + patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch + patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch ######################################################## # Reiserfs Patches ++++++ source-timestamp ++++++ --- /var/tmp/diff_new_pack.V9fsZy/_old 2015-06-23 12:05:09.000000000 +0200 +++ /var/tmp/diff_new_pack.V9fsZy/_new 2015-06-23 12:05:09.000000000 +0200 @@ -1,3 +1,3 @@ -2015-06-12 11:50:14 +0200 -GIT Revision: 0e899eb6113c12cdf7dfde9632e6dacc92d591c9 +2015-06-18 17:11:06 +0200 +GIT Revision: 56152db3aa548241f14534a7e0d3c2acaec5dddc GIT Branch: stable
