| Crates.io | userland-io |
| lib.rs | userland-io |
| version | 0.1.0-alpha.4 |
| created_at | 2020-12-15 13:31:46.553828+00 |
| updated_at | 2020-12-17 00:06:54.413426+00 |
| description | It's like FUSE but for the block layer |
| homepage | |
| repository | https://github.com/akiradeveloper/userland-io |
| max_upload_size | |
| id | 323111 |
| size | 19,906 |
Developing a virtual block device in Linux kernel is a hard task. You must understand not only device-mapper framework but also the subsystems around it. Writing a complicated code in C language will spend a ton of time and the code output is usually hard to maintain. How do I know this? Because I've implemented dm-writeboost.
When I met Rust language, soon I fell in love with the beautiful language and came to think of how it would be nice to write virtual block device in this language. With Rust, concurrent programming is not a difficult task while it is just like hell with C. Moreover, we can make use of sophisticated ecosystem and libraries from Rust community.
fuse-rs is such a framework for filesystem layer but there nothing exists for block layer. That's why I started this project.
The client IO is coming from NBD. The TCP connection is split into read half and write half so reading and writing are executed simultaneously. The NBD requests are interpreted and changed into generic request.
Right half of the figure is generic storage layer. The generic request in passed from the transport in queue. The executor sends it to storage engine asynchonously so all the requests are processed concurrently.
