[Btrfs-devel] Various optimizations pushed to -unstable

Chris Mason chris.mason at oracle.com
Wed Jan 30 06:42:35 PST 2008

Hello everyone,

I have pushed out a number of small optimizations (and a few fixes), mostly 
tuning cpu usage.  The plan is to test these out locally for another few days 
and move them over to the stable tree.  There are no disk format changes 

1) Delalloc accounting via hooks in the extent_state code.  This is similar to 
how Yan originally did it.  I don't love using hooks for all of this but it 
is less complex than the alternatives.  With this code, the simple enospc 
checking is turned back on.

2) Reworked end_bio handlers.  The old end_bio handlers did many searches 
through the extent tree, resulting in too much lock contention.  The new code 
walks the state tree instead, starting from a cached value passed down via 

3) releasepage call doesn't try to drop extent mappings on small files, and 
properly honors the gfp flags of the caller.

4) File creation and deletion take advantage of new multi-item tree 
insertion/deletion routines.  This cuts down on the amount of shifting 
required to get work done.

5) mount -o ssd leaves on tree defragging.  Some quick tests from samsung show 
the defrag still helps.

6) mount -o max_inline=size added to tune the max tail size.

7) readahead during snapshot deletion no longer uses 100% of the cpu.  This 
didn't happen often, but if a given snapshot had lots of work to do during 
the delete, cpu usage would get out of control.


More information about the Btrfs-devel mailing list