/dev/sdN be a partition on a ssd disk.
Is there a simple way to treat
/dev/sdN as a
&mut [u8] in Rust?
In particular, I would like to be able to read/write to [start, end) in O(end - start) + O(1) time? The O(1) for
seek, and the O(end - start) for the actual data read/write.
I've had a good experience with the memmap2 crate. But note that UB occurs if the file is modified while being mapped, since the compiler expects to have exclusive access to an
Isn't this insta-UB because the kernel essentially has a "mutable reference" to the partition already?
Ah, I've just found a feature of memmap2 that might be useful for this case: MmapRaw, which lets you access a file as a
*mut u8 (convertible to a
*mut [u8]). To access it safely, you can use
write_volatile, although data races can still occur if another thread or program writes to the same location.