From owner-freebsd-arch@FreeBSD.ORG Thu Mar 19 12:56:51 2009 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA7A3106566C; Thu, 19 Mar 2009 12:56:51 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: from onelab2.iet.unipi.it (onelab2.iet.unipi.it [131.114.9.129]) by mx1.freebsd.org (Postfix) with ESMTP id 8A8398FC12; Thu, 19 Mar 2009 12:56:51 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: by onelab2.iet.unipi.it (Postfix, from userid 275) id E49C6730A4; Thu, 19 Mar 2009 14:01:37 +0100 (CET) Date: Thu, 19 Mar 2009 14:01:37 +0100 From: Luigi Rizzo To: Marius N?nnerich Message-ID: <20090319130137.GB40489@onelab2.iet.unipi.it> References: <20090319081936.GA32750@onelab2.iet.unipi.it> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.3i Cc: fabio@gandalf.sssup.it, geom@freebsd.org, arch@freebsd.org, ivan@freebsd.org Subject: Re: RFC: adding 'proxy' nodes to provider ports (with patch) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Mar 2009 12:56:52 -0000 On Thu, Mar 19, 2009 at 12:41:13PM +0100, Marius N?nnerich wrote: > 2009/3/19 Luigi Rizzo : > > Hi, > > > > Fabio Checconi and I have been thinking on how to implement "proxy" > > geom nodes, i.e. nodes that have exactly 1 provider and 1 consumer > > port, do not do any data transformation, and can be transparently > > inserted or removed on top of a provider port while the tree is > > actively moving data. ... > > The idea is to intercept requests coming on a provider port, pp, and > > redirect them to a geom node acting as a proxy if the port > > is configured in this way: ... > I wonder if it's really necessary to alter the GEOM infrastructure or > if it is possible to do this with what's there already. Just an idea: > Lock g_topology, put g_down and g_up to sleep, alter the consumer and > provider pointers where you need it so the everything is routed > through your proxy class (which isn't special in any way) and restart > g_down and g_up. we'll look into this, thanks. If we can spare the extra fields in the g_provider, the thing is even easier to do. I just don't know how your suggestion interferes with the naming: if I change the pointers, the name of a provider will not be anymore a prefix of the name of the node attached above. But maybe that is not an architectural requirements but just a convenient convention. cheers luigi