2010-02-14 13:50:49

by Jari Sundell

[permalink] [raw]
Subject: Extents in spare files on ext4 not being merged

http://libtorrent.rakshasa.no/ticket/460#comment:49

Some users of rtorrent reported very high number of extents for files
despite the use of posix_fallocate/fallocate on ext4. (3000+ for 250MB
file, ) A test program showed that the file was contiguous on disk
despite the high number of extents reported by filefrag. (Not sure
what kernel versions they used)

---
Opening file '/mnt/d1/part1.wmv'.
Block size: 4096
File size: 196571350
Block/page count: 47992
1: log 0 bb78 phys 8800 bb77

Size of the file is 187.5 MB and filefrag reports 1505 extents.
---

So for some reason the extents aren't getting merged when mmaped
regions get sync'ed in a random order to disk.

Jari Sundell


2010-02-14 18:03:46

by Theodore Ts'o

[permalink] [raw]
Subject: Re: Extents in spare files on ext4 not being merged

On Sun, Feb 14, 2010 at 10:50:45PM +0900, Jari Sundell wrote:
> http://libtorrent.rakshasa.no/ticket/460#comment:49
>
> Some users of rtorrent reported very high number of extents for files
> despite the use of posix_fallocate/fallocate on ext4. (3000+ for 250MB
> file, ) A test program showed that the file was contiguous on disk
> despite the high number of extents reported by filefrag. (Not sure
> what kernel versions they used)

Yeah, it's a known problem. The main problem is that we are only
checking to see merge both to the left and the right of the extent
tree when converting an extent from uninitialzied to initialized.

I've cc'ed the linux-ext4 list in the hopes someone is motivated to
fix this long-standing shortcoming. Unless someone starts working
quickly, it's not likely it will make this upcoming merge window, but
we can hope....

- Ted