[Interest] QFile subclass that does HFS compression?
René J. V. Bertin
rjvbertin at gmail.com
Mon Dec 17 19:27:37 CET 2018
Thiago Macieira wrote:
> How does that work? Is that just an ioctl, fcntl or a similar system call on
> the open file descriptor? If so, you can do it right now.
Unfortunately, no. Decompression is transparent like you'd expect from a
filesystem level for of compression, but you have to do the compression
yourself. And it's a chunked form of compression, but that probably makes it
easier to integrate it into an existing "write pipe" where you do not already
have all data ready to be written to storage.
You also have to maintain a chunk offset table, and a bit of metadata like the
uncompressed file size. Depending on the size of the compressed data, it's
stored either as an extended attribute, or else it goes into the file's resource
Libarchive has an option to extract the files with HFS compression, if you want
to have a look at a well-tested implementation.
> Do you want an API for it?
No, I was thinking of an option to set while opening a file for writing and that
makes the compression as transparent as possible (seek would probably have to be
disabled for instance).
> could benefit from this, the proposal would be stronger. NTFS and btrfs have
> compression, for example, and on Linux you can set attributes like secure
> deletion too.
I don't know about secure deletion but the compression in NTFS and btrfs (or
ZFS) is not a property you request when you open a file AFAIK. It's a filesystem
property that is set at the level of the directory or dataset. HFS compression
in QFile would really be Mac-specific, most 3rd-party HFS drivers for other OSes
do not even support the feature.
More information about the Interest