Re: Tux3 Report: How fast can we fail?

From: Austin S Hemmelgarn
Date: Wed May 27 2015 - 11:38:09 EST


On 2015-05-27 11:21, Mosis Tembo wrote:

On 05/27/2015 04:04 PM, Austin S Hemmelgarn wrote:
On 2015-05-27 03:37, Mosis Tembo wrote:

On 05/26/2015 12:03 PM, Pavel Machek wrote:
We identified the following quality metrics for this algorithm:

1) Never fails to detect out of space in the front end.
2) Always fills a volume to 100% before reporting out of space.
3) Allows rm, rmdir and truncate even when a volume is full.

This is definitely nonsense. You can not rm, rmdir and truncate
when the volume is full. You will need a free space on disk to perform
such operations. Do you know why?

I assume you are referring either to Tux3 specifically or COW
filesystems in general,


I am referring to modern file systems with transaction models and
delayed actions.
Tux3 is not the case?

In a sensibly designed non-COW filesystem, unlink, truncate, and FALLOCATE_FL_{PUNCH_HOLE,COLLAPSE_RANGE} should never need to allocate anything. On well designed COW filesystems, you keep a reserve of space that is only available for temporary internal use so that these will work even when you report the volume as 100% full so you can free space. This is what BTRFS does (although it doesn't always work because of segregating data and metadata), and I believe that tux3 does this also, although I don't remember for certain.

because you very much _can_ do any of those on any of the non-COW
filesystems in the Linux kernel


It is simply incorrect. ReiserFS is a counterexample.


Apologies, I didn't know about ReiserFS having issues with that (it's the only one that I haven't used, and this is yet another reason I probably never will), but I know for a fact that it does work on ext*, XFS, and JFS (I'm not entirely certain about OCFS2 and GFS2, and NILFS2 is technically COW because it's log structured).

(I know from experience). Also, IIRC, it was mentioned somewhere that
Tux3 keeps a small reserve of space on the volume for internal
operations; and, I would assume that if that is the case, it reports
the volume full when everything *except* that reserve of space is
used, in which case rm, rmdir, and truncate should work fine when the
volume is full.


Sorry, I prefer to not manipulate with rumors and assumptions when it comes
to the review for kernel inclusion.

Entirely understandable.


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature