0

I'm writing a device-mapper which has to edit incoming writes, for example: Incoming bio request contains a biovec with a page full of 0s, and I want to change it to all 1s.

I tried using bvec_kmap_local() to get the page address, and then I can read the data and if needed adjust it using memcpy or similar. Initial tests seemed to work, but if I execute things like mkfs on the created dm, I get a lot of segmentation faults. I narrowed down the problem that this only happens if I actually write something to the mapped page. However, I see no reason why it should cause this fault as I (after checking probably 100 times) don't access invalid memory. I'm wondering if my method of editing the write is actually correct?

Thanks! I can provide way more information if needed

Jasper
  • 302
  • 3
  • 11

1 Answers1

0

So apparently you're not supposed to edit the pages of a bio request, since write submitters (like file systems) expect their data buffers not to be modified. Instead, you should create a new one with the page you want it to be, and submit it.

Jasper
  • 302
  • 3
  • 11