Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Mar 2010 07:34:24 -0700
From:      Matthew Jacob <mj@feral.com>
To:        freebsd-scsi@freebsd.org
Subject:   Re: How is supposed to be protected the units list?
Message-ID:  <4BB20BF0.3090605@feral.com>
In-Reply-To: <3bbf2fe11003300725vdb1e4ddrf112778ca2bbbc20@mail.gmail.com>
References:  <3bbf2fe11002281655i61a5f0a0if3f381ad0c4a1ef8@mail.gmail.com>	<3bbf2fe11003031547kd5f7314t3d83b2bde06c1c2f@mail.gmail.com>	<4B8EF990.5030407@feral.com>	<3bbf2fe11003031607wa3727b5ke89bc2a909d4d6a6@mail.gmail.com>	<4B901419.8060800@feral.com>	<3bbf2fe11003041737p30690522ya81e1b8f4bd6bbf9@mail.gmail.com>	<3bbf2fe11003120601y3c403a1ct50f9fc6c1f0903bf@mail.gmail.com>	<4B9A91DA.7030107@FreeBSD.org>	<3bbf2fe11003200523t60895bfv1fa73d04e58a7838@mail.gmail.com>	<4BA5C746.7060203@FreeBSD.org> <3bbf2fe11003300725vdb1e4ddrf112778ca2bbbc20@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

I was distracted yesterday so didn't finish my testing.

There are still lots of issues that can occur. I'm still forming some 
thoughts on this, but part of the problem is that there are things going 
on with a periph that make this difficult. Pieces of it can change or be 
changed- even under a lock- but the code surrounding the lock isn't 
aware that it can change *between* the lock. For example, I think that 
cam_periph alloc can have two different arrivals of something which 
could be for the same periph can end up with two different periph 
structures on the list with different unit numbers that point to the 
same bus. It doesn't matter that there were locks to provide some 
stability because the locks were dropped in between.

> The lock recursion is going to happen because of the necessary
> refcount acquisition as Matt pointed out?
> Or there is another recursion?
> In the former case, the global lock will help because you may just
> acquire it, refcount the periph, cache them and run lockless.
> You can't do this with xpt_lock_bus because of the recursion in
> cam_periph_acquire.
>
> So we want to live this unprotected and just live with this bug?
>
> Attilio
>
>
>    




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BB20BF0.3090605>