From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aurelien Chartier Subject: Re: [PATCH V3 2/2] xenbus: delay xenbus frontend resume is xenstored is not running Date: Tue, 14 May 2013 14:54:13 +0100 Message-ID: <51924205.70207@citrix.com> References: <1368450793-10030-1-git-send-email-aurelien.chartier@citrix.com> <1368450793-10030-3-git-send-email-aurelien.chartier@citrix.com> <51920D4E.9060906@citrix.com> <51923678.4060207@citrix.com> <51923E64.40903@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <51923E64.40903@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: David Vrabel Cc: "konrad.wilk@oracle.com" , "xen-devel@lists.xensource.com" , Ian Campbell , "JBeulich@suse.com" , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org On 14/05/13 14:38, David Vrabel wrote: > >>>> + if (xen_store_domain == XS_LOCAL) { >>>> + struct xenbus_device *xdev = to_xenbus_device(dev); >>>> + >>>> + INIT_WORK(&xdev->work, xenbus_frontend_delayed_resume); >>>> + schedule_work(&xdev->work); >>> How does this ensure xenstored is running when the work is scheduled? >>> Will it end up blocking on a system workqueue until xenstored is >>> running? That would be bad. >> Yes, that will be blocked until xenstored process has been resumed, >> since it is the current behavior. However, as the process resume is now >> happening in parallel, it will only stay blocked for a very short period >> of time. > This may cause deadlocks. > > It used to be that a work item could block the execution of other work > on that workqueue by sleeping or not completing, but workqueues have > changed quite a bit since I last looked at them detail so this might not > be the case any more. > > As resuming N devices queues N work items this can cause N worker > threads to block. Is it guaranteed that the kernel can continue to > create more workers to handle any work items required before xenstored > can start? > > The safe and obviously correct method would be to create a dedicated > workqueue for this resume work. Ok, I get your point. I used a dedicated workqueue in my previous patch but switched to use schedule_work, since I thought it was not worth having a dedicated one. I'll switch back to that in the v4. Thanks, Aurelien