On Tue, 15 Jan 2008 11:07:40 +0100 Jens Axboe <jens.axboe@xxxxxxxxxx> wrote: > > > I split and merged the patch into five bits (added ext3 support), > > > so perhaps that would be easier for people to read/review. > > > Attached and also exist in the loop-extent_map branch here: Thanks! > > > > > > http://git.kernel.dk/?p=linux-2.6-block.git;a=shortlog;h=loop-extent_map > > > > Seems my ext3 version doesn't work, it craps out in > > ext3_get_blocks_handle() triggering this bug: > > > > J_ASSERT(handle != NULL || create == 0); > > > > I'll see if I can fix that, being fairly fs ignorant... > > This works, but probably pretty suboptimal (should end the new journal > in map_io_complete()?). And yes I know the >> 9 isn't correct, since > the fs block size is larger. Just making sure that we always have > enough blocks. You can use DIO_CREDITS instead of len >> 9, just like the ext3 O_DIRECT code does. Your current patch is fine, except it breaks data=ordered rules. My plan to work within data=ordered: 1) Inside ext3_map_extent (while the transaction was running), increment a counter in the ext3 journal for number of pending IOs. Then end the transaction handle. 2) Drop this counter inside the IO completion call 3) Change the ext3 commit code to wait for the IO count to be zero. I'll give it a shot later this week, until then your current patch is just data=writeback, which is good enough for testing. -chris - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html