[dm-devel] [PATCH v2] make dm and dm-crypt forward cgroup context (was: dm-crypt parallelization patches)

Mikulas Patocka mpatocka at redhat.com
Tue Apr 16 19:41:23 UTC 2013



On Tue, 16 Apr 2013, Tejun Heo wrote:

> Hey,
> 
> On Mon, Apr 15, 2013 at 09:02:06AM -0400, Mikulas Patocka wrote:
> > The patch is not bug-prone, because we already must make sure that the 
> > cloned bio has shorter lifetime than the master bio - so the patch doesn't 
> > introduce any new possibilities to make bugs.
> 
> The whole world isn't composed of only your code.  As I said
> repeatedly, you're introducing an API which is misleading and can
> easily cause subtle bugs which are very difficult to reproduce.
> 
> Imagine it being used to tag a metatdata or checksum update bio being
> sent down while processing another bio and used to "clone" the context
> of the original bio.  It'll work most of the time even if the original
> bio gets completed first but it'll break when it gets really unlucky -
> e.g. racing with other operations which can put the base css ref, and
> it'll be hellish to reproduce and everyone would have to pay for your
> silly hack.

That's why the comment at the function says: "it is assumed that the 
lifestime of the new bio is shorter than the lifetime of the original bio. 
If the new bio can outlive the old bio, the caller must increment the 
reference counts." - do you think that it is so bad that someone will use 
the function without reading the comment?

Anyway, the situation that you describe could only happen in dm-bufio or 
dm-kcopyd files, so it's easy to control and increment the reference 
counts there. There are no other places in device mapper where we create 
bios that live longer than original one.

Mikulas




More information about the dm-devel mailing list