I suppose what would have been nice to see, architecturally,
was a way to transform data at some part in the pipeline and
to be able to specify various types of transforms, be they
compression, encryption or something else.  But maybe I'm
just dreaming without understanding the complexities of
what needs to happen on the "inside", such that where these
two operations might take place is actually incompatible and
thus there is little point of such a generalisation.

You really don't want crypto algorithms to be that pluggable. The reason being with crypto you need to make a very careful choice of algorithm,keylength and mode (CBC vs EBC vs CTR vs CCM vs GCM etc) and that isn't something you want an end admin doing. You don't want them switching from AES-256-CCM to Blowfish-448-CBC because they see 448 is bigger than 128 so therefore more secure.

For compression it wouldn't be such a big deal except for an implementation artifact of how the ZIO pipeline works, it is partly controlled by the compress stage at the moment.

The other problem is that you basically need a global unique registry anyway so that compress algorithm 1 is always lzjb, 2 is gzip, 3 is .... etc etc. Similarly for crypto and any other transform.


BTW I actually floated the idea of a generic ZTL - ZIO Transform Layer about this time last year (partly in jest because ZTL is the last three on my car registration :-)).

So, for example, if the interface was plugable and Sun only
wanted to ship gzip, but I wanted to create a "better" ZFS
based appliance than one based on just OpenSolaris, I might
build a bzip2 module for the kernel and have ZFS use that
by default.

I have to say it because normally I'm all for pluggable interfaces and I don't think the answer should be "its open source just add it" in this case I think that is for now the safer way.

--
Darren J Moffat
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to