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.
On 05/27/2015 04:04 PM, Austin S Hemmelgarn wrote:
On 2015-05-27 03:37, Mosis Tembo wrote:
I assume you are referring either to Tux3 specifically or COW
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?
filesystems in general,
I am referring to modern file systems with transaction models and
delayed actions.
Tux3 is not the case?
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.
Entirely understandable.
(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.
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature