Just for performance tests I run:
./bonnie++ -d /mnt/btrfs -s0 -n 1:256:256:1 -r 0
and this causes and endless number of stack traces. Those seem to
come from:
use_block_rsv()
ret = block_rsv_use_bytes(block_rsv, blocksize);
if (!ret)
return block_rsv;
if (ret) {
WARN_ON(1);
ret = reserve_metadata_bytes(trans, root, block_rsv, blocksize,
Why is there a WARN_ON(1)? Running the bonnie benchmark is basically impossible
that.
Thanks,
Bernd
> Aug 19 18:30:56 fslab2 kernel: [ 265.255644] Loglevel set to 9
> Aug 19 18:31:26 fslab2 kernel: [ 295.490858] ------------[ cut here
]------------
> Aug 19 18:31:26 fslab2 kernel: [ 295.495589] WARNING: at
fs/btrfs/extent-tree.c:5711 btrfs_alloc_free_block+0x200/0x360 [btrfs]()
> Aug 19 18:31:26 fslab2 kernel: [ 295.504472] Hardware name: H8DCE
> Aug 19 18:31:26 fslab2 kernel: [ 295.507750] Modules linked in: nfsd
ib_umad rdma_ucm rdma_cm iw_cm ib_addr ib_uverbs sg ib_ipoib ib_cm ib_sa ip
> v6 sd_mod crc_t10dif loop arcmsr md_mod ib_mthca ib_mad pcspkr ib_core
8250_pnp fuse af_packet nfs lockd fscache auth_rpcgss nfs_acl sunrpc btrfs
> lzo_decompress lzo_compress zlib_deflate crc32c libcrc32c crypto_hash
crypto_algapi ata_generic pata_acpi e1000 pata_amd sata_nv libata scsi_mod
> unix [last unloaded: scsi_wait_scan]
> Aug 19 18:31:26 fslab2 kernel: [ 295.548618] Pid: 2074, comm: bonnie++ Not
tainted 3.1.0-rc2+ #34
> Aug 19 18:31:26 fslab2 kernel: [ 295.554695] Call Trace:
> Aug 19 18:31:26 fslab2 kernel: [ 295.557209] [<ffffffff8105c677>] ?
console_unlock+0x227/0x290
> Aug 19 18:31:26 fslab2 kernel: [ 295.563111] [<ffffffff8105bb7f>]
warn_slowpath_common+0x7f/0xc0
> Aug 19 18:31:26 fslab2 kernel: [ 295.569186] [<ffffffff8105bbda>]
warn_slowpath_null+0x1a/0x20
> Aug 19 18:31:26 fslab2 kernel: [ 295.575096] [<ffffffffa013d0d0>]
btrfs_alloc_free_block+0x200/0x360 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.582230] [<ffffffffa0165d10>] ?
lock_delalloc_pages+0x1f0/0x1f0 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.589280] [<ffffffffa0127b6b>]
__btrfs_cow_block+0x14b/0x6e0 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.595978] [<ffffffffa0179144>] ?
btrfs_try_tree_write_lock+0x44/0x80 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.603394] [<ffffffffa0128217>]
btrfs_cow_block+0x117/0x260 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.609920] [<ffffffffa012e455>]
btrfs_search_slot+0x385/0xaa0 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.616621] [<ffffffffa0140f3f>]
btrfs_lookup_inode+0x2f/0xa0 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.623236] [<ffffffffa0190eb3>]
btrfs_update_delayed_inode+0x73/0x160 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.630644] [<ffffffff8137163e>] ?
mutex_unlock+0xe/0x10
> Aug 19 18:31:26 fslab2 kernel: [ 295.636125] [<ffffffffa0192088>]
btrfs_run_delayed_items+0xe8/0x120 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.643254] [<ffffffffa014a240>]
btrfs_commit_transaction+0x230/0x870 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.650585] [<ffffffffa0149de9>] ?
join_transaction+0x69/0x290 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.657274] [<ffffffff8107f410>] ?
wake_up_bit+0x40/0x40
> Aug 19 18:31:26 fslab2 kernel: [ 295.662783] [<ffffffff81171700>] ?
__sync_filesystem+0x90/0x90
> Aug 19 18:31:26 fslab2 kernel: [ 295.668783] [<ffffffffa0124ace>]
btrfs_sync_fs+0x5e/0xd0 [btrfs]
> Aug 19 18:31:26 fslab2 kernel: [ 295.674951] [<ffffffff811716ce>]
__sync_filesystem+0x5e/0x90
> Aug 19 18:31:26 fslab2 kernel: [ 295.680764] [<ffffffff8117171f>]
sync_one_sb+0x1f/0x30
> Aug 19 18:31:26 fslab2 kernel: [ 295.686061] [<ffffffff8114751f>]
iterate_supers+0x7f/0xe0
> Aug 19 18:31:26 fslab2 kernel: [ 295.691613] [<ffffffff81171775>]
sys_sync+0x45/0x70
> Aug 19 18:31:26 fslab2 kernel: [ 295.696648] [<ffffffff8137b4c2>]
system_call_fastpath+0x16/0x1b
> Aug 19 18:31:26 fslab2 kernel: [ 295.702726] ---[ end trace
5328a9730b4cdff4 ]---
> Aug 19 18:31:26 fslab2 kernel: [ 295.707533] ------------[ cut here
]------------
> Aug 19 18:31:26 fslab2 kernel: [ 295.712230] WARNING: at
fs/btrfs/extent-tree.c:5711 btrfs_alloc_free_block+0x200/0x360 [btrfs]()
> Aug 19 18:31:26 fslab2 kernel: [ 295.721114] Hardware name: H8DCE
> Aug 19 18:31:26 fslab2 kernel: [ 295.724410] Modules linked in: nfsd
ib_umad rdma_ucm rdma_cm iw_cm ib_addr ib_uverbs sg ib_ipoib ib_cm ib_sa ip
> v6 sd_mod crc_t10dif loop arcmsr md_mod ib_mthca ib_mad pcspkr ib_core
8250_pnp fuse af_packet nfs lockd fscache auth_rpcgss nfs_acl sunrpc btrfs
> lzo_decompress lzo_compress zlib_deflate crc32c libcrc32c crypto_hash
crypto_algapi ata_generic pata_acpi e1000 pata_amd sata_nv libata scsi_mod
[...]
repeats at least a few thousand times and fills the logs...
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Bernd Schubert
2011-Aug-19 17:28 UTC
Re: bonnie triggers and endless numbers of stack traces
I think we either should remove it or replace by WARN_ON_ONCE()
Remove WARN_ON(1) in a common code path
From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
Something like bonnie++ -d /mnt/btrfs -s0 -n 1:256:256:1 -r 0
will trigger lots of those WARN_ON(1), so lets remove it.
Signed-off-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de>
---
fs/btrfs/extent-tree.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 80d6148..1d1a8d0 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -5708,7 +5708,6 @@ use_block_rsv(struct btrfs_trans_handle *trans,
if (!ret)
return block_rsv;
if (ret) {
- WARN_ON(1);
ret = reserve_metadata_bytes(trans, root, block_rsv, blocksize,
0);
if (!ret) {
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
On 08/19/2011 12:45 PM, Bernd Schubert wrote:> Just for performance tests I run: > > ./bonnie++ -d /mnt/btrfs -s0 -n 1:256:256:1 -r 0 > > and this causes and endless number of stack traces. Those seem to > come from: > > use_block_rsv() > > ret = block_rsv_use_bytes(block_rsv, blocksize); > if (!ret) > return block_rsv; > if (ret) { > WARN_ON(1); > ret = reserve_metadata_bytes(trans, root, block_rsv, blocksize, > > > Why is there a WARN_ON(1)? Running the bonnie benchmark is basically impossible > that.This is being worked on, if you really don''t like it pull my git tree and test it out and see if the errors go away git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work.git Thanks, Josef -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Sterba
2011-Aug-19 23:45 UTC
Re: bonnie triggers and endless numbers of stack traces
On Fri, Aug 19, 2011 at 03:36:55PM -0400, Josef Bacik wrote:> This is being worked on, if you really don''t like it pull my git tree > and test it out and see if the errors go away > > git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work.gitpulled on top of latest linus'', with top commit: "Btrfs: fix space leak when we fail to make an allocation" but I still see it, xfstests/013. david -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Bernd Schubert
2011-Aug-22 08:17 UTC
Re: bonnie triggers and endless numbers of stack traces
On 08/19/2011 09:36 PM, Josef Bacik wrote:> On 08/19/2011 12:45 PM, Bernd Schubert wrote: >> Just for performance tests I run: >> >> ./bonnie++ -d /mnt/btrfs -s0 -n 1:256:256:1 -r 0 >> >> and this causes and endless number of stack traces. Those seem to >> come from: >> >> use_block_rsv() >> >> ret = block_rsv_use_bytes(block_rsv, blocksize); >> if (!ret) >> return block_rsv; >> if (ret) { >> WARN_ON(1); >> ret = reserve_metadata_bytes(trans, root, block_rsv, blocksize, >> >> >> Why is there a WARN_ON(1)? Running the bonnie benchmark is basically impossible >> that. > > This is being worked on, if you really don''t like it pull my git tree > and test it out and see if the errors go away > > git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work.gitDo you plan to fix it for 3.1? If not, any chance to at least update it to WARN_ON_ONCE? Thanks, Bernd -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Sterba
2011-Aug-29 18:42 UTC
[PATCH debug] btrfs: ratelimit WARN_ON in use_block_rsv
A debugging helper, not really intended for merge.
From: David Sterba <dsterba@suse.cz>
Signed-off-by: David Sterba <dsterba@suse.cz>
---
fs/btrfs/extent-tree.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 44a3107..c5c1e7d 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -23,6 +23,7 @@
#include <linux/rcupdate.h>
#include <linux/kthread.h>
#include <linux/slab.h>
+#include <linux/ratelimit.h>
#include "compat.h"
#include "hash.h"
#include "ctree.h"
@@ -5703,7 +5704,13 @@ use_block_rsv(struct btrfs_trans_handle *trans,
if (!ret)
return block_rsv;
if (ret) {
- WARN_ON(1);
+ static DEFINE_RATELIMIT_STATE(_rs,
+ DEFAULT_RATELIMIT_INTERVAL,
+ /*DEFAULT_RATELIMIT_BURST*/ 2);
+ if (__ratelimit(&_rs)) {
+ printk(KERN_DEBUG "btrfs: block rsv returned %d\n", ret);
+ WARN_ON(1);
+ }
ret = reserve_metadata_bytes(trans, root, block_rsv, blocksize,
0);
if (!ret) {
--
1.7.6
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html