Re: [RFC] Per-file compression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for taking the time to reply.

On Sat, Apr 18, 2015 at 01:41:09PM +0200, Richard Weinberger wrote:
> On Sat, Apr 18, 2015 at 12:20 AM, Tom Marshall <tom@xxxxxxxxx> wrote:
> > So, I wrote a thing called 'zfile' that hooks into the VFS layer and
> > intercepts file_operations to do file (de)compression on the fly. When a
> > file is opened, it reads and decompresses the data into memory.  The file
> > may be read, written, and mmaped in the usual way.  If the contents are
> > changed, the data is compressed and written back.  A working patch for an
> > older kernel version may be found at:
> > http://review.cyanogenmod.org/#/c/95220/
> 
> So, I've extracted the patch from that website and gave a quick review.
> 
> I'm pretty sure VFS folks will hate the VFS layering you do.

This, I'm afraid, is the biggest obstacle to such a solution.  I know that
OverlayFS has been merged, so filesystem stacking is acceptable.  Perhaps
there would be a way to design a filesystem that stacks compression?

> Beside of that you decompress the *whole* file into memory at open() time.
> This will explode as soon you deal with bigger files.

I was thinking that a header with compressed offsets might be an option.  Or
in the case of lz4 it's not terribly inefficient to scan the blocks.

> Also you seem to trust the user.compression.realsize xattr provided by
> userspace.  That looks exploitable.

This is only used to provide a fast stat().  It could be put into a header
or even removed entirely in favor of scanning the blocks.

> Back to my original question, why not FUSE?

Mostly because I'm not very familiar with FUSE.  But I suppose it could be
an option.  I have some immediate concerns though:

* How would it affect performance?  FUSE passes all operations through user
  space, correct?

* How big might a reasonably complete implementation be for ARM?  The
  implementation would need to be stored in the initrd.

> Or add compression support to ecryptfs...

Several filesystems have native compression support.  But this would violate
the goal of not switching filesystems.
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux