witness and modules.
John Baldwin
jhb at freebsd.org
Wed Dec 3 16:47:40 UTC 2014
On Wednesday, December 03, 2014 09:53:20 PM Julian Elischer wrote:
> On 12/3/14, 7:26 PM, Andriy Gapon wrote:
> > On 03/12/2014 04:33, Julian Elischer wrote:
> >> On 12/3/14, 12:24 AM, Warner Losh wrote:
> >>>> On Dec 1, 2014, at 10:08 PM, Julian Elischer <julian at freebsd.org>
> >>>> wrote:
> >>>>
> >>>> On 12/1/14, 11:39 PM, John Baldwin wrote:
> >>>>> On Friday, November 28, 2014 11:08:35 PM Julian Elischer wrote:
> >>>>>> Do we need to compile all modules with witness definitions when
> >>>>>> linking with a kernel compiled with witness?
> >>>>>> This was true at one stage but I remember some work was done to make
> >>>>>> them compatible.
> >>>>>
> >>>>> You should not need this. modules always call functions in the kernel
> >>>>> for
> >>>>> lock operations and this functions are what invoke WITNESS.
> >>>>
> >>>> that's what I thought but empirical evidence disagrees.
> >>>> I'll try some more cases.
> >>>
> >>> I swap back and forth all the time between the two. Kernel modules don’t
> >>> change when you compile them with WITNESS or without.
> >>
> >> not entirely..
> >> hwpmc.ko: U witness_restore
> >> hwpmc.ko: U witness_save
> >> zfs.ko: U witness_restore
> >> zfs.ko: U witness_save
> >
> > Seems like the problem affects modules that use DROP_GIANT / PICKUP_GIANT.
>
> that's a good observation. I'll take a look a that later.
Yes, that isn't really intended to be used publically.
The pmc one is stale as system calls haven't run with Giant in several
releases.
All the ones for g_topology_lock() also seem to be broken-by-designed. There
is no good reason I can think of for g_topology_lock() to assert that Giant
isn't held. I suspect phk@ just wanted to force geom to be locked without
Giant, but I'm not sure that is the best way to achieve that? Poul, is that
correct?
If you fix that you can remove almost all of the DROP_GIANT/PICKUP_GIANT in
the tree. They should really only be in the _sleep() and cv_wait_*()
functions where they are used to give Giant its "special" property of being
dropped while asleep.
--
John Baldwin
More information about the freebsd-current
mailing list