Re: BUG at fs/btrfs/locking.c:265
From: Liu Bo <hidden>
Date: 2012-12-28 09:51:58
Hi Slava, David, I've sent a patch to fix the bug(Cced you), could you please check if it works? :) thanks, liubo On Thu, Dec 27, 2012 at 02:24:37PM +0100, David Sterba wrote:
On Thu, Dec 27, 2012 at 04:07:31PM +0800, Liu Bo wrote:quoted
On Thu, Dec 27, 2012 at 08:27:11AM +0400, Slava Barinov wrote:quoted
And there's nothing in dmesg that could help user to understand what happened. I've lost about ten minutes trying to understand what does it want from me.Could you please show me what line does 'walk_down_proc+0x2b0/0x2e0 [btrfs]' refer to?It's 6578 if (path->locks[level] && level > 0) { 6579 btrfs_tree_unlock_rw(eb, path->locks[level]); ^^^^ 6580 path->locks[level] = 0; 6581 } 6582 return 0; which calls btrfs_tree_unlock() and hits the 241 void btrfs_tree_unlock(struct extent_buffer *eb) 242 { 243 int blockers = atomic_read(&eb->blocking_writers); 244 245 BUG_ON(blockers > 1); 246 247 btrfs_assert_tree_locked(eb); -> 263 void btrfs_assert_tree_locked(struct extent_buffer *eb) 264 { 265 BUG_ON(!atomic_read(&eb->write_locks)); 266 } david