[RFC] Bug in journal_commit_transaction?

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

 



  Hello,

  I think I have found a possible cause of assertion failure in
journal_commit_buffer() on line 793 (b_next_transaction == NULL) (which
was reported about two times as I remember). And I think the problem is
just a few lines below in cond_resched_lock(&journal->j_list_lock);
  The problem is following: we are processing t_forget list of a
committing transaction. On this forget list are among other buffers also
bitmaps and buffers that are freed by this transaction. Now if bitmap
buffer is processed first, we switch to new bitmap (hence the buffer
freed by this transaction is again available for allocation). If we
reschedule on that cond_resched_lock() and in the meantime someone
allocates the buffer, we later fail with that assertion failure.
  Quick and easy fix to the problem is to just remove that
cond_resched_lock(). But I guess that may harm latency. Another solution
would be to always keep bitmap buffers in the end of forget list (or
create separate list for bitmap buffers) but that sounds a bit hacky.
Any other idea?

							Bye
								Honza

-- 
Jan Kara <jack@xxxxxxx>
SuSE CR Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux