From mboxrd@z Thu Jan 1 00:00:00 1970 From: Murillo Bernardes Subject: Re: Xenstore remove problem - causes bug #473 Date: Fri, 13 Jan 2006 10:28:35 -0200 Message-ID: <200601131028.35362.mfb@br.ibm.com> References: <200601101101.24419.mfb@br.ibm.com> <3ec09f6b750c71903448a12317350d6f@cl.cam.ac.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <3ec09f6b750c71903448a12317350d6f@cl.cam.ac.uk> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Tuesday 10 January 2006 12:19, Keir Fraser wrote: > Perhaps something is watching vif/1 and, when the watch fires, > erroneously causing all vif/1* to get deleted? > I found it! When a change occur on one backend device we call cleanup_devices() for each device in bus. The problem is: the test to see if that device was changed is being done with strncmp(), using the length of the changed node as maximum length to be compared. I think the idea is that any sub-node should be matched also, like: if "backend/1/status" changed we have to call backend_changed to "backend/1" device, and that is ok. But with that code If we delete device "backend/1" all devices matching "backend/1*" are being deleted also. Suggestions on the best/prettier way to handle that? -- Murillo Fernandes Bernardes IBM Linux Technology Center