Messages in this thread | | | Date | Thu, 12 Oct 2006 11:44:48 -0500 | From | Eric Sandeen <> | Subject | Re: 2.6.18 ext3 panic. |
| |
Andrew Morton wrote: > On Thu, 12 Oct 2006 14:28:20 +0200 > Jan Kara <jack@suse.cz> wrote: > >> Where can we call >> journal_dirty_data() without PageLock? > > block_write_full_page() will unlock the page, so ext3_writepage() > will run journal_dirty_data_fn() against an unlocked page. > > I haven't looked into the exact details of the race, but it should > be addressable via jbd_lock_bh_state() or j_list_lock coverage.
Yep, that's what I've been hashing out with Stephen today...
In one of my cases journal_dirty_data has dropped & re-acquired the bh_state lock and j_list_lock, and journal_unmap_buffer has come along in the meantime.
So it looks like we are missing some state tests, i.e. buffer_mapped(), at a couple points after we acquire jbd_lock_bh_state().
-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/
| |