Re: [Nbd] libnbd
- To: Alex Bligh <alex@...872...>
- Cc: nbd-general@lists.sourceforge.net, Wouter Verhelst <w@...112...>
- Subject: Re: [Nbd] libnbd
- From: Goswin von Brederlow <goswin-v-b@...186...>
- Date: Tue, 30 Apr 2013 10:54:53 +0200
- Message-id: <20130430085453.GA31101@...1266...>
- In-reply-to: <2FBED536-A47C-4542-8DAB-A12767B2E283@...872...>
- References: <516FBEB3.3070806@...112...> <20130425121417.GB15210@...1266...> <517926C9.4000804@...112...> <20130425144930.GC15210@...1266...> <51795C39.80103@...112...> <20130429094559.GC6252@...1266...> <517E5942.9030600@...112...> <2FBED536-A47C-4542-8DAB-A12767B2E283@...872...>
On Mon, Apr 29, 2013 at 03:51:49PM +0100, Alex Bligh wrote:
>
> On 29 Apr 2013, at 12:28, Wouter Verhelst wrote:
>
> > In my view, the select loop would:
> > - Read a request header into a struct nbd_request, and parse it (i.e.,
> > call ntoh* on the right variables of the struct that we read the header
> > into)
> > - Figure out if the request is followed by data; if so, read that data
> > from the socket
>
> From past experience writing a server, you might want to ask the
> driver for buffer(s) to put this in rather than allocate them yourself.
> For instance, a driver with an O_DIRECT backend would want to page
> align the buffers.
Totally. And a server that uses splice you want a pipe there and
custom read_data/write_data callbacks. That would be one place where I
would want to change the default protocol handling.
In my suggestion the alloc_request() callback handles creating the
memory for the request. Since not every request is a write a seperate
alloc_request_data() callback would make sense.
MfG
Goswin
Reply to: