On 2015-05-27 11:21, Mosis Tembo wrote:
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: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?
because you very much _can_ do any of those on any of the non-COW filesystems in the Linux kernelIt 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