User: Password:
Subscribe / Log in / New account

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

From:  Chris Mason <>
To:  Akira Fujita <>
Subject:  Re: [RFC][PATCH 0/3] ext4: online defrag (ver 1.0)
Date:  Fri, 30 Jan 2009 15:15:18 -0500
Message-ID:  <>
Cc:  Theodore Tso <>,,
Archive-link:  Article

On Fri, 2009-01-30 at 15:11 +0900, Akira Fujita wrote:
> 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.


To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to
More majordomo info at

(Log in to post comments)

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds