lkml.org 
[lkml]   [2003]   [Mar]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] (1/8) Eliminate brlock in psnap
    On Tue, 11 Mar 2003, Stephen Hemminger wrote:

    > void unregister_snap_client(struct datalink_proto *proto)
    > {
    > - br_write_lock_bh(BR_NETPROTO_LOCK);
    > + static RCU_HEAD(snap_rcu);
    >
    > - list_del(&proto->node);
    > - kfree(proto);
    > + spin_lock_bh(&snap_lock);
    > + list_del_rcu(&proto->node);
    > + spin_unlock_bh(&snap_lock);
    >
    > - br_write_unlock_bh(BR_NETPROTO_LOCK);
    > + call_rcu(&snap_rcu, (void (*)(void *)) kfree, proto);
    > }

    Do we need the spin_lock_bh around the list_del_rcu? But also How
    about. This way we don't change the previous characteristic of block till
    done unregistering

    struct datalink_proto {
    ...
    struct completion registration;
    };

    void __unregister_snap_client(void *__proto)
    {
    struct datalink_proto *proto = __proto;
    complete(&proto->registration);
    }

    unregister_snap_client(struct datalink_proto *proto)
    {
    list_del_rcu(&proto->node);
    call_rcu(&snap_rcu, __unregister_snap_client, proto);
    wait_for_completion(&proto->registration);
    kfree(proto);
    }
    -
    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: 2005-03-22 13:33    [W:0.021 / U:29.412 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site