crashing with ext3

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

 



Hi Jan,

I've had three of these reports now within the past month.

On Wed, Jan 16, 2002 at 01:39:44PM +0100, Branko F. Gračner wrote:
> i'm using redhat 7.2 with ext3 as my primary fs on kernel 2.4.17 +
> grsecurity + acl

[ the others have been without any other patches on top of plain ext3]

> Jan 16 12:37:37 frost kernel: Assertion failure in journal_start() at
> transaction.c:225: "handle->h_transaction-
> >t_journal == journal"

Executive summary: during a delete, ext3 believes we end up writing a
dquot entry out to the wrong filesystem.

Does this ring any bells with you at all?  In the mean time, I'm
trying to reproduce it here.

The assert failure is invariably followed by a call trace looking like

 sys_unlink
 vfs_unlink
 d_delete
 iput
 ext3_delete_inode
 ext3_mark_inode_dirty
 ext3_mark_iloc_dirty
 ext3_free_inode
 dquot_drop
 dqput
 write_dquot
 do_get_write_access
 generic_file_write
 __mark_inode_dirty
 do_get_write_access
 ext3_dirty_inode

Translated, that means:

  we're doing an unlink; 
  we start a transaction inside ext3_delete_inode; 
  ext3 has already truncated the file back to zero, releasing all 
	used data blocks; 
  we have already marked the inode dirty (the ext3_mark_inode_dirty is
	just the remains of that call sitting on the stack);
  we have entered ext3_free_inode to release the inode itself;
  we have done the
	DQUOT_INIT(inode);
	DQUOT_FREE_INODE(inode);
  to update quota for the freed inode;
  we are trying to
	DQUOT_DROP(inode);
  to release the dquot struct and flush it to disk;
  dqput has called write_dquot to write the quota entry out;
  the generic_file_write into the quota file has tried to update the
	mtime and ctime timestamps;
  ext3_dirty_inode has been called to journal the timestamp update and
	has tried to start a new transaction;
  the journaling layer has BUG()ed because there is already a
	transaction open for the ext3_delete_inode (which is fine),
	but the new transaction is ON A DIFFERENT FILESYSTEM from the
	old one (which is really really bad news.)

Cheers,
 Stephen





[Index of Archives]         [Linux RAID]     [Kernel Development]     [Red Hat Install]     [Video 4 Linux]     [Postgresql]     [Fedora]     [Gimp]     [Yosemite News]

  Powered by Linux