|
|
About
TODO
Blog
RSS
Old blog
Projects
Gallery
Notes
Sat, 11 Aug 2007
Initial implementation of the resync code is ready.
It does not yet completely resyncs, but already fetches data
from remote node according to notsynced blocks bitmap. There is a small
issue with recovery - each block fetching completion can happen
in interrupt context (when data is fetched from local node),
so it is impossible to requeue request there, since generic_make_request()
can sleep, so this work must be postponed to worker thread
and processed requests must be added into backlog queue in the ready
completion callback. After this task is completed, I will release
new version of the distributed storage subsystem with mirroring
support between arbitrary number of nodes.
There is a problem with local storage - when block reading fails for local node,
right now there is no way to repeat the same reading from different node,
so upper layer must repeat it itself (error is retured). Reading failures from remote nodes
are handled correctly. Writing is always performed for all (currently accessible) nodes.
I also want to test how it will scale to thousand of nodes in linear
set for example and mirror of each node to another couple to make things harder.
Likely it will happen tomorrow. Stay tuned.
/devel/dst :: Link / Comments (5)
|