From: "Stéphane Lesimple" <stephane_btrfs@lesimple.fr>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>
Cc: Qu Wenruo <quwenruo@cn.fujitsu.com>, linux-btrfs@vger.kernel.org
Subject: Re: kernel BUG at linux-4.2.0/fs/btrfs/extent-tree.c:1833 on rebalance
Date: Tue, 22 Sep 2015 16:31:54 +0200 [thread overview]
Message-ID: <69919cd93d3942e8210fb45a53fc42ac@all.all> (raw)
In-Reply-To: <5601169B.4060600@gmx.com>
Le 2015-09-22 10:51, Qu Wenruo a écrit :
>>>>> [92098.842261] Call Trace:
>>>>> [92098.842277] [<ffffffffc035a5d8>] ?
>>>>> read_extent_buffer+0xb8/0x110
>>>>> [btrfs]
>>>>> [92098.842304] [<ffffffffc0396d00>] ?
>>>>> btrfs_find_all_roots+0x60/0x70
>>>>> [btrfs]
>>>>> [92098.842329] [<ffffffffc039af3d>]
>>>>> btrfs_qgroup_rescan_worker+0x28d/0x5a0 [btrfs]
>>>>
>>>> Would you please show the code of it?
>>>> This one seems to be another stupid bug I made when rewriting the
>>>> framework.
>>>> Maybe I forgot to reinit some variants or I'm screwing memory...
>>>
>>> (gdb) list *(btrfs_qgroup_rescan_worker+0x28d)
>>> 0x97f6d is in btrfs_qgroup_rescan_worker (fs/btrfs/ctree.h:2760).
>>> 2755
>>> 2756 static inline void btrfs_disk_key_to_cpu(struct btrfs_key
>>> *cpu,
>>> 2757 struct
>>> btrfs_disk_key
>>> *disk)
>>> 2758 {
>>> 2759 cpu->offset =e64_to_cpu(disk->offset);
>>> 2760 cpu->type =isk->type;
>>> 2761 cpu->objectid =e64_to_cpu(disk->objectid);
>>> 2762 }
>>> 2763
>>> 2764 static inline void btrfs_cpu_key_to_disk(struct
>>> btrfs_disk_key
>>> *disk,
>>> (gdb)
>>>
>>>
>>> Does it makes sense ?
>> So it seems that the memory of cpu key is being screwed up...
>>
>> The code is be specific thin inline function, so what about other
>> stack?
>> Like btrfs_qgroup_rescan_helper+0x12?
>>
>> Thanks,
>> Qu
> Oh, I forgot that you can just change the number of
> btrfs_qgroup_rescan_worker+0x28d to smaller value.
> Try +0x280 for example, which will revert to 14 bytes asm code back,
> which may jump out of the inline function range, and may give you a
> good hint.
>
> Or gdb may have a better mode for inline function, but I don't know...
Actually, "list -" is our friend here (show 10 lignes before the last
src output)
(gdb) list *(btrfs_qgroup_rescan_worker+0x28d)
0x97f6d is in btrfs_qgroup_rescan_worker (fs/btrfs/ctree.h:2760).
2755
2756 static inline void btrfs_disk_key_to_cpu(struct btrfs_key *cpu,
2757 struct btrfs_disk_key
*disk)
2758 {
2759 cpu->offset = le64_to_cpu(disk->offset);
2760 cpu->type = disk->type;
2761 cpu->objectid = le64_to_cpu(disk->objectid);
2762 }
2763
2764 static inline void btrfs_cpu_key_to_disk(struct btrfs_disk_key
*disk,
(gdb) list -
2745 struct
btrfs_disk_key *key)
2746 {
2747 write_eb_member(eb, h, struct btrfs_free_space_header,
location, key);
2748 }
2749
2750 /* struct btrfs_disk_key */
2751 BTRFS_SETGET_STACK_FUNCS(disk_key_objectid, struct
btrfs_disk_key,
2752 objectid, 64);
2753 BTRFS_SETGET_STACK_FUNCS(disk_key_offset, struct btrfs_disk_key,
offset, 64);
2754 BTRFS_SETGET_STACK_FUNCS(disk_key_type, struct btrfs_disk_key,
type, 8);
(gdb) list -
2735
2736 static inline void btrfs_free_space_key(struct extent_buffer
*eb,
2737 struct
btrfs_free_space_header *h,
2738 struct btrfs_disk_key
*key)
2739 {
2740 read_eb_member(eb, h, struct btrfs_free_space_header,
location, key);
2741 }
2742
2743 static inline void btrfs_set_free_space_key(struct extent_buffer
*eb,
2744 struct
btrfs_free_space_header *h,
(gdb)
Lots of inline funcs and macros it seems.
--
Stéphane.
next prev parent reply other threads:[~2015-09-22 14:31 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-14 11:46 kernel BUG at linux-4.2.0/fs/btrfs/extent-tree.c:1833 on rebalance Stéphane Lesimple
2015-09-15 14:47 ` Stéphane Lesimple
2015-09-15 14:56 ` Josef Bacik
2015-09-15 21:47 ` Stéphane Lesimple
2015-09-16 5:02 ` Duncan
2015-09-16 10:28 ` Stéphane Lesimple
2015-09-16 10:46 ` Holger Hoffstätte
2015-09-16 13:04 ` Stéphane Lesimple
2015-09-16 20:18 ` Duncan
2015-09-16 20:41 ` Stéphane Lesimple
2015-09-17 3:03 ` Qu Wenruo
2015-09-17 6:11 ` Stéphane Lesimple
2015-09-17 6:42 ` Qu Wenruo
2015-09-17 8:02 ` Stéphane Lesimple
2015-09-17 8:11 ` Qu Wenruo
2015-09-17 10:08 ` Stéphane Lesimple
2015-09-17 10:41 ` Qu Wenruo
2015-09-17 18:47 ` Stéphane Lesimple
2015-09-18 0:59 ` Qu Wenruo
2015-09-18 7:36 ` Stéphane Lesimple
2015-09-18 10:15 ` Stéphane Lesimple
2015-09-18 10:26 ` Stéphane Lesimple
2015-09-20 1:22 ` Qu Wenruo
2015-09-20 10:35 ` Stéphane Lesimple
2015-09-20 10:51 ` Qu Wenruo
2015-09-20 11:14 ` Stéphane Lesimple
2015-09-22 1:30 ` Stéphane Lesimple
2015-09-22 1:37 ` Qu Wenruo
2015-09-22 7:34 ` Stéphane Lesimple
2015-09-22 8:40 ` Qu Wenruo
2015-09-22 8:51 ` Qu Wenruo
2015-09-22 14:31 ` Stéphane Lesimple [this message]
2015-09-23 7:03 ` Qu Wenruo
2015-09-23 9:40 ` Stéphane Lesimple
2015-09-23 10:13 ` Qu Wenruo
2015-09-17 6:29 ` Stéphane Lesimple
2015-09-17 7:54 ` Stéphane Lesimple
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=69919cd93d3942e8210fb45a53fc42ac@all.all \
--to=stephane_btrfs@lesimple.fr \
--cc=linux-btrfs@vger.kernel.org \
--cc=quwenruo.btrfs@gmx.com \
--cc=quwenruo@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.