Re: bcache blocking ops and lockdep warnings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 10 Dec 2014, Sitsofe Wheeler wrote:

> Hi,
> 
> After doing
> make-bcache -B /dev/sdf
> make-bcache -C /dev/sdh
> ls -l /sys/fs/bcache
> echo 1110734d-230c-4b8f-a63d-dff472a0977b > /sys/block/bcache0/bcache/attach
> 
> the following warnings were produced with a 3.18.0.x86_64-01967-g86c6a2f
> kernel:

Try the attached patches.

These have resolved all of the bcache backtraces that we have had issues 
with in the past few months.

--
Eric Wheeler, President           eWheeler, Inc. dba Global Linux Security
888-LINUX26 (888-546-8926)        Fax: 503-716-3878           PO Box 25107
www.GlobalLinuxSecurity.pro       Linux since 1996!     Portland, OR 97298


> 
> [   75.218601] bcache: register_bdev() registered backing device sdf
> [   82.616568] bcache: run_cache_set() invalidating existing data
> [   82.621589] ------------[ cut here ]------------
> [   82.622890] WARNING: CPU: 1 PID: 979 at kernel/sched/core.c:7301 __might_sleep+0x5c/0xa0()
> [   82.624344] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff8155afc8>] bch_allocator_thread+0xd8/0xe30
> [   82.625979] CPU: 1 PID: 979 Comm: bcache_allocato Not tainted 3.18.0.x86_64-01967-g86c6a2f #162
> [   82.627468] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090006  05/23/2012
> [   82.628949]  0000000000000009 ffff8800da963ce8 ffffffff816ea8af 0000000000000001
> [   82.634007]  ffff8800da963d38 ffff8800da963d28 ffffffff81073f3c ffff8800da963d28
> [   82.639020]  ffffffff819d431c 0000000000000038 0000000000000000 ffff8800e468a680
> [   82.643967] Call Trace:
> [   82.645045]  [<ffffffff816ea8af>] dump_stack+0x4e/0x68
> [   82.646345]  [<ffffffff81073f3c>] warn_slowpath_common+0x7c/0xa0
> [   82.647622]  [<ffffffff81073fc6>] warn_slowpath_fmt+0x46/0x50
> [   82.648954]  [<ffffffff8155afc8>] ? bch_allocator_thread+0xd8/0xe30
> [   82.650338]  [<ffffffff8155afc8>] ? bch_allocator_thread+0xd8/0xe30
> [   82.651667]  [<ffffffff810a2e2c>] __might_sleep+0x5c/0xa0
> [   82.652959]  [<ffffffff8155b0b7>] bch_allocator_thread+0x1c7/0xe30
> [   82.654335]  [<ffffffff8155aef0>] ? bch_invalidate_one_bucket+0x80/0x80
> [   82.655672]  [<ffffffff81091a03>] kthread+0x103/0x110
> [   82.656939]  [<ffffffff81091900>] ? __kthread_unpark+0x50/0x50
> [   82.658294]  [<ffffffff816f43fc>] ret_from_fork+0x7c/0xb0
> [   82.659664]  [<ffffffff81091900>] ? __kthread_unpark+0x50/0x50
> [   82.660970] ---[ end trace 15295ea1be01c8a2 ]---
> [   82.683570] ------------[ cut here ]------------
> [   82.684559] WARNING: CPU: 7 PID: 974 at kernel/locking/lockdep.c:712 __lock_acquire+0x21c/0x1c60()
> [   82.684559] CPU: 7 PID: 974 Comm: bcache-register Tainted: G        W      3.18.0.x86_64-01967-g86c6a2f #162
> [   82.684559] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090006  05/23/2012
> [   82.684559]  0000000000000009 ffff8800dac8f988 ffffffff816ea8af 0000000000000000
> [   82.684559]  0000000000000000 ffff8800dac8f9c8 ffffffff81073f3c ffff8800dac8f9c8
> [   82.684559]  ffffffff82668240 0000000000000000 ffff8800dac3da88 0000000000000001
> [   82.684559] Call Trace:
> [   82.684559]  [<ffffffff816ea8af>] dump_stack+0x4e/0x68
> [   82.684559]  [<ffffffff81073f3c>] warn_slowpath_common+0x7c/0xa0
> [   82.684559]  [<ffffffff8107403a>] warn_slowpath_null+0x1a/0x20
> [   82.684559]  [<ffffffff810c0d5c>] __lock_acquire+0x21c/0x1c60
> [   82.684559]  [<ffffffff813b24ae>] ? trace_hardirqs_on_thunk+0x3a/0x3f
> [   82.684559]  [<ffffffff810d624f>] ? rcu_irq_exit+0x8f/0xb0
> [   82.684559]  [<ffffffff810c2706>] ? __lock_acquire+0x1bc6/0x1c60
> [   82.684559]  [<ffffffff810c305c>] lock_acquire+0xfc/0x150
> [   82.684559]  [<ffffffff8156346c>] ? mca_reap+0x6c/0x170
> [   82.684559]  [<ffffffff810bc131>] down_write_trylock+0x61/0x80
> [   82.684559]  [<ffffffff8156346c>] ? mca_reap+0x6c/0x170
> [   82.684559]  [<ffffffff8156346c>] mca_reap+0x6c/0x170
> [   82.684559]  [<ffffffff81563900>] mca_alloc+0xe0/0x4b0
> [   82.684559]  [<ffffffff81564893>] __bch_btree_node_alloc+0xb3/0x240
> [   82.684559]  [<ffffffff815760da>] run_cache_set+0x6ea/0x950
> [   82.684559]  [<ffffffff8123fc6e>] ? kernfs_add_one+0x10e/0x160
> [   82.684559]  [<ffffffff815780cf>] register_bcache+0x167f/0x19e0
> [   82.684559]  [<ffffffff813a6bcf>] kobj_attr_store+0xf/0x20
> [   82.684559]  [<ffffffff812419a8>] sysfs_kf_write+0x48/0x60
> [   82.684559]  [<ffffffff81241247>] kernfs_fop_write+0xe7/0x170
> [   82.684559]  [<ffffffff811cde6b>] vfs_write+0xcb/0x1d0
> [   82.684559]  [<ffffffff816f50dc>] ? retint_swapgs+0x13/0x1b
> [   82.684559]  [<ffffffff811ce069>] SyS_write+0x49/0xb0
> [   82.684559]  [<ffffffff816f44a9>] system_call_fastpath+0x12/0x17
> [   82.684559] ---[ end trace 15295ea1be01c8a3 ]---
> [   82.763919] bcache: register_cache() registered cache device sdh
> 
> -- 
> Sitsofe | http://sucs.org/~sits/
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
index 00cde40..d14560a 100644
--- a/drivers/md/bcache/btree.c
+++ b/drivers/md/bcache/btree.c
@@ -2162,8 +2162,10 @@ int bch_btree_insert_check_key(struct btree *b, struct btree_op *op,
 		rw_lock(true, b, b->level);
 
 		if (b->key.ptr[0] != btree_ptr ||
-		    b->seq != seq + 1)
+		    b->seq != seq + 1) {
+			op->lock = b->c->root->level + 1;
 			goto out;
+		}
 	}
 
 	SET_KEY_PTRS(check_key, 1);
-- 
1.7.1
--- a/drivers/md/bcache/btree.c	2014-11-03 16:51:01.720000000 -0800
+++ b/drivers/md/bcache/btree.c	2014-11-03 16:51:26.456000000 -0800
@@ -1741,6 +1741,7 @@
 	do {
 		ret = btree_root(gc_root, c, &op, &writes, &stats);
 		closure_sync(&writes);
+		cond_resched();
 
 		if (ret && ret != -EAGAIN)
 			pr_warn("gc failed!");

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM Kernel]     [Linux Filesystem Development]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux