Messages in this thread | | | Date | Fri, 13 Oct 2006 11:08:15 -0500 | From | Eric Sandeen <> | Subject | Re: 2.6.18 ext3 panic. |
| |
Jan Kara wrote:
>> This is exactly the solution I proposed earlier (to check >> buffer_mapped() before calling submit_bh()). >> But at that time, Jan pointed out that the whole handling is wrong. > Yes, and it was. However it turned out that there are more problems > than I thought ;). > >> But if this is the only case we need to handle, I am okay with this band >> aid :) > I think Eric's patch may be a part of it. But we still need to check whether > the buffer is not after EOF before submitting it (or better said just > after we manage to lock the buffer). Because while we are waiting for > the buffer lock, journal_unmap_buffer() can still come and steal the > buffer - at least the write-out in journal_dirty_data() definitely needs > the check if I haven't overlooked something.
Ok, let me think on that today. My first reaction is that if we have the bh state lock and pay attention to mapped in journal_dirty_data(), then any blocks past EOF which have gotten unmapped by journal_unmap_buffer will be recognized as such (because they are now unmapped... without needing to check for past EOF...) and we'll be fine.
As a datapoint, davej's stresstest (several fsx's and fsstresses) survived an overnight run on his box, which used to panic in < 2 hrs. Survived about 6 hours on my box until I intentionally stopped it; my box had added a write/truncate test in a loop, with a bunch of periodic syncs as well....
-Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |