panic: assertion: leaf->base.obj_id == ip->obj_id in hammer_ip_delete_range
Matthew Dillon
dillon at apollo.backplane.com
Fri Oct 23 10:09:24 PDT 2009
:
:I guess this means that the new code in the patch avoided some bad
:condition, right?
Yes, that validates that the bug related to the rebalancing code
was real and that the bug fix actually fixed it.
:By the way, I caught a different panic on vkernel. I think the last
:I ran `hammer cleanup' on /usr/obj was before applying hammer05.patch
:or hammer06.patch to vkernel.
:
:$ ls /usr/obj
:build.log t
:$ rm -rf /usr/obj/*; sync
:$ panic: assertion: parent != NULL in hammer_cursor_removed_node
:mp_lock = 00000000; cpuid = 0
:Trace beginning at frame 0x5b7dfabc
:panic(5b7dfae0,0,0,58ba7168,5b7dfaf8) at 0x80dadce
:panic(824684c,8269077,82826b7,5e226588,0) at 0x80dadce
:hammer_cursor_removed_node(58ba7168,0,0,5b7dfc9c,0) at 0x81fe93a
:hammer_btree_do_propagation(58ba7168,0,58ba71b8,58ba71b8,58ba71b8) at 0x81fc4e0
:hammer_btree_do_propagation(0,0,52e22040,b,5b7dfbe8) at 0x81fc4c5
:hammer_btree_delete(5b7dfc9c,1,1,5b7d0114,52e22040) at 0x81fc8c4
:hammer_delete_at_cursor(5b7dfc9c,3,50c7fb30,b,4ae1c1b6) at 0x820b74e
:hammer_ip_delete_record(5b7dfc9c,5e41ead0,50c7fb30,b,4000) at 0x820b9b6
:hammer_ip_delete_range(5b7dfc9c,5e41ead0,0,0,ffffffff) at 0x820bda0
:hammer_sync_inode(5b7d0114,5e41ead0,5b7d0000,5b7d0114,5b7d0000) at 0x82029bd
:hammer_flusher_create(561212f0,0,0,0,0) at 0x8200b47
:Debugger("panic")
It's possible this will be fixed by the new patch as the propagation
code uses the recovery mechanism that was patched (I think), or the bug
fix from the problem corecode reported (also in patch 6). If you
have that core I'd like to see it, though, to make sure.
:by sync appears to trigger the panic. `undo -i' shows a warning like this.
:# undo -i build.log
:HAMMER: WARNING: Missing inode for dirent "build.log@@0x0000000b4d648360"
: obj_id = 0000000b4d640668, asof=0000000b4d648360, lo=00070000
:load: 0.00 cmd: undo 730 [fifoor] 0.00u 0.00s 0% 820k <-- ctrl+T
:
:Since there's no important data in /usr/obj (and it's on vkernel anyway),
:I don't mind losing the contents or the history, but will destroying and
:recreating the PFS fix the issue?
Generally speaking you can ignore missing inode warnings on historical
entries *unless* the transaction id is on a snapshot boundary (same as
a snapshot transaction id), in which case there's a problem.
The warnings can be ignored for any file marked nohistory or if the
mount is nohistory. All bets are off for nohistory files/mounts (the
data is just not in the B-Tree any more).
There's a second bug related to these missing inode issues and that is
if the undo code tries to actually open() the file, the file will look
like a FIFO, as in 'mkfifo' style FIFO, a mistake on my part I should
probably change it, and then get stuck on the open() until you ^C
because of that.
The real issue here is more of a long-standing disconnect between
the transaction the directory entry is in and the transaction the
initial laydown of the inode is in. It is something I need to fix
but it isn't critical.
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Bugs
mailing list