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 included. 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 bio->bi_private. 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. -chris