All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: "Zhang, Yang Z" <yang.z.zhang@intel.com>,
	"Ian.Campbell@citrix.com" <Ian.Campbell@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"JBeulich@suse.com" <JBeulich@suse.com>,
	"david.vrabel@citrix.com" <david.vrabel@citrix.com>,
	"boris.ostrovsky@oracle.com" <boris.ostrovsky@oracle.com>
Subject: RE: [Xen-devel] [PATCH 4/4] xen/xenbus: Avoid synchronous wait on	XenBus stalling shutdown/restart.
Date: Sat, 25 Jan 2014 22:44:21 -0500	[thread overview]
Message-ID: <c9180994-668d-4be2-a67f-12ceeb5e4cf5@email.android.com> (raw)
In-Reply-To: <A9667DDFB95DB7438FA9D7D576C3D87E0A9C6EC5@SHSMSX104.ccr.corp.intel.com>

"Zhang, Yang Z" <yang.z.zhang@intel.com> wrote:
>Konrad Rzeszutek Wilk wrote on 2013-11-09:
>> The 'read_reply' works with 'process_msg' to read of a reply in
>XenBus.
>> 'process_msg' is running from within the 'xenbus' thread. Whenever a
>> message shows up in XenBus it is put on a xs_state.reply_list list
>and
>> 'read_reply' picks it up.
>> 
>> The problem is if the backend domain or the xenstored process is
>killed.
>> In which case 'xenbus' is still awaiting - and 'read_reply' if called
>> - stuck forever waiting for the reply_list to have some contents.
>> 
>> This is normally not a problem - as the backend domain can come back
>> or the xenstored process can be restarted. However if the domain is
>in
>> process of being powered off/restarted/halted - there is no point of
>> waiting on it coming back - as we are effectively being terminated
>and
>> should not impede the progress.
>> 
>
>Hi, Konrad,
>
>Is this patch applied in Linux upstream tree? I didn't find it with
>latest Linux upstream source.
>

No. It needs rework.
>> This patch solves this problem by checking the 'system_state' value
>to
>> see if we are in heading towards death. We also make the wait
>> mechanism a bit more asynchronous.
>> 
>> Fixes-Bug: http://bugs.xenproject.org/xen/bug/8
>> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>> ---
>>  drivers/xen/xenbus/xenbus_xs.c | 24 +++++++++++++++++++++---
>>  1 file changed, 21 insertions(+), 3 deletions(-)
>> diff --git a/drivers/xen/xenbus/xenbus_xs.c
>> b/drivers/xen/xenbus/xenbus_xs.c index b6d5fff..4f22706 100644
>> --- a/drivers/xen/xenbus/xenbus_xs.c
>> +++ b/drivers/xen/xenbus/xenbus_xs.c
>> @@ -148,9 +148,24 @@ static void *read_reply(enum xsd_sockmsg_type
>> *type, unsigned int *len)
>> 
>>  	while (list_empty(&xs_state.reply_list)) {
>>  		spin_unlock(&xs_state.reply_lock);
>> -		/* XXX FIXME: Avoid synchronous wait for response here. */
>> -		wait_event(xs_state.reply_waitq, -			  
>> !list_empty(&xs_state.reply_list));
>> +		wait_event_timeout(xs_state.reply_waitq, +				  
>> !list_empty(&xs_state.reply_list), +				   msecs_to_jiffies(500)); +
>> +		/* +		 * If we are in the process of being shut-down there is +		
>*
>> no point of trying to contact XenBus - it is either +		 * killed
>> (xenstored application) or the other domain +		 * has been killed or
>is
>> unreachable. +		 */ +		switch (system_state) { +		case
>SYSTEM_POWER_OFF:
>> +		case SYSTEM_RESTART: +		case SYSTEM_HALT: +			return
>ERR_PTR(-EIO);
>> +		default: +			break; +		}
>>  		spin_lock(&xs_state.reply_lock);
>>  	}
>> @@ -215,6 +230,9 @@ void *xenbus_dev_request_and_reply(struct
>> xsd_sockmsg *msg)
>> 
>>  	mutex_unlock(&xs_state.request_mutex);
>> +	if (IS_ERR(ret))
>> +		return ret;
>> +
>>  	if ((msg->type == XS_TRANSACTION_END) ||
>>  	    ((req_msg.type == XS_TRANSACTION_START) &&
>>  	     (msg->type == XS_ERROR)))
>
>
>Best regards,
>Yang



  parent reply	other threads:[~2014-01-26  3:44 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-08 17:38 [PATCH] Fixes to Linux v3.13 - bugs.xenproject.org ones. (v1) Konrad Rzeszutek Wilk
2013-11-08 17:38 ` [PATCH 1/4] xen/mcfg: Call PHYSDEVOP_pci_mmcfg_reserved for MCFG areas Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-21 10:37   ` David Vrabel
2013-11-21 10:37   ` David Vrabel
2013-11-08 17:38 ` [PATCH 2/4] xen/manage: Poweroff forcefully if user-space is not yet up Konrad Rzeszutek Wilk
2013-11-20 21:11   ` Boris Ostrovsky
2013-11-20 21:11   ` Boris Ostrovsky
2013-11-21 11:33   ` David Vrabel
2013-11-21 11:33   ` David Vrabel
2013-11-26 16:47     ` Konrad Rzeszutek Wilk
2013-11-26 16:47     ` Konrad Rzeszutek Wilk
2014-04-01 15:43     ` Konrad Rzeszutek Wilk
2014-04-01 15:43     ` Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-08 17:38 ` [PATCH 3/4] xen/manage: Guard against user-space initiated poweroff and XenBus Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-20 21:40   ` Boris Ostrovsky
2013-11-20 21:40   ` Boris Ostrovsky
2013-11-21 11:09   ` David Vrabel
2013-11-21 11:09   ` David Vrabel
2013-11-26 16:45     ` Konrad Rzeszutek Wilk
2013-12-02 11:27       ` David Vrabel
2013-12-02 11:27       ` David Vrabel
2014-03-31 19:09         ` Konrad Rzeszutek Wilk
2014-03-31 19:09         ` Konrad Rzeszutek Wilk
2013-11-26 16:45     ` Konrad Rzeszutek Wilk
2014-04-01 13:18   ` David Vrabel
2014-04-01 13:18   ` David Vrabel
2014-04-01 14:03     ` Konrad Rzeszutek Wilk
2014-04-01 14:03     ` Konrad Rzeszutek Wilk
2013-11-08 17:38 ` [PATCH 4/4] xen/xenbus: Avoid synchronous wait on XenBus stalling shutdown/restart Konrad Rzeszutek Wilk
2013-11-08 17:38 ` Konrad Rzeszutek Wilk
2013-11-21 17:52   ` [Xen-devel] " David Vrabel
2013-11-22  9:30     ` Ian Campbell
2013-11-22  9:30     ` [Xen-devel] " Ian Campbell
2013-11-22  9:45       ` Processed: " xen
2013-11-26 16:50     ` [Xen-devel] " Konrad Rzeszutek Wilk
2013-12-02 11:41       ` David Vrabel
2013-12-02 11:41       ` [Xen-devel] " David Vrabel
2014-03-31 20:33         ` Konrad Rzeszutek Wilk
2014-03-31 20:33         ` [Xen-devel] " Konrad Rzeszutek Wilk
2014-04-01 12:53           ` David Vrabel
2014-04-01 12:53           ` David Vrabel
2013-11-26 16:50     ` Konrad Rzeszutek Wilk
2013-11-21 17:52   ` David Vrabel
2014-01-26  1:13   ` [Xen-devel] " Zhang, Yang Z
2014-01-26  3:44     ` Konrad Rzeszutek Wilk
2014-01-26  3:44     ` Konrad Rzeszutek Wilk [this message]
2014-01-26  1:13   ` Zhang, Yang Z
2014-04-03 11:59 ` [PATCH] Fixes to Linux v3.13 - bugs.xenproject.org ones. (v1) David Vrabel
2014-04-03 11:59   ` David Vrabel
2014-04-03 18:07   ` Konrad Rzeszutek Wilk
2014-04-03 18:07   ` Konrad Rzeszutek Wilk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c9180994-668d-4be2-a67f-12ceeb5e4cf5@email.android.com \
    --to=konrad.wilk@oracle.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=yang.z.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.