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>