lkml.org 
[lkml]   [2006]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/2] srcu: RCU variant permitting read-side blocking
    On Tue, Jun 27, 2006 at 11:59:45AM -0700, Paul E. McKenney wrote:
    > On Wed, Jun 28, 2006 at 01:13:58AM +0400, Oleg Nesterov wrote:
    > > "Paul E. McKenney" wrote:
    > > > + idx = sp->completed & 0x1;
    > > > + sp->completed++;
    > >
    > > But srcu_read_lock()'s path and rcu_dereference() doesn't have rmb(),
    > > and the reader can block, so I can't understand how this all works.
    > >
    > > Suppose ->completed == 0,
    > >
    > > WRITER: READER:
    > >
    > > old = global_ptr;
    > > rcu_assign_pointer(global_ptr, new);
    > >
    > > synchronize_srcu:
    > >
    > > locks mutex, does mb,
    > > ->completed++;
    > >
    > > srcu_read_lock();
    > > // reads ->completed == 1
    > > // does .c[1]++
    > > ptr = rcu_dereference(global_ptr)
    > > // reads the *OLD* value,
    > > // because we don't have rmb()
    >
    > Hmmm... I thought I was handling this case, but my rationale as to
    > how is looking a bit flimsy at the moment. ;-) I will look at this
    > more carefully. If you are correct, one fix is to replace the prior mb
    > with synchronize_sched(). Do you agree that this would fix the problem?

    Never mind -- this fix would have no effect. Guess I should engage
    my brain before sending email. :-/

    First to review my reasoning, and then to provide either the explanation
    should my reasoning prove true or a fix otherwise...

    Thanx, Paul
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-06-27 21:21    [W:0.022 / U:180.968 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site