Zbr's days.
June
Sun Mon Tue Wed Thu Fri Sat
         
26
2007
Months
Jun

About :: TODO :: Blog :: RSS :: Old blog :: Projects :: GIT :: Gallery :: Notes

Tue, 26 Jun 2007

First results in distributed storage development.


Pretty trivial: I've created a device mapper target which sends data pages over the net. It can be configured to work with any kind of network media (including various sockets). Well, it is similar to network block device, but does not require special process. BIOs remapped in distributed storage target operates with pages, so with appropriate jumbo frame setup there should be no copies at all (code uses ->sendpage()).
Right now code only sends data and does not receive it at all, so appropriate protocol should be designed.
There is also open question about how BIOs/pages should be remapped.
Device mapper supports three types (which are not documented actually):

  • DM_MAPIO_SUBMITTED - this means that target code will process BIO by itself - either put it and thus call end_io() callbacks, or submit to another layers.
  • DM_MAPIO_REMAPPED - this must be returned when target remapped all fields in place and will not work with given block IO request anymore, so generic code can call generic_make_request(), process that request further and eventually put BIO.
  • DM_MAPIO_REQUEUE - supposed to be used when BIO should be requeued at end_io() time. It is used only in multiple path target.
There will be a map of the pages for local and remote nodes, according to appropriate redundancy self-healing algorithm, so local BIOs will be moved directly to the next layer via generic_make_request(), and BIOs/pages for remote nodes will be processed accordingly. In both cases DM_MAPIO_SUBMITTED path will be used (like now).
There might be a problem, when the same BIO will contain pages for local and remote node, in that case BIO vector will be changed to only contain pages for local node.

Another problem I see is to how to dispatch reading and writing requests withouth locking the channel, so that during single write requests there would be possible to read another ones.

Thinking...

/devel/dst :: Link / Comments (0)

Please solve this captcha to be allowed to post (need to reload in a minute): 44 - 72

Comments are closed for this story.