Andreas Dilger wrote:Thank you for your suggestion. I wrote an additional patch to do that below. Please apply it as the 6th patch of this patch series. BTW, I'm developing a patch which makes "abort the journal if a file data buffer has an error" tunable. I'll send it in another thread because it's not a bug fix patch. Regards, -- Hidehiro Kawai Hitachi, Systems Development Laboratory Linux Technology Center Subject: JBD: don't abort if flushing file data failed In ordered mode, it is not appropriate behavior to abort the journal when we failed to write file data. This patch calls printk() instead of aborting the journal. Additionally, set AS_EIO into the address_space object of the buffer which is written out by journal_do_submit_data() and failed so that fsync() can get -EIO. Signed-off-by: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com> --- fs/jbd/commit.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) Index: linux-2.6.26-rc4/fs/jbd/commit.c =================================================================== --- linux-2.6.26-rc4.orig/fs/jbd/commit.c +++ linux-2.6.26-rc4/fs/jbd/commit.c @@ -432,8 +432,11 @@ void journal_commit_transaction(journal_ wait_on_buffer(bh); spin_lock(&journal->j_list_lock); } - if (unlikely(!buffer_uptodate(bh))) + if (unlikely(!buffer_uptodate(bh))) { + set_bit(AS_EIO, &bh->b_page->mapping->flags); + SetPageError(bh->b_page); err = -EIO; + } if (!inverted_lock(journal, bh)) { put_bh(bh); spin_lock(&journal->j_list_lock); @@ -452,8 +455,11 @@ void journal_commit_transaction(journal_ } spin_unlock(&journal->j_list_lock); - if (err) - journal_abort(journal, err); + if (err) { + printk(KERN_WARNING + "JBD: Detected IO errors during flushing file data\n"); + err = 0; + } journal_write_revoke_records(journal, commit_transaction); --
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Arjan van de Ven | Re: Linux 2.6.27-rc8 |
git: | |
| Arjan van de Ven | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Jeff Garzik | Re: [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin" |
