[Drbd-dev] Behaviour of verify: false positives -> true positives

Thomas Schoebel-Theuer thomas.schoebel-theuer at 1und1.de
Wed Oct 1 13:28:02 CEST 2008


> as private_bio is a clone of master_bio,
> it shares its bvec, thus the pages.

Oops, I didn't realize that (and I tested the copy version only briefly 
because I was more interested in the checksumming because of the kernel log 
messages). The implications are clear to me.

IMHO best solution would be the existence of a bio_copy() in addition to 
bio_clone() in bio.h, but even if we would get it into the upstream it would 
not help for elder kernels.

> you need to remember the original pages, and you need to restore them
> before completion of the master bio.

Well, one problem is that the length of bvec could be nearly arbitrary (in 
theory), so preclaiming "enough" space in struct drbd_request is probably no 
good idea. Well, kmalloc() would be possible to keep the allocation dynamic 
without wasting space.

But what about simply generating a completely new bio and copying over all the 
stuff by hand? This would mean to implement some sort of bio_copy() in the 
local code which could then later be lifted upstreams if other people liked 
it too. What do you think is better?

Thanks for feedback,

Thomas


More information about the drbd-dev mailing list