Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Mar 2000 13:29:51 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Julian Elischer <julian@elischer.org>
Cc:        Poul-Henning Kamp <phk@FreeBSD.ORG>, current@FreeBSD.ORG
Subject:   Re: B_WRITE cleanup patch, please test!
Message-ID:  <200003202129.NAA71883@apollo.backplane.com>
References:  <20502.952948995@critter.freebsd.dk> <38CCEF68.41C67EA6@elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
    I think the biggest win in regards to being able to arbitrarily stack
    devices is to NOT attempt to forward struct buf's between devices when
    non-trivial manipulation is required, and instead to make struct buf's
    cheap enough that a device can simply allocate a new one and copy the
    appropriate fields.  Here I am talking about situations where devices
    need callbacks (making forwarding impossible), need to split or combine
    requests, or do other non-trivial things.

    In particular I really hate all the various b_*blkno fields.  b_lblkno,
    b_blkno, and b_pblkno.  It is precisely due to the existance of these
    hacks that arbitrary device stacking is difficult.

    The key to making a struct buf cheap is to provide an I/O path that
    does not require the b_data KVA mapping.  Once we provide this path,
    I think everything else will fall into place quite neatly.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003202129.NAA71883>