Project

General

Profile

Bug #2898

HAMMER panic

Added by pavalos about 1 year ago. Updated about 1 year ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
04/06/2016
Due date:
% Done:

0%


Description

panic: assertion "(RB_EMPTY(&ip->rec_tree) && (ip->flags & HAMMER_INODE_XDIRTY) == 0) || (!RB_EMPTY(&ip->rec_tree) && (ip->flags & HAMMER_INODE_XDIRTY) != 0)" failed in hammer_flush_inode_done at /usr/src/sys/vfs/hammer/hammer_inode.c:2577
cpuid = 0
Trace beginning at frame 0xffffffe78639e910
panic() at panic+0x261 0xffffffff802e31ee
panic() at panic+0x261 0xffffffff802e31ee
hammer_flush_inode_done() at hammer_flush_inode_done+0x111 0xffffffff80424e68
hammer_flusher_flush_inode() at hammer_flusher_flush_inode+0x7a 0xffffffff8041f24a
hammer_fls_rb_tree_RB_SCAN() at hammer_fls_rb_tree_RB_SCAN+0xfc 0xffffffff8041e39e
hammer_flusher_slave_thread() at hammer_flusher_slave_thread+0x7a 0xffffffff8041e4d2

DragonFly ylem.theshell.com 4.5-DEVELOPMENT DragonFly v4.5.0.681.g2e03c8-DEVELOPMENT #2: Sat Mar 19 15:37:05 PDT 2016 :/usr/obj/usr/src/sys/YLEM64 x86_64

It didn’t crash dump—any ideas?

Peter

History

#1 Updated by tkusumi about 1 year ago

i'm suspecting a possible race here, but need to look into more details.
no one has really touched related code since 4.4.

hammer_rel_mem_record()
> 412 if (record->flags & HAMMER_RECF_ONRBTREE) {
> 413 RB_REMOVE(hammer_rec_rb_tree,
> 414 &ip->rec_tree,
> 415 record);
> 416 record->flags &= ~HAMMER_RECF_ONRBTREE;
> 417 KKASSERT(ip->rsv_recs > 0);
> 418 if (RB_EMPTY(&ip->rec_tree)) {
> 419 ip->flags &= ~HAMMER_INODE_XDIRTY;
> 420 ip->sync_flags &= ~HAMMER_INODE_XDIRTY;
> 421 }

Also available in: Atom PDF