panic: assertion: leaf->base.obj_id == ip->obj_id in hammer_ip_delete_range

Matthew Dillon dillon at apollo.backplane.com
Mon Mar 15 10:53:54 PDT 2010


:On Mon, Mar 15, 2010 at 10:13:27AM -0700, Matthew Dillon wrote:
:>     We have to figure out what that hammer command that's running is
:>     trying to do (thread 7, pid 843).  That might give me a hint as
:>     to what sort of operation is confusing the cursor.
:
:I don't remember which, but those two hammer processes were
:doing `hammer iostats' and `hammer bstats'.

   Shoot.  That can't hurt anything.  I was hoping there'd be a
   hammer cleanup running somewhere but those are the only two
   hammer user processes.

   So maybe this isn't related to a collision with a hammer cleanup
   operation but instead something more conventional.

   The hammer cursor is at the correct node, just not at the proper
   index within that node.

   Ok, I found another clue.  The transaction id for the elements
   inserted into the node for the other object id is the same as the
   transaction id being used to delete the range.  That implies that
   the operation which inserted those elements is another flusher thread.
   This makes sense.  What doesn't make sense is how they managed to get
   inserted without the node's index being properly updated.

   I found a second place where I have to flag HAMMER_CURSOR_ITERATE_CHECK,
   this time in the normal delete path (no special cases other than a
   node becoming empty and being destroyed).

   I've committed all the patches so far including some related to
   Francois's bug report.  You can reset and pull the whole mess, or
   just apply thte latest patch ec9b6294f7ea2d9365124dd1e50ebe21c78da8b2
   to your already patched test system.

   Oh, p.s. is the HAMMER filesystem mounted nohistory?  If so that would
   explain why this second case is getting hit.

					-Matt
					Matthew Dillon 
					<dillon at backplane.com>





More information about the Bugs mailing list