From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51648) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIldG-0000Mi-Pa for qemu-devel@nongnu.org; Tue, 03 Feb 2015 17:07:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YIldD-0001cC-Qv for qemu-devel@nongnu.org; Tue, 03 Feb 2015 17:07:42 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:56106) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIldD-0001b1-Lo for qemu-devel@nongnu.org; Tue, 03 Feb 2015 17:07:39 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id DEDE521150 for ; Tue, 3 Feb 2015 17:07:37 -0500 (EST) From: "Emilio G. Cota" Date: Tue, 3 Feb 2015 17:08:16 -0500 Message-Id: <1423001299-11761-1-git-send-email-cota@braap.org> Subject: [Qemu-devel] [PATCH 0/3] rcu: add option to use upstream liburcu List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: "Emilio G. Cota" , qemu-devel@nongnu.org Hi Paolo + all, First off, thanks for your ongoing RCU work, which I'm closely following. As you stated in the initial RCU patch (7911747b), the intent is to keep the same API as liburcu's. I checked whether this was the case and found a couple of issues that I'm addressing in the appended series. * The first two patches bring back the RCU API to exactly match that of liburcu. * The third patch adds a configure flag to choose from either liburcu or QEMU's RCU. Apart from this, I wonder what to do about other valuable bits in liburcu, particularly in liburcu-cds, which I'm using currently off-tree. I see three ways of eventually doing this: a) Add Windows support in liburcu, thereby eliminating the de facto fork in QEMU. b) Bring (fork) liburcu-cds to QEMU, just like liburcu-mb was. c) Add a compile-time flag (say CONFIG_LIBURCU_CDS), and then only use data structures from liburcu-cds where appropriate, falling back to traditional locked structures when !CONFIG_LIBURCU_CDS. Currently I'm using c) because I cannot do either a) and b)--I don't know anything about Windows and have no need for it. Would c) be acceptable for upstream, provided the gains (say in scalability/memory footprint) are significant? Thanks, Emilio