<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/jbd/checkpoint.c, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2008-11-07T03:37:59Z</updated>
<entry>
<title>jbd: don't give up looking for space so easily in __log_wait_for_space</title>
<updated>2008-11-07T03:37:59Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2008-11-07T03:37:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e219cca082f52e7dfea41f3be264b7b5eb204227'/>
<id>urn:sha1:e219cca082f52e7dfea41f3be264b7b5eb204227</id>
<content type='text'>
Commit be07c4ed introducd a regression because it assumed that if
there were no transactions ready to be checkpointed, that no progress
could be made on making space available in the journal, and so the
journal should be aborted.  This assumption is false; it could be the
case that simply calling cleanup_journal_tail() will recover the
necessary space, or, for small journals, the currently committing
transaction could be responsible for chewing up the required space in
the log, so we need to wait for the currently committing transaction
to finish before trying to force a checkpoint operation.

This patch fixes the bug reported by Meelis Roos at:
http://bugzilla.kernel.org/show_bug.cgi?id=11937

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Cc: Duane Griffin &lt;duaneg@dghda.com&gt;
Cc: Toshiyuki Okajima &lt;toshi.okajima@jp.fujitsu.com&gt;
</content>
</entry>
<entry>
<title>jbd: abort instead of waiting for nonexistent transactions</title>
<updated>2008-10-23T15:55:02Z</updated>
<author>
<name>Duane Griffin</name>
</author>
<published>2008-10-22T21:15:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=be07c4ed4043ab8c26f222348136141335e47a2f'/>
<id>urn:sha1:be07c4ed4043ab8c26f222348136141335e47a2f</id>
<content type='text'>
The __log_wait_for_space function sits in a loop checkpointing
transactions until there is sufficient space free in the journal.
However, if there are no transactions to be processed (e.g.  because the
free space calculation is wrong due to a corrupted filesystem) it will
never progress.

Check for space being required when no transactions are outstanding and
abort the journal instead of endlessly looping.

This patch fixes the bug reported by Sami Liedes at:
http://bugzilla.kernel.org/show_bug.cgi?id=10976

Signed-off-by: Duane Griffin &lt;duaneg@dghda.com&gt;
Tested-by: Sami Liedes &lt;sliedes@cc.hut.fi&gt;
Cc: &lt;linux-ext4@vger.kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>jbd: test BH_Write_EIO to detect errors on metadata buffers</title>
<updated>2008-10-23T15:55:02Z</updated>
<author>
<name>Hidehiro Kawai</name>
</author>
<published>2008-10-22T21:15:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9f818b4ac04f53458d0354950b4f229f54be4dbf'/>
<id>urn:sha1:9f818b4ac04f53458d0354950b4f229f54be4dbf</id>
<content type='text'>
__try_to_free_cp_buf(), __process_buffer(), and __wait_cp_io() test
BH_Uptodate flag to detect write I/O errors on metadata buffers.  But by
commit 95450f5a7e53d5752ce1a0d0b8282e10fe745ae0 "ext3: don't read inode
block if the buffer has a write error"(*), BH_Uptodate flag can be set to
inode buffers with BH_Write_EIO in order to avoid reading old inode data.
So now, we have to test BH_Write_EIO flag of checkpointing inode buffers
instead of BH_Uptodate.  This patch does it.

Signed-off-by: Hidehiro Kawai &lt;hidehiro.kawai.ez@hitachi.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Acked-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>jbd: fix error handling for checkpoint io</title>
<updated>2008-10-23T15:55:01Z</updated>
<author>
<name>Hidehiro Kawai</name>
</author>
<published>2008-10-22T21:15:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4afe978530702c934dfdb11f54073136818b2119'/>
<id>urn:sha1:4afe978530702c934dfdb11f54073136818b2119</id>
<content type='text'>
When a checkpointing IO fails, current JBD code doesn't check the error
and continue journaling.  This means latest metadata can be lost from both
the journal and filesystem.

This patch leaves the failed metadata blocks in the journal space and
aborts journaling in the case of log_do_checkpoint().  To achieve this, we
need to do:

1. don't remove the failed buffer from the checkpoint list where in
   the case of __try_to_free_cp_buf() because it may be released or
   overwritten by a later transaction
2. log_do_checkpoint() is the last chance, remove the failed buffer
   from the checkpoint list and abort the journal
3. when checkpointing fails, don't update the journal super block to
   prevent the journaled contents from being cleaned.  For safety,
   don't update j_tail and j_tail_sequence either
4. when checkpointing fails, notify this error to the ext3 layer so
   that ext3 don't clear the needs_recovery flag, otherwise the
   journaled contents are ignored and cleaned in the recovery phase
