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

Bug#841144: kernel BUG at /build/linux-Wgpe2M/linux-4.8.11/fs/ocfs2/alloc.c:1514!



OCFS2 folks, any thoughts on this crash?

On Tue, 2017-01-17 at 02:12 +0000, Ben Hutchings wrote:
> On Mon, 2017-01-16 at 13:12 -0600, Russell Mosemann wrote:
> [...]
> > Jan 15 17:31:03 vhost032 kernel: ------------[ cut here ]------------
> > Jan 15 17:31:03 vhost032 kernel: kernel BUG at /build/linux-Wgpe2M/linux-4.8.11/fs/ocfs2/alloc.c:1514!
> 
> This is:
> 
> static int ocfs2_grow_tree(handle_t *handle, struct ocfs2_extent_tree *et,
>                            int *final_depth, struct buffer_head **last_eb_bh,
>                            struct ocfs2_alloc_context *meta_ac)
> {
> ...
>         BUG_ON(meta_ac == NULL);
> 
> > [...]
> > Jan 15 17:31:03 vhost032 kernel: Call Trace:
> > Jan 15 17:31:03 vhost032 kernel:  [<ffffffffc092aa75>] ? ocfs2_set_buffer_uptodate+0x35/0x4a0 [ocfs2]
> > Jan 15 17:31:03 vhost032 kernel:  [<ffffffff9e63ba27>] ? __find_get_block+0xa7/0x110
> > Jan 15 17:31:03 vhost032 kernel:  [<ffffffffc08bf087>] ? ocfs2_split_and_insert+0x307/0x490 [ocfs2]
> > Jan 15 17:31:03 vhost032 kernel:  [<ffffffffc08c55ce>] ? ocfs2_split_extent+0x3ee/0x560 [ocfs2]
> > Jan 15 17:31:03 vhost032 kernel:  [<ffffffffc08c59b3>] ? ocfs2_change_extent_flag+0x273/0x450 [ocfs2]
> > Jan 15 17:31:03 vhost032 kernel:  [<ffffffffc08c5ca0>] ? ocfs2_mark_extent_written+0x110/0x1d0 [ocfs2]
> > Jan 15 17:31:03 vhost032 kernel:  [<ffffffffc08ca0ad>] ? ocfs2_dio_end_io_write+0x44d/0x600 [ocfs2]
> 
> meta_ac is passed down from ocfs2_dio_end_io_write(), which allocates
> it using ocfs2_lock_allocators()... but the latter only allocates it
> conditionally.  It seems like the condition is wrong somehow.

This still seems to be happening for this user with 4.9.13, looking at
"git log -p v4.9.13..origin/master -- fs/ocfs2" I wonder if
https://git.kernel.org/torvalds/c/3e10b793fc40dfdbe51762e0d084bd6f2c8acaaa
might be relevant?

The commit message mentions meta_ac not getting allocated and an extent
split vs refcount split differentiation and we have ocfs2_split_extent
in the trace. Slim reasoning I know, maybe someone who knows the code
could make a better determination.

As Ben said before the whole bug report can be found at https://bugs.de
bian.org/841144

Ian.


Reply to: