diff options
author | graysky | 2019-09-16 14:30:24 -0400 |
---|---|---|
committer | graysky | 2019-09-16 14:30:24 -0400 |
commit | 8754f00f63762d7a1659b69c0f175c5ed068eb64 (patch) | |
tree | 014b31745e974aa06b2cfc4288972ab19915f12c | |
parent | 254aa2ac439ddc50473c664ab778a81d2d34e4d8 (diff) | |
download | aur-8754f00f63762d7a1659b69c0f175c5ed068eb64.tar.gz |
Update to 5.2.15-4
-rw-r--r-- | .SRCINFO | 16 | ||||
-rw-r--r-- | 0003-Btrfs-fix-unwritten-extent-buffers-and-hangs-on-futu.patch | 145 | ||||
-rw-r--r-- | PKGBUILD | 8 |
3 files changed, 10 insertions, 159 deletions
@@ -1,5 +1,5 @@ pkgbase = linux-ck - pkgver = 5.2.14 + pkgver = 5.2.15 pkgrel = 4 url = https://wiki.archlinux.org/index.php/Linux-ck arch = x86_64 @@ -9,8 +9,8 @@ pkgbase = linux-ck makedepends = bc makedepends = libelf options = !strip - source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.2.14.tar.xz - source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.2.14.tar.sign + source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.2.15.tar.xz + source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.2.15.tar.sign source = config source = 60-linux.hook source = 90-linux.hook @@ -19,10 +19,9 @@ pkgbase = linux-ck source = http://ck.kolivas.org/patches/5.0/5.2/5.2-ck1/patch-5.2-ck1.xz source = 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch source = 0002-ZEN-Add-CONFIG-for-unprivileged_userns_clone.patch - source = 0003-Btrfs-fix-unwritten-extent-buffers-and-hangs-on-futu.patch validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E - sha256sums = c64d36477fee6a864a734ec417407768e60040a13f144c33208fa9622fd0ce8c + sha256sums = eb561009da8106b463b1e1a16ab0f75cdef564784f49177148f5f92c32380c4a sha256sums = SKIP sha256sums = 42e2bc6a7d8439b3a6fe4084d1349077472e0a6831d8a39edda46824a5f0987b sha256sums = ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21 @@ -32,7 +31,6 @@ pkgbase = linux-ck sha256sums = f1abc13a8d859fbf6350040e45d7f04ad551a6d39f113ba96fbbd820118c0e36 sha256sums = 91fafa76bf9cb32159ac7f22191b3589278b91e65bc4505cf2fc6013b8037bf3 sha256sums = 63e4378e69e2f23ed87af32a4951477a6d82d4ac0de2295db46502c8120da9d9 - sha256sums = f45f8695a7fe308b7aaef874df0a51ce91ac47ef180adf0cc507b482aad2459f pkgname = linux-ck pkgdesc = The Linux-ck kernel and modules with the ck1 patchset featuring MuQSS CPU scheduler @@ -42,12 +40,12 @@ pkgname = linux-ck depends = kmod depends = mkinitcpio optdepends = crda: to set the correct wireless channels of your country - provides = linux-ck=5.2.14 + provides = linux-ck=5.2.15 backup = etc/mkinitcpio.d/linux-ck.preset pkgname = linux-ck-headers pkgdesc = Header files and scripts for building modules for Linux-ck kernel depends = linux-ck - provides = linux-ck-headers=5.2.14 - provides = linux-headers=5.2.14 + provides = linux-ck-headers=5.2.15 + provides = linux-headers=5.2.15 diff --git a/0003-Btrfs-fix-unwritten-extent-buffers-and-hangs-on-futu.patch b/0003-Btrfs-fix-unwritten-extent-buffers-and-hangs-on-futu.patch deleted file mode 100644 index ff526e3968de..000000000000 --- a/0003-Btrfs-fix-unwritten-extent-buffers-and-hangs-on-futu.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 45fc8773f47b7cbe56caab0e14abf26d1e044e63 Mon Sep 17 00:00:00 2001 -From: Filipe Manana <fdmanana@suse.com> -Date: Wed, 11 Sep 2019 17:42:00 +0100 -Subject: [PATCH 3/4] Btrfs: fix unwritten extent buffers and hangs on future - writeback attempts - -The lock_extent_buffer_io() returns 1 to the caller to tell it everything -went fine and the callers needs to start writeback for the extent buffer -(submit a bio, etc), 0 to tell the caller everything went fine but it does -not need to start writeback for the extent buffer, and a negative value if -some error happened. - -When it's about to return 1 it tries to lock all pages, and if a try lock -on a page fails, and we didn't flush any existing bio in our "epd", it -calls flush_write_bio(epd) and overwrites the return value of 1 to 0 or -an error. The page might have been locked elsewhere, not with the goal -of starting writeback of the extent buffer, and even by some code other -than btrfs, like page migration for example, so it does not mean the -writeback of the extent buffer was already started by some other task, -so returning a 0 tells the caller (btree_write_cache_pages()) to not -start writeback for the extent buffer. Note that epd might currently have -either no bio, so flush_write_bio() returns 0 (success) or it might have -a bio for another extent buffer with a lower index (logical address). - -Since we return 0 with the EXTENT_BUFFER_WRITEBACK bit set on the -extent buffer and writeback is never started for the extent buffer, -future attempts to writeback the extent buffer will hang forever waiting -on that bit to be cleared, since it can only be cleared after writeback -completes. Such hang is reported with a trace like the following: - - [49887.347053] INFO: task btrfs-transacti:1752 blocked for more than 122 seconds. - [49887.347059] Not tainted 5.2.13-gentoo #2 - [49887.347060] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. - [49887.347062] btrfs-transacti D 0 1752 2 0x80004000 - [49887.347064] Call Trace: - [49887.347069] ? __schedule+0x265/0x830 - [49887.347071] ? bit_wait+0x50/0x50 - [49887.347072] ? bit_wait+0x50/0x50 - [49887.347074] schedule+0x24/0x90 - [49887.347075] io_schedule+0x3c/0x60 - [49887.347077] bit_wait_io+0x8/0x50 - [49887.347079] __wait_on_bit+0x6c/0x80 - [49887.347081] ? __lock_release.isra.29+0x155/0x2d0 - [49887.347083] out_of_line_wait_on_bit+0x7b/0x80 - [49887.347084] ? var_wake_function+0x20/0x20 - [49887.347087] lock_extent_buffer_for_io+0x28c/0x390 - [49887.347089] btree_write_cache_pages+0x18e/0x340 - [49887.347091] do_writepages+0x29/0xb0 - [49887.347093] ? kmem_cache_free+0x132/0x160 - [49887.347095] ? convert_extent_bit+0x544/0x680 - [49887.347097] filemap_fdatawrite_range+0x70/0x90 - [49887.347099] btrfs_write_marked_extents+0x53/0x120 - [49887.347100] btrfs_write_and_wait_transaction.isra.4+0x38/0xa0 - [49887.347102] btrfs_commit_transaction+0x6bb/0x990 - [49887.347103] ? start_transaction+0x33e/0x500 - [49887.347105] transaction_kthread+0x139/0x15c - -So fix this by not overwriting the return value (ret) with the result -from flush_write_bio(). We also need to clear the EXTENT_BUFFER_WRITEBACK -bit in case flush_write_bio() returns an error, otherwise it will hang -any future attempts to writeback the extent buffer, and undo all work -done before (set back EXTENT_BUFFER_DIRTY, etc). - -This is a regression introduced in the 5.2 kernel. - -Fixes: 2e3c25136adfb ("btrfs: extent_io: add proper error handling to lock_extent_buffer_for_io()") -Fixes: f4340622e0226 ("btrfs: extent_io: Move the BUG_ON() in flush_write_bio() one level up") -Reported-by: Zdenek Sojka <zsojka@seznam.cz> -Link: https://lore.kernel.org/linux-btrfs/GpO.2yos.3WGDOLpx6t%7D.1TUDYM@seznam.cz/T/#u -Reported-by: Stefan Priebe - Profihost AG <s.priebe@profihost.ag> -Link: https://lore.kernel.org/linux-btrfs/5c4688ac-10a7-fb07-70e8-c5d31a3fbb38@profihost.ag/T/#t -Reported-by: Drazen Kacar <drazen.kacar@oradian.com> -Link: https://lore.kernel.org/linux-btrfs/DB8PR03MB562876ECE2319B3E579590F799C80@DB8PR03MB5628.eurprd03.prod.outlook.com/ -Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204377 -Signed-off-by: Filipe Manana <fdmanana@suse.com> ---- - fs/btrfs/extent_io.c | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c -index db337e53aab3..93900ff87df7 100644 ---- a/fs/btrfs/extent_io.c -+++ b/fs/btrfs/extent_io.c -@@ -3591,6 +3591,13 @@ void wait_on_extent_buffer_writeback(struct extent_buffer *eb) - TASK_UNINTERRUPTIBLE); - } - -+static void end_extent_buffer_writeback(struct extent_buffer *eb) -+{ -+ clear_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags); -+ smp_mb__after_atomic(); -+ wake_up_bit(&eb->bflags, EXTENT_BUFFER_WRITEBACK); -+} -+ - /* - * Lock eb pages and flush the bio if we can't the locks - * -@@ -3662,8 +3669,11 @@ static noinline_for_stack int lock_extent_buffer_for_io(struct extent_buffer *eb - - if (!trylock_page(p)) { - if (!flush) { -- ret = flush_write_bio(epd); -- if (ret < 0) { -+ int err; -+ -+ err = flush_write_bio(epd); -+ if (err < 0) { -+ ret = err; - failed_page_nr = i; - goto err_unlock; - } -@@ -3678,16 +3688,23 @@ static noinline_for_stack int lock_extent_buffer_for_io(struct extent_buffer *eb - /* Unlock already locked pages */ - for (i = 0; i < failed_page_nr; i++) - unlock_page(eb->pages[i]); -+ /* -+ * Clear EXTENT_BUFFER_WRITEBACK and wake up anyone waiting on it. -+ * Also set back EXTENT_BUFFER_DIRTY so future attempts to this eb can -+ * be made and undo everything done before. -+ */ -+ btrfs_tree_lock(eb); -+ spin_lock(&eb->refs_lock); -+ set_bit(EXTENT_BUFFER_DIRTY, &eb->bflags); -+ end_extent_buffer_writeback(eb); -+ spin_unlock(&eb->refs_lock); -+ percpu_counter_add_batch(&fs_info->dirty_metadata_bytes, eb->len, -+ fs_info->dirty_metadata_batch); -+ btrfs_clear_header_flag(eb, BTRFS_HEADER_FLAG_WRITTEN); -+ btrfs_tree_unlock(eb); - return ret; - } - --static void end_extent_buffer_writeback(struct extent_buffer *eb) --{ -- clear_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags); -- smp_mb__after_atomic(); -- wake_up_bit(&eb->bflags, EXTENT_BUFFER_WRITEBACK); --} -- - static void set_btree_ioerr(struct page *page) - { - struct extent_buffer *eb = (struct extent_buffer *)page->private; --- -2.23.0 - @@ -63,7 +63,7 @@ _localmodcfg= ### IMPORTANT: Do no edit below this line unless you know what you're doing pkgbase=linux-ck -_srcver=5.2.14-arch1 +_srcver=5.2.15-arch1 pkgver=${_srcver%-*} pkgrel=4 _ckpatchversion=1 @@ -84,13 +84,12 @@ source=( "http://ck.kolivas.org/patches/5.0/5.2/5.2-ck${_ckpatchversion}/$_ckpatch.xz" 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch 0002-ZEN-Add-CONFIG-for-unprivileged_userns_clone.patch - 0003-Btrfs-fix-unwritten-extent-buffers-and-hangs-on-futu.patch ) validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman ) -sha256sums=('c64d36477fee6a864a734ec417407768e60040a13f144c33208fa9622fd0ce8c' +sha256sums=('eb561009da8106b463b1e1a16ab0f75cdef564784f49177148f5f92c32380c4a' 'SKIP' '42e2bc6a7d8439b3a6fe4084d1349077472e0a6831d8a39edda46824a5f0987b' 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' @@ -99,8 +98,7 @@ sha256sums=('c64d36477fee6a864a734ec417407768e60040a13f144c33208fa9622fd0ce8c' '8c11086809864b5cef7d079f930bd40da8d0869c091965fa62e95de9a0fe13b5' 'f1abc13a8d859fbf6350040e45d7f04ad551a6d39f113ba96fbbd820118c0e36' '91fafa76bf9cb32159ac7f22191b3589278b91e65bc4505cf2fc6013b8037bf3' - '63e4378e69e2f23ed87af32a4951477a6d82d4ac0de2295db46502c8120da9d9' - 'f45f8695a7fe308b7aaef874df0a51ce91ac47ef180adf0cc507b482aad2459f') + '63e4378e69e2f23ed87af32a4951477a6d82d4ac0de2295db46502c8120da9d9') _kernelname=${pkgbase#linux} : ${_kernelname:=-ARCH} |