|
|
About
TODO
Blog
RSS
Old blog
Projects
Gallery
Notes
Thu, 10 Apr 2008
POHMELFS development status.
It has developed very rapidly last couple of days,
so essentially I rewrote it. I think it is ready for the next
release, which I will announce in a day or so.
Right now all first-milestone features except cache-coherency (check below),
which I planned, are completed (although maybe not in the most
optimal way sometimes).
Because of name cache usage it is now possible to create huge pathes
with multiple directories via single command. The same applies to directory
removal,
although it is because of different design issue.
It would be possible to rewrite generic read/write helpers and provide
set of pages into POHMELFS network stack (which is page
based for data now), but I decided that for the first
step it is not needed.
POHMELSF has now fully async processing of all operations except link creation
(I just decided that it is a bit simpler to make them write-through,
it was done because of laziness and not some fundamental arch problems).
It was achieved by serious (read: from scratch) changes in the arch,
which had own problematic places, namely error report. Because of this
move it becomes really simple to implement any kind of protocol, if it obeys
async rules, namely sending of the message never requires sync reply,
and where it is needed, reply comes as an independent incoming message,
which is processed asynchronously from waiting and via common state machine.
Such arch allows to have simple cache coherency algorithm, when server just sends
a missed entries or commands to remove some objects and client's core handles that just
fine since its reciving code does not depend on sending one. This is not
100% correct way to handle collisions (collisions thus became new objects
in the filesystem tree, like old name plus some suffix), but it is what lots
of the users need, but not real cache-coherency.
Writeback cache does not play very well with cache-coherency, since every metadata
changes (like object creation or removal)
has to be checked against server state, since different clients can do the same with
the same object. Level of paranoidality has to be thought of in advance.
First cache-coherency step is implementation of the trivial scheme, when
every object is synced during its writeback time and changes being broadcasted by server
to other clients. If another client has the same object being processed
it can either be renamed to collision or just overwritten. Having locks
and thus real states is a next step.
Also, POHMELFS does not have authentification and strong checksums right now,
and although this is a simple task to implement, its priority is questionable.
There is also possibility to implement cryptographically strong encryption of the
communication channels.
So, lots of ideas, but main part is ready - async data processing design was
definitely a right choice to implement, so all other features become very simple
to complete.
New release will be announced very soon, stay tuned!
/devel/fs :: Link / Comments (0)
Please solve this captcha to be allowed to post (need to reload in a minute): 12 - 20
|