|
|
About ::
TODO ::
Blog ::
RSS ::
Old blog ::
Projects ::
GIT ::
Gallery ::
Notes
Sat, 27 Sep 2008
POHMELFS cache coherency protocol.
Finally it looks like there are no killing bugs
or noticebly bad features in the distributed storage,
yesterday I pushed a change to drop wrong debug, which may resulted in a crash, also couple
of comment cleanups are waiting to be pushed, and likely that's it. It will be the last release,
if there will be no new feature requests or bugs found.
So, I switched back to the POHMELFS
development from DST.
To be really cool in cache coherency collisions, POHMELFS requires new locking/coherency mechanism, which
I implement similar to MOESI cache coherency protocol.
Which basically means a floating lock for given object,
which may be owned by only one client at a time not counting readers, they just receive a message, that theirs
data is not valid anymore.
First, I changed userspace management of the inode cache: now there is only single tree of all objects,
which were ever opened by any client. When client disconnects or drop inode locally, it is removed from the
server's cache also.
Next, there will be a special command to acicure grab/release a lock, which is only being sent by writers.
When writer starts its dirty job of damaging shared data, it sends a lock grab message to the server with
requested range, which in turn is broadcasted to the other writers, only single writer is allowed to own given area.
Then server proceeds with its usual tasks of cooking or waiting for IO. Eventually owner of the lock
decides to release it, for example after above message from the server it can flush data to the server
and send lock release message or just on its own. So server checks if given area is now free and sends lock
comepltion message to the requester. New owner receives the message, mark inode as own and starts writing there.
Any subsequent writing, if inode is marked as owned, does not end up with additional lock message.
So far looks doable, but I only completed what is called 'first' above :)
If there will be no major problems with other project, I plan to complete this part quickly and move furward.
/devel/fs :: Link / Comments ()
|