From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Zeffertt Subject: [PATCH 7/24] [xen-unstable.hg] don't hard code xenstore/console domid when creating evtchns for new domU Date: Mon, 23 Mar 2009 15:20:51 +0000 Message-ID: <49C7A8D3.8010602@eu.citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020205050307050405020309" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------020205050307050405020309 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit --------------020205050307050405020309 Content-Type: text/plain; name="xend_var_run_domid" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xend_var_run_domid" This patch implements a way to determine in which domains the console and xenstore daemons reside. If each of the files /var/run/{console,xenstore}.did contains an integer, this integer is interpreted as the domain id for that daemon. The default or fallback is domid=0, of course. Here, xend is modified to use this mechanism for the allocated unbound ports. This patch also make XenDomainInfo use the resulting domids when creating the xenstore and console channels for a new or resumed domain. TODO: The patch xend_rename_xenstore_domain moves read_domid to a more global location. If that patch is kept, this should just create a global function directly. A previous version of this patch was sent to xen-devel. See http://lists.xensource.com/archives/html/xen-devel/2008-07/msg00610.html Signed-off-by: Diego Ongaro Signed-off-by: Alex Zeffertt --- diff -r 277248efe8ae tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Aug 01 16:50:31 2008 +0100 +++ b/tools/python/xen/xend/XendDomainInfo.py Fri Aug 01 16:50:33 2008 +0100 @@ -2501,17 +2501,26 @@ def _createChannels(self): """Create the channels to the domain. """ - self.store_port = self._createChannel() - self.console_port = self._createChannel() + def read_domid(service): + try: + f = open("/var/run/%s.did" % service) + try: + return int(f.read()) + finally: + f.close() + except (IOError, ValueError): + return 0 # assume domain 0 is providing service + self.store_port = self._createChannel(read_domid("xenstore")) + self.console_port = self._createChannel(read_domid("console")) - def _createChannel(self): + def _createChannel(self, remote_dom): """Create an event channel to the domain. """ try: if self.domid != None: return xc.evtchn_alloc_unbound(domid = self.domid, - remote_dom = 0) + remote_dom = remote_dom) except: log.exception("Exception in alloc_unbound(%s)", str(self.domid)) raise --------------020205050307050405020309 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------020205050307050405020309--