|
|
About ::
TODO ::
Blog ::
RSS ::
Old blog ::
Projects ::
GIT ::
Gallery ::
Notes
Thu, 11 Sep 2008
POHMELFS development process.
I completed design (without implementation yet :) of the new
locking (or cache coherency mechanism, it does not really matter)
for the shared objects in the
POHMELFS.
It is somewhat close to the MOSI (even MOESI) cache coherency protocol,
used in modern CPUs, although also differs a bit because of the nature
of the POHMELFS server. It can provide byte-range locking for any object,
but so far I will only implement per-file locking (i.e. the whole file will
be 'locked' or 'owned' when client performs a write, even if another client
could write to the different location in the same object), and if scalability
will not be good enough, it can be extended (not that complex though). Since
all in-kernel filesystems lock the whole inode when performing a write,
this should not be a big problem.
This approach requires to change POHMELFS server's directory cache, but I
never liked existing one, since it looks a bit over engineered.
If things will go smooth, I will complete it tomorrow before flying to the kernel summit
(saturday early morning), since idea is really not very complex as long as I expect
implementation to be.
Meanwhile, DST
got a fix for the incredibly stupid bug I made, even do not want to call this
'bug', it is likely a tricky created blindness by the electrons moving things around in my
monitor. They forced me not to see an obvious place to lock access to, which resulted
in a nasty oopses. Patch is already in the
git tree.
There is another one though: when some SCSI device is being exported and client performs a
write, request has somehow zero req->nr_phys_segments field (which should
be initialized from block IO request), which catches a BUG_ON() in the scsi
code. I'm working on it right now.
/devel/fs :: Link / Comments ()
|