Thread (2 messages) 2 messages, 2 authors, 2009-02-03

Re: [RFC][PATCH 0/3] ext4: online defrag (ver 1.0)

From: Akira Fujita <hidden>
Date: 2009-02-03 08:01:14
Also in: linux-fsdevel

Hi Chris,

Chris Mason wrote:
On Fri, 2009-01-30 at 15:11 +0900, Akira Fujita wrote:
quoted
Hi,

I have rewritten ext4 online defrag patches based on the comments from Ted.
In the new defrag, create donor inode in the user space instead of kernel space,
and then allocate contiguous blocks to it with fallocate().
In kernel space, exchange the blocks between target inode and donor inode,
and then copy the file data of target inode to donor inode every 64MB.
The EXT4_IOC_DEFRAG ioctl becomes simpler than the old one,
so it may be useful for other purposes.
One thing you'll want to handle is swap files.  The swap code uses the
bmap ioctl to make a mapping of extents in the files, and expects that
mapping not to change.  So, defragging a swap file will lead to some
serious problems.

Btrfs is currently getting around this by dropping bmap support, so
swapfiles on btrfs won't work at all.  A real long term solution is
required ;)

For ext4 you should be able to just detect swapfile and disallow the
defrag on it.
Thank you for teaching.   ;)
I'll add the swapfile checks to command and kernel.
If target file is swapfile, ext4 online defrag returns an error
without doing defrag in the next version.

Regards,
Akira Fujita
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help