* Patch "btrfs: clear ordered flag on cleaning up ordered extents" has been added to the 4.13-stable tree
@ 2017-10-02 12:30 gregkh
0 siblings, 0 replies; only message in thread
From: gregkh @ 2017-10-02 12:30 UTC (permalink / raw)
To: naohiro.aota, dsterba, gregkh, jbacik, quwenruo.btrfs
Cc: stable, stable-commits
This is a note to let you know that I've just added the patch titled
btrfs: clear ordered flag on cleaning up ordered extents
to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
btrfs-clear-ordered-flag-on-cleaning-up-ordered-extents.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.
>From 63d71450c8d817649a79e37d685523f988b9cc98 Mon Sep 17 00:00:00 2001
From: Naohiro Aota <naohiro.aota@wdc.com>
Date: Fri, 1 Sep 2017 17:58:47 +0900
Subject: btrfs: clear ordered flag on cleaning up ordered extents
From: Naohiro Aota <naohiro.aota@wdc.com>
commit 63d71450c8d817649a79e37d685523f988b9cc98 upstream.
Commit 524272607e88 ("btrfs: Handle delalloc error correctly to avoid
ordered extent hang") introduced btrfs_cleanup_ordered_extents() to cleanup
submitted ordered extents. However, it does not clear the ordered bit
(Private2) of corresponding pages. Thus, the following BUG occurs from
free_pages_check_bad() (on btrfs/125 with nospace_cache).
BUG: Bad page state in process btrfs pfn:3fa787
page:ffffdf2acfe9e1c0 count:0 mapcount:0 mapping: (null) index:0xd
flags: 0x8000000000002008(uptodate|private_2)
raw: 8000000000002008 0000000000000000 000000000000000d 00000000ffffffff
raw: ffffdf2acf5c1b20 ffffb443802238b0 0000000000000000 0000000000000000
page dumped because: PAGE_FLAGS_CHECK_AT_FREE flag(s) set
bad because of flags: 0x2000(private_2)
This patch clears the flag same as other places calling
btrfs_dec_test_ordered_pending() for every page in the specified range.
Fixes: 524272607e88 ("btrfs: Handle delalloc error correctly to avoid ordered extent hang")
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Reviewed-by: Qu Wenruo <quwenruo.btrfs@gmx.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/btrfs/inode.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -135,6 +135,18 @@ static inline void btrfs_cleanup_ordered
const u64 offset,
const u64 bytes)
{
+ unsigned long index = offset >> PAGE_SHIFT;
+ unsigned long end_index = (offset + bytes - 1) >> PAGE_SHIFT;
+ struct page *page;
+
+ while (index <= end_index) {
+ page = find_get_page(inode->i_mapping, index);
+ index++;
+ if (!page)
+ continue;
+ ClearPagePrivate2(page);
+ put_page(page);
+ }
return __endio_write_update_ordered(inode, offset + PAGE_SIZE,
bytes - PAGE_SIZE, false);
}
Patches currently in stable-queue which might be from naohiro.aota@wdc.com are
queue-4.13/btrfs-propagate-error-to-btrfs_cmp_data_prepare-caller.patch
queue-4.13/btrfs-fix-null-pointer-dereference-from-free_reloc_roots.patch
queue-4.13/btrfs-clear-ordered-flag-on-cleaning-up-ordered-extents.patch
queue-4.13/btrfs-finish-ordered-extent-cleaning-if-no-progress-is-found.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-10-02 12:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-02 12:30 Patch "btrfs: clear ordered flag on cleaning up ordered extents" has been added to the 4.13-stable tree gregkh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).