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); --
| Alistair John Strachan | cpu time oddity (was Re: Linux 2.6.27-rc5) |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| mkrufky | Re: [v4l-dvb-maintainer] modpost errors ( Re: 2.6.23-rc6-mm1) |
| Avi Kivity | [PATCH 022/104] KVM: Remove dead code in the cmpxchg instruction emulation |
git: | |
| Sander | 'struct task_struct' has no member named 'mems_allowed' (was: Re: 2.6.20-rc4-mm1) |
| David Miller | [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 18/37] dccp: Support for Mandatory options |
| Natalie Protasevich | [BUG] New Kernel Bugs |
