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.