[lkml]   [2010]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [patch 0/6] rcu head debugobjects
    On Mon, Mar 29, 2010 at 09:39:33AM -0400, Mathieu Desnoyers wrote:
    > Hi Paul,
    > Thinking about the rcu head init topic, we might be able to drop the
    > init_rcu_head() initializer. The idea is the following:
    > - We need init_rcu_head_on_stack()/destroy_rcu_head_on_stack().
    > - call_rcu() populates the rcu_head and normally does not care about it being
    > pre-initialized.
    > - The activation fixup can detect if a non-initialized rcu head is being
    > activated and just perform the fixup without complaining.
    > - If we have two call_rcu() in a row in the same GP on the same rcu_head, the
    > activation check will detect it.
    > So either we remove all the init_rcu_head(), as was originally proposed, or we
    > use one that is a no-op on !DEBUG configs and initialize the object with DEBUG
    > configs.
    > That removes the dependency on object_is_static().

    If I understand correctly, this does sound good. Here is what I think
    you are proposing:

    o call_rcu() and friends only complain if handed an rcu_head
    structure that is still queued awaiting a grace period.
    They don't care otherwise.

    o rcu_do_batch() complains unless the rcu_head structure has
    most recently been enqueued by call_rcu() or one if its friends.

    Did I get it right?

    Thanx, Paul

     \ /
      Last update: 2010-03-29 16:55    [W:0.020 / U:7.344 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site