5. if the recovery fails, keep the needs_recovery flag
6. prevent cleanup_journal_tail() from being called between
   __journal_drop_transaction() and journal_abort() (a race issue
   between journal_flush() and __log_wait_for_space()

Signed-off-by: Hidehiro Kawai &lt;hidehiro.kawai.ez@hitachi.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: &lt;linux-ext4@vger.kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>spinlock: lockbreak cleanup</title>
<updated>2008-01-30T12:31:20Z</updated>
<author>
<name>Nick Piggin</name>
</author>
<published>2008-01-30T12:31:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=95c354fe9f7d6decc08a92aa26eb233ecc2155bf'/>
<id>urn:sha1:95c354fe9f7d6decc08a92aa26eb233ecc2155bf</id>
<content type='text'>
The break_lock data structure and code for spinlocks is quite nasty.
Not only does it double the size of a spinlock but it changes locking to
a potentially less optimal trylock.

Put all of that under CONFIG_GENERIC_LOCKBREAK, and introduce a
__raw_spin_is_contended that uses the lock data itself to determine whether
there are waiters on the lock, to be used if CONFIG_GENERIC_LOCKBREAK is
not set.

Rename need_lockbreak to spin_needbreak, make it use spin_is_contended to
decouple it from the spinlock implementation, and make it typesafe (rwlocks
do not have any need_lockbreak sites -- why do they even get bloated up
with that break_lock then?).

Signed-off-by: Nick Piggin &lt;npiggin@suse.de&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>jbd: Fix assertion failure in fs/jbd/checkpoint.c</title>
<updated>2007-12-05T17:21:20Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2007-12-05T07:45:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d4beaf4ab5f89496f2bcf67db62ad95d99bfeff6'/>
<id>urn:sha1:d4beaf4ab5f89496f2bcf67db62ad95d99bfeff6</id>
<content type='text'>
Before we start committing a transaction, we call
__journal_clean_checkpoint_list() to cleanup transaction's written-back
buffers.

If this call happens to remove all of them (and there were already some
buffers), __journal_remove_checkpoint() will decide to free the transaction
because it isn't (yet) a committing transaction and soon we fail some
assertion - the transaction really isn't ready to be freed :).

We change the check in __journal_remove_checkpoint() to free only a
transaction in T_FINISHED state.  The locking there is subtle though (as
everywhere in JBD ;().  We use j_list_lock to protect the check and a
subsequent call to __journal_drop_transaction() and do the same in the end
of journal_commit_transaction() which is the only place where a transaction
can get to T_FINISHED state.

Probably I'm too paranoid here and such locking is not really necessary -
checkpoint lists are processed only from log_do_checkpoint() where a
transaction must be already committed to be processed or from
__journal_clean_checkpoint_list() where kjournald itself calls it and thus
transaction cannot change state either.  Better be safe if something
changes in future...

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: &lt;linux-ext4@vger.kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fix file specification in comments</title>
<updated>2007-05-09T06:58:16Z</updated>
<author>
<name>Uwe Kleine-König</name>
</author>
<published>2007-05-09T05:51:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5886269962f94fa9185c32db3ec936c612503235'/>
<id>urn:sha1:5886269962f94fa9185c32db3ec936c612503235</id>
<content type='text'>
Many files include the filename at the beginning, serveral used a wrong one.

Signed-off-by: Uwe Kleine-König &lt;ukleinek@informatik.uni-freiburg.de&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3: More whitespace cleanups</title>
<updated>2006-09-27T15:26:10Z</updated>
<author>
<name>Dave Kleikamp</name>
</author>
<published>2006-09-27T08:49:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e9ad5620bfb901df8a7a2603c88689ededeecaf1'/>
<id>urn:sha1:e9ad5620bfb901df8a7a2603c88689ededeecaf1</id>
<content type='text'>
More white space cleanups in preparation of cloning ext4 from ext3.
Removing spaces that precede a tab.

Signed-off-by: Dave Kleikamp &lt;shaggy@austin.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] ext3 and jbd cleanup: remove whitespace</title>
<updated>2006-09-27T15:26:09Z</updated>
<author>
<name>Mingming Cao</name>
</author>
<published>2006-09-27T08:49:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ae6ddcc5f24d6b06ae9231dc128904750a4155e0'/>
<id>urn:sha1:ae6ddcc5f24d6b06ae9231dc128904750a4155e0</id>
<content type='text'>
Remove whitespace from ext3 and jbd, before we clone ext4.

Signed-off-by: Mingming Cao&lt;cmm@us.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] jbd: add lock annotation to jbd_sync_bh</title>
<updated>2006-09-27T15:26:08Z</updated>
<author>
<name>Josh Triplett</name>
</author>
<published>2006-09-27T08:49:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e7ab8d65055e9b9dfc131d0467cfc5a8368d7ee4'/>
<id>urn:sha1:e7ab8d65055e9b9dfc131d0467cfc5a8368d7ee4</id>
<content type='text'>
jbd_sync_bh releases journal-&gt;j_list_lock.  Add a lock annotation to this
function so that sparse can check callers for lock pairing, and so that
sparse will not complain about this function since it intentionally uses
the lock in this manner.

Signed-off-by: Josh Triplett &lt;josh@freedesktop.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
