Hi I've updated my patches for the extent base online defrag. The differences from my previous patches are as follows: - Fix the problem that the number of the used blocks reported by quota command decreases incorrectly after defragmentation. - Support the hole file. - Fix the credit calculation for the journal transaction. 2048 was passed to ext3_journal_start() directly for the provisional solution. Now, the number of the modified blocks is calculated and passed to ext3_ext_journal_restart() before modifying the metadata block for inserting the new extent or freeing the blocks. My patches need the following Alex's old patches for the multi-block allocation. "[RFC] extents,mballoc,delalloc for 2.6.16.8" http://marc.theaimsgroup.com/?l=linux-ext4&m=114669168616780&w=2 So they support only ext3. Alex updated his patches recently, so I will update my patches to support ext4 later. I have found the problem which causes Oops when inserting the 5th extent into the temporary inode. The new extent was corrupted because the first block in it was used as a extent block and the length of it shortened in ext3_new_block_cb(). When the filesystem has free blocks sufficiently, the number of the extents in the temporary inode is usually less than 5 and it doesn't occur. This problem seems to be fixed on ext4 of the mainline. So, it will be solved when I update my patches for ext4 later. My TODO list contains the followings. - Support ext4. - Put the multiple files close together. - Support indirect block file. - Optimize the depth of extent tree and the number of extent blocks after defragmentation. - The blocks on the temporary inode are moved to the original inode by a page in the current implementation. I have to tune the pages unit for the performance. Summary Of Patches: *These patches apply on top of Alex's patches. "[RFC] extents,mballoc,delalloc for 2.6.16.8" http://marc.theaimsgroup.com/?l=linux-ext4&m=114669168616780&w=2 [PATCH 1/2] Allocate new contiguous blocks with Alex's mballoc - Search contiguous free blocks and allocate them for the temporary inode with Alex's multi-block allocation. [PATCH 2/2] Move the file data to the new blocks - Move the blocks on the temporary inode to the original inode by a page. * The command isn't changed. You can get it from the following URL. "[RFC][PATCH 3/3] Online defrag command" http://marc.10east.com/?l=linux-ext4&m=116307074817572&w=1 Any comments are welcome. Cheers, Takashi - 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