On Fri, Jul 21, 2017 at 11:00:27PM +0200, Adam Borowski wrote:
> On Fri, Jul 21, 2017 at 11:37:49PM +0500, Roman Mamedov wrote:
> > On Fri, 21 Jul 2017 13:00:56 +0800
> > Anand Jain <anand.j...@oracle.com> wrote:
> > > On 07/18/2017 02:30 AM, David Sterba wrote:
> > > > This must stay 'return 1', if force-compress is on, so the change is
> > > > reverted.
> > > 
> > >   Initially I thought 'return 1' is correct, but looking in depth,
> > >   it is not correct as below..
> > > 
> > >   The biggest beneficiary of the estimating the compression ratio
> > >   in advance (heuristic) is when customers are using the
> > >   -o compress-force. But 'return 1' here is making them not to
> > >   use heuristic. So definitely something is wrong.
> > 
> > man mount says for btrfs:
> > 
> >     If compress-force is specified, all files will be compressed,  whether
> >     or  not they compress well.
> > 
> > So compress-force by definition should always compress all files no matter
> > what, and not use any heuristic. In fact it has no right to, as user forced
> > compression to always on. Returning 1 up there does seem right to me.
> 
> Technically, for every compression algorithm other than identity (and its
> bijections), some data will expand by at least one bit (thus byte, thus
> page), therefore we need to be able to store with no compression even when
> forced.  On the other hand, it sounds reasonable to take force to mean
> "compression will always be attempted" -- ie, we forbid early return when
> a small sample seems uncompressible.

The current wording is a bit confusing, it works as you describe. I'll
update the manual page.

> > >   -o compress is about the whether each of the compression-granular bytes
> > >   (BTRFS_MAX_UNCOMPRESSED) of the inode should be tried to compress OR
> > >   just give up for the whole inode by looking at the compression ratio
> > >   of the current compression-granular.
> > >   This approach can be overridden by -o compress-force. So in
> > >   -o compress-force there will be a lot more efforts in _trying_
> > >   to compression than in -o compress. We must use heuristic for
> > >   -o compress-force.
> > 
> > Semantic and the user expectation of compress-force dictates to always
> > compress without giving up, even if it turns out to be slower and not 
> > providing
> > much benefit.
> 
> Another question is, how would "compress-force" differ from "compress"
> otherwise?  Always attempting the compression is its whole purpose!

Eg. files that are already compressed would increase the cpu consumption
with compress-force, while they'd be hopefully detected as
incompressible with 'compress' and clever heuristics. So the NOCOMPRESS
bit would better reflect the status of the file.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to