From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751030AbdASHpb (ORCPT ); Thu, 19 Jan 2017 02:45:31 -0500 Received: from mx2.suse.de ([195.135.220.15]:45230 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750938AbdASHpa (ORCPT ); Thu, 19 Jan 2017 02:45:30 -0500 Subject: Re: [PATCH v2 3/3] xen: optimize xenbus driver for multiple concurrent xenstore accesses To: Boris Ostrovsky , linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org References: <20170116141533.8946-1-jgross@suse.com> <20170116141533.8946-4-jgross@suse.com> From: Juergen Gross Message-ID: <78661c52-dd9e-0030-fe37-eb31c4e42fbb@suse.com> Date: Thu, 19 Jan 2017 08:24:29 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 18/01/17 21:14, Boris Ostrovsky wrote: > On 01/16/2017 09:15 AM, Juergen Gross wrote: >> + >> +static uint32_t xs_request_enter(struct xb_req_data *req) >> +{ >> + uint32_t rq_id; >> + >> + req->type = req->msg.type; >> + >> + spin_lock(&xs_state_lock); >> + for (;;) { >> + if (req->msg.tx_id != 0) >> + break; >> + if (xs_suspend_active) { >> + spin_unlock(&xs_state_lock); >> + wait_event(xs_state_enter_wq, xs_suspend_active == 0); >> + spin_lock(&xs_state_lock); >> + continue; >> + } >> + if (req->type == XS_TRANSACTION_START) >> + xs_state_users++; >> + break; >> + } >> + xs_state_users++; >> + rq_id = xs_request_id++; >> + spin_unlock(&xs_state_lock); >> + >> + return rq_id; >> +} > > I should have noticed this last time but I've been looking at this code > again and I don't think I understand why you are incrementing count for > XS_TRANSACTION_START inside the loop. > > In fact, why not just 'while(xs_suspend_active) {}' loop? That's a valid question. I'll change it. The reason to have the larger loop body isn't existing any longer. Juergen