[Ocfs2-devel] A patch to fix bug 45 in bugzilla

Rusty Lynch rusty at linux.co.intel.com
Thu Mar 18 07:10:45 CST 2004


On Thu, Mar 18, 2004 at 05:29:20PM +0800, Sonic Zhang wrote:
> Hi,
> 
> I think I found the root cause of the bug 45 in the bugzilla.
> 
> Actually, it is not an OCFS bug. It is caused in the Linux journaling
> routine(JBD) journal_create(). In kernel 2.6.x, buffer_head state
> BH_Uptodate is checked in mark_buffer_dirty(), while kernel 2.4.x
> doesn't do. If this state doesn't exist in the buffer_head, buffer error
> information is reported. But, in routine journal_create(), the state
> BH_Uptodate is set after the call to mark_buffer_dirty(). This works 
> well in kernel 2.4.x, but fails in kernel 2.6.x.

If this is jbd bug, then how come ext3 doesn't trigger buffer_error()?

> 
> I attach a patch to fix this bug in kernel 2.6.x. Could you please put it 
> into the subfolder "patches" in ocfs2 source tree?
> 
> Thank you.
> 
> ---------------------------------------
> --- linux-2.6.1.old/fs/jbd/journal.c	2004-03-18 15:55:47.591428104 +0800
> +++ linux-2.6.1/fs/jbd/journal.c	2004-03-18 15:56:25.609648456 +0800
> @@ -832,10 +832,10 @@
> 		bh = __getblk(journal->j_dev, blocknr, journal->j_blocksize);
> 		lock_buffer(bh);
> 		memset (bh->b_data, 0, journal->j_blocksize);
> -		BUFFER_TRACE(bh, "marking dirty");
> -		mark_buffer_dirty(bh);
> 		BUFFER_TRACE(bh, "marking uptodate");
> 		set_buffer_uptodate(bh);
> +		BUFFER_TRACE(bh, "marking dirty");
> +		mark_buffer_dirty(bh);
> 
> 		unlock_buffer(bh);
> 		__brelse(bh);
> 	}
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel


More information about the Ocfs2-devel mailing list