[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Nbd] proposal



On Wed, Sep 14, 2011 at 09:47:55AM +0200, Folkert van Heusden wrote:
> Hi,
> 
> I propose two new commands:
> 
> - NBD_SERVER_INFO
>   which retrieves a textual description of the server it is connected
> to. this then can for example contain information like buffer
> settings, parameters, version of the software used, etc.

That sounds like something that could be done in the negotiation phase,
during the option haggling. I don't think I'd like to see this
afterwards.

> - NBD_ELABORATE_ON_ERROR
>  if a command fails, an error code is returned. afaik this is an errno
> value. sometimes you want to elaborate on this. for example a
> server-device which detected that the datastructures got invalid or so
> me return EINVALID (or whatever) and in response to this command a
> textual description of what is wrong: "datastore corrupt, run fsck"

Yes, there're definite problems with the current error handling. I
didn't realize it at the time when I suggested it, but the absolute
value of errno is very ill defined; POSIX only defines the symbolic
names, nothing more, and on Linux the actual value can even be different
from one architecture to another.

I've been thinking of creating an NBD-specific list of error values, so
that a client can have some more useful information.

Adding textual info could also be an interesting idea, but the only
problem I see with that is that it would entail a change of the
protocol. Currently, an error returns only the nbd_reply data, nothing
more; if we want to add textual data to that, it would require adding a
length field, followed by an amount of textual data to the reply. This
is doable, I suppose, but would change the protocol incompatibly.

-- 
The volume of a pizza of thickness a and radius z can be described by
the following formula:

pi zz a



Reply to: