|
|
About
TODO
Blog
RSS
Old blog
Projects
Gallery
Notes
Fri, 02 May 2008
Design of the POHMELFS transaction model.
It is heavily based on how netlink is implemented in Linux kernel.
Besides the fact that it is likely the most ugly and complex protocol
among communication models supported by the kernel, it is exactly the
most effective, extendible and feature rich one.
This model is based on the attributes, which are embedded into
the message. Each attribute has header, which includes size
of the attached data. So, one can put
effectively unlimited amount of data into any message (limited only by
size field and practical assumptions of the communication), and it is possible
to create message, which will contain any number of different attributes.
The main problem of the netlink is its padding and alignment ugliness.
Protocol tries to get the every bit out of the communication, so there is huge
amount of very hairy things there.
I like to drink and (un)fortunately I got pretty bad quality drinks some times,
but I'm absolutely sure, when Alexey Kuznetsov designed netlink attrubute alignment
policies he had really bad hangover after likely the ever worst crap he drunk.
So, netlink attributes are very ugly, but you can extend it how you like.
The same applies to POHMELFS transactions.
You can put any new attribute into the transaction in a very trivial manner (I worked
with netlink alot, even created
kernel connector
to simplify kernel development side, so I know that taste), although transaction size is limited,
it is controlled only by mount option (default is 32 IO vectors each one
of PAGE_SIZE (4k on x86) in one transaction).
Thus one can easily implement for example any protocol security labeling,
just add new per-packet attribute.
So, it is easily possible to infinitely extend communication protocol with full backward
compatibility.
/devel/fs :: Link / Comments (0)
Please solve this captcha to be allowed to post (need to reload in a minute): 74 + 58
|