From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:42996) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1REZpb-0002uz-0A for qemu-devel@nongnu.org; Fri, 14 Oct 2011 00:57:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1REZpZ-000068-J8 for qemu-devel@nongnu.org; Fri, 14 Oct 2011 00:57:14 -0400 Received: from e2.ny.us.ibm.com ([32.97.182.142]:45801) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1REZpZ-0008Uo-Gc for qemu-devel@nongnu.org; Fri, 14 Oct 2011 00:57:13 -0400 Received: from /spool/local by us.ibm.com with XMail ESMTP for from ; Fri, 14 Oct 2011 00:56:50 -0400 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p9E4ulrK225478 for ; Fri, 14 Oct 2011 00:56:47 -0400 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p9E4ukSq015408 for ; Thu, 13 Oct 2011 22:56:46 -0600 From: "Aneesh Kumar K.V" In-Reply-To: <1318538102-6982-2-git-send-email-harsh@linux.vnet.ibm.com> References: <1318538102-6982-1-git-send-email-harsh@linux.vnet.ibm.com> <1318538102-6982-2-git-send-email-harsh@linux.vnet.ibm.com> Date: Fri, 14 Oct 2011 10:26:35 +0530 Message-ID: <87ehygrx18.fsf@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] [PATCH v2 2/2] Replace rwlocks with RCU variants of interfaces. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Harsh Prateek Bora , qemu-devel@nongnu.org Cc: pbonzini@redhat.com, jan.kiszka@web.de On Fri, 14 Oct 2011 02:05:02 +0530, Harsh Prateek Bora wrote: > Use QLIST_INSERT_HEAD_RCU and rcu_read_lock/unlock instead of rwlocks. > Use v9fs_synth_mutex as a write-only mutex to handle concurrent writers. > > Signed-off-by: Harsh Prateek Bora > --- > hw/9pfs/virtio-9p-synth.c | 26 ++++++++++++-------------- > 1 files changed, 12 insertions(+), 14 deletions(-) > > diff --git a/hw/9pfs/virtio-9p-synth.c b/hw/9pfs/virtio-9p-synth.c > index cbf74e4..567611e 100644 > --- a/hw/9pfs/virtio-9p-synth.c > +++ b/hw/9pfs/virtio-9p-synth.c > @@ -30,8 +30,7 @@ V9fsSynthNode v9fs_synth_root = { > .attr = &v9fs_synth_root.actual_attr, > }; > > -/*FIXME!! should be converted to qemu_rwlock_t */ > -static pthread_rwlock_t v9fs_synth_mutex; > +static QemuMutex v9fs_synth_mutex; > static int v9fs_synth_node_count; > /* set to 1 when the synth fs is ready */ > static int v9fs_synth_fs; > @@ -79,7 +78,7 @@ int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode, > if (!parent) { > parent = &v9fs_synth_root; > } > - pthread_rwlock_wrlock(&v9fs_synth_mutex); > + qemu_mutex_lock(&v9fs_synth_mutex); > QLIST_FOREACH(tmp, &parent->child, sibling) { > if (!strcmp(tmp->name, name)) { > ret = EEXIST; > @@ -95,7 +94,7 @@ int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode, > *result = node; > ret = 0; > err_out: > - pthread_rwlock_unlock(&v9fs_synth_mutex); > + qemu_mutex_unlock(&v9fs_synth_mutex); > return ret; We sould be using QLIST_INSERT_HEAD_RCU even in v9fs_add_dir_node > } > > @@ -116,7 +115,7 @@ int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode, > parent = &v9fs_synth_root; > } > -aneesh