Theodore Tso wrote:
Ah, but as soon as the repacker thread runs continuously, then you lose all or most of the claimed advantage of "wandering logs". Specifically, the claim of the "wandering log" is that you don't have to write your data twice --- once to the log, and once to the final location on disk (whereas with ext3 you end up having to do double writes). But if the repacker is running continuously, you end up doing double writes anyway, as the repacker moves things from a location that is convenient for the log, to a location which is efficient for reading. Worse yet, if the repacker is moving disk blocks or objects which are no longer in cache, it may end up having to read objects in before writing them to a final location on disk. So instead of a write-write overhead, you end up with a write-read-write overhead.
There's no reason to repack *all* of the data. Many workloads write and delete whole files, so file data should be contiguous. The repacker would only need to move metadata and small files.
-- Do not meddle in the internals of kernels, for they are subtle and quick to panic.
