Hello everyone, I've pushed out my current queue of patches, most of the changes are fairly small. btrfsctl -d some_file will defrag that file. Basically it just reads in all the pages in the file and marks them for delayed allocation. The delalloc magic then allocates in big contiguous chunks. snapshot creation has been changed to flush out current pending delayed allocation writes to make sure all the blocks are allocated and checksums are done. I'll tune this again later to speed things up, but super fast snapshot creation will require turning off delayed allocation for most writes (there will be a mount option for this). I fixed up crash recovery a little, it now finishes deleting old roots only when a given subvolume is actually accessed. This makes mounting much faster when there are huge numbers of subvolumes/snapshots, and has the added benefit of not crashing on the block accounting code. -chris