Hi david and chris,
On 08/24/2016 09:42 PM, David Sterba wrote:
Hi,
this pull request contains part 2 and adds more that arrived in the meantime
(new fixes or updated versions of patches). Assorted fixes. Please pull,
thanks.
----------------------------------------------------------------
The following changes since commit 10838816547a28696ca10e038b3b32f2efec5a42:
Merge branch 'integration-4.8' of
git://git.kernel.org/pub/scm/linux/kernel/git/fdmanana/linux into for-linus-4.8
(2016-08-05 12:25:05 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-chris-4.8
for you to fetch changes up to 79354fc603184885b50cf935b8b2085c2b3e0535:
Btrfs: fix lockdep warning on deadlock against an inode's log mutex
(2016-08-24 14:54:42 +0200)
----------------------------------------------------------------
Alex Lyakas (1):
btrfs: flush_space: treat return value of do_chunk_alloc properly
Anand Jain (1):
btrfs: do not background blkdev_put()
Filipe Manana (1):
Btrfs: fix lockdep warning on deadlock against an inode's log mutex
Jeff Mahoney (3):
btrfs: properly track when rescan worker is running
btrfs: waiting on qgroup rescan should not always be interruptible
btrfs: don't create or leak aliased root while cleaning up orphans
Josef Bacik (2):
Btrfs: fix em leak in find_first_block_group
Btrfs: handle pending renames with recycled inodes properly
Liu Bo (6):
Btrfs: fix memory leak of reloc_root
Btrfs: add ASSERT for block group's memory leak
Btrfs: clarify do_chunk_alloc()'s return value
Btrfs: check btree node's nritems
Btrfs: detect corruption when non-root leaf has zero item
Btrfs: remove BUG() in raid56
Qu Wenruo (4):
btrfs: backref: Fix soft lockup in __merge_refs function
btrfs: qgroup: Refactor btrfs_qgroup_insert_dirty_extent()
btrfs: relocation: Fix leaking qgroups numbers on data extents
btrfs: qgroup: Fix qgroup incorrectness caused by log replay
Wang Xiaoguang (5):
btrfs: use correct offset for reloc_inode in
prealloc_file_extent_cluster()
btrfs: divide btrfs_update_reserved_bytes() into two functions
btrfs: update btrfs_space_info's bytes_may_use timely
When I tested patch "btrfs: update btrfs_space_info's bytes_may_use
timely", I forgot
to run dm-flakey related fstests test cases: generic/056 generic/057
generic/059
generic/065 and generic/073, they will report a WARN about
bytes_may_use, sorry.
I prepared a patch to fix this issue, please see the attachment, with
this patch,
these 5 cases will pass.
Regards,
Xiaoguang Wang
btrfs: should block unused block groups deletion work when allocating
data space
btrfs: fix fsfreeze hang caused by delayed iputs deal
fs/btrfs/backref.c | 1 +
fs/btrfs/ctree.h | 7 +-
fs/btrfs/delayed-ref.c | 7 +-
fs/btrfs/disk-io.c | 69 ++++++++++++---
fs/btrfs/disk-io.h | 2 +
fs/btrfs/extent-tree.c | 227 ++++++++++++++++++++++++++-----------------------
fs/btrfs/extent_io.h | 1 +
fs/btrfs/file.c | 28 +++---
fs/btrfs/inode-map.c | 3 +-
fs/btrfs/inode.c | 37 +++++---
fs/btrfs/ioctl.c | 2 +-
fs/btrfs/qgroup.c | 62 +++++++++++---
fs/btrfs/qgroup.h | 36 ++++++--
fs/btrfs/raid56.c | 5 +-
fs/btrfs/relocation.c | 126 ++++++++++++++++++++++++---
fs/btrfs/root-tree.c | 27 ++++--
fs/btrfs/send.c | 36 ++++++--
fs/btrfs/super.c | 16 ++++
fs/btrfs/transaction.c | 7 +-
fs/btrfs/tree-log.c | 21 ++++-
fs/btrfs/tree-log.h | 5 +-
fs/btrfs/volumes.c | 69 ++++++++-------
22 files changed, 566 insertions(+), 228 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
>From 37a68c327b8090ecf59e7019433638d7a569d3ab Mon Sep 17 00:00:00 2001
From: Wang Xiaoguang <wangxg.f...@cn.fujitsu.com>
Date: Thu, 25 Aug 2016 10:09:09 +0800
Subject: [PATCH] btrfs: do not decrease bytes_may_use when replaying extents
When replaying extents, there is no need to update bytes_may_use
in btrfs_alloc_logged_file_extent(), otherwise it'll trigger a
WARN_ON about bytes_may_use.
Fixes: ("btrfs: update btrfs_space_info's bytes_may_use timely")
Signed-off-by: Wang Xiaoguang <wangxg.f...@cn.fujitsu.com>
---
fs/btrfs/extent-tree.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index ae8f9aa..7a15990 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -8242,6 +8242,7 @@ int btrfs_alloc_logged_file_extent(struct btrfs_trans_handle *trans,
{
int ret;
struct btrfs_block_group_cache *block_group;
+ struct btrfs_space_info *space_info;
/*
* Mixed block groups will exclude before processing the log so we only
@@ -8257,9 +8258,14 @@ int btrfs_alloc_logged_file_extent(struct btrfs_trans_handle *trans,
if (!block_group)
return -EINVAL;
- ret = btrfs_add_reserved_bytes(block_group, ins->offset,
- ins->offset, 0);
- BUG_ON(ret); /* logic error */
+ space_info = block_group->space_info;
+ spin_lock(&space_info->lock);
+ spin_lock(&block_group->lock);
+ space_info->bytes_reserved += ins->offset;
+ block_group->reserved += ins->offset;
+ spin_unlock(&block_group->lock);
+ spin_unlock(&space_info->lock);
+
ret = alloc_reserved_file_extent(trans, root, 0, root_objectid,
0, owner, offset, ins, 1);
btrfs_put_block_group(block_group);
--
2.9.0