On Thu, 2013-07-25 at 11:16 -0700, Taras Glek wrote:
> 
> 
> Vyacheslav Dubeyko wrote: 
> > On Jul 25, 2013, at 8:42 PM, Taras Glek wrote:
> > 
> > [snip]
> > > > To introduce transparent decompression. Let someone else do the 
> > > > compression for us, and supply decompressed data on demand  (in this 
> > > > case a read call). Reduces the complexity which would otherwise have to 
> > > > be brought into the filesystem.
> > > The main use for file compression for Firefox(it's useful on Linux 
> > > desktop too) is to improve IO-throughput and reduce startup latency. In 
> > > order for compression to be a net win an application should be aware of 
> > > what is being compressed and what isn't. For example patterns for IO on 
> > > large libraries (eg 30mb libxul.so) are well suited to compression, but 
> > > SQLite databases are not.  Similarly for our disk cache: images should 
> > > not be compressed, but javascript should be. Footprint wins are useful on 
> > > android, but it's the increased IO throughput on crappy storage devices 
> > > that makes this most attractive.
> > > 
> > > In addition of being aware of which files should be compressed, Firefox 
> > > is aware of patterns of usage of various files it could schedule 
> > > compression at the most optimal time.
> > > 
> > > Above needs tie in nicely with the simplification of not implementing 
> > > compression at fs-level.
> > 
> > There are many filesystems that uses compression as internal technique. 
> > And, as I understand, implementation
> > of compression in different Linux kernel filesystem drivers has similar 
> > code patterns. So, from my point of view,
> > it makes sense to generalize compression/decompression code in the form of 
> > library. The API of such generalized
> > compression kernel library can be used in drivers of different file 
> > systems. Also such generalized compression
> > library will simplify support of compression in file system drivers that 
> > don't support compression feature currently.
> > 
> > Moreover, I think that it is possible to implement compression support on 
> > VFS level. Such feature gives
> > opportunity to have compression support for filesystems that don't support 
> > compression feature as
> > internal technique.
> >From my conversations with Ted, it sounded like it was easier to
> accomplish changes like this at fs level than vfs. Maybe things are
> different now

If I understand the idea correctly, you want to have file-oriented
compression. I mean that you want to have one type of files are
compressed but another type of ones should be not compressed. So, from
my understanding, a file is not ext4 specific concept. Every filesystem
contains files. So, if you intend to implement compression support in
ext4 then you need to use e2compr as basis for full-featured compression
in ext4. But if you want to have something like file-oriented
compression then it is not feature of concrete filesystem. Do you mean
that Firefox will work only on ext4? So, it means for me that feature
likewise file-oriented compression should be on VFS level or over VFS.
And I am not fully confident that it should be a feature in
kernel-space.

> > 
> > [snip]
> > > This transparent decompression idea is based on our experience with HFS+. 
> > > Apple uses the fs-attribute approach. OSX is able to compress application 
> > > libraries at installation-time, apps remain blissfully unaware but get an 
> > > extra boost in startup perf.
> > > 
> > 
> > HFS+ supports compression as internal filesystem technique. It means that 
> > HFS+ volume layout has
> > metadata structures for compression support (compressed xattrs or 
> > compressed resource forks).
> > So, compression is supported on FS level. As I know, Mac OS X has native 
> > decompression support
> > for compressed files but you need to use special tool for compression of 
> > files on HFS+. Maybe
> > Mac OS X has internal library that give opportunity to compress application 
> > libraries at installation
> > time. But I suppose that it is simply user-space tool or library that uses 
> > HFS+ compression support
> > on kernel-space and volume layout levels.
> OSX compression is done in userspace, all heuristics are done in
> userspace. https://github.com/jrk/afsctool/blob/master/afsctool.c#L87 
> Rest of the details are there too. 

Anyway, HFS+ keeps compressed files' content in com.apple.decmpfs xattr
or in resource fork. It means for me that HFS+ volume layout has special
metadata structures for compression support. Because if you will try to
work with HFS+ compressed file under Linux then you will see file with
zero byte in size. And, moreover, Mac OS X filesystem driver should know
about these metadata structures. Otherwise, it cannot process HFS+
compressed files. We can discuss about HFS+ compression in more details
but I think that it is not key topic for this patch set.

With the best regards,
Vyacheslav Dubeyko.

> Taras
> > 
> > With the best regards,
> > Vyacheslav Dubeyko.
> > 


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to