Thread (4 messages) 4 messages, 3 authors, 2012-12-28

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help