The aim of the project is to implement and test a loadable Linux block device driver (DD) wrapper which comprises of an underlying block device for actually storing user data in a log-structured way and the relevant metadata.
Except for servicing BIOs coming from its own block device interface, the DD wrapper shall service BIOs from other kernel modules by exposing the following three interfaces: contains(bio *), process_read_bio(bio *) and process_write_bio(bio *). Equally importantly, the DD wrapper shall act as a in-kernel networked device drive(ndb) server, which speaks the common nbd protocol with a ndb client and services its read/write requests.
Requirement: Linux block device driver experience, highly motivated, and defensive coding. Knowing nbd is a plus