Today I booted my linux-mint 14 into the latest 3.10.1 kernel to defragment the root btrfs filesystem on my ASUS N56VZ laptop with hybrid Seagate Momentus XT disk. I did something like
find / -exec btrfs filesystem defrag {} To my amazement it didn't really made a lot of I/O (the HDD LED wasn't blinking). Confident that at the beginning the defragmentation is CPU-bound (like it sometimes is for instance in case of O&O Defrag on Windows world), I let it go on, and I switched myself to my other chores. After a few minutes my system froze. I was barely able to switch to text terminal and login, but I couldn't reach bash prompt; it looked like the OS couln't perform any I/O on the disk. At the end, the system responded to SysRq REISUB combination though; Unfortunately I can't reproduce exactly what I typed in, because the command was not logged to the bash history...). It clearly showed me, that defragmenting the filesystem is not that trivial, as it is for ext4. So I have quesions: * Is the defragmentation of the whole filesystem supported at all? I can't find a single reference that it is, and a syntax of btrfs-progs suggest that it isn't. If supported, under what conditions? Like what % of free space should be available? * How to check the level of defragmentation, and what are the reasonable threshold values, that should indicate the desktop filesystem needs defragmenting? I know, that everyone's millage my vary; I just want to know some values as a point-of-reference. * What is the recommended command, that would efficiently defragment the whole file system, preferably with some sort of progress indication? Does this command find / -type f -o -type d -print0 | xargs --null --no-run-if-empty btrfs filesystem defragment -cv look like a reasonable idiom for defragmenting the whole filesystem? Thank you for your help, Adam Ryczkowski -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html