Commit daf376a3 authored by Eric Blake's avatar Eric Blake Committed by Jens Axboe

uapi nbd: improve doc links to userspace spec

The uapi <linux/nbd.h> header intentionally documents only the NBD
server features that the kernel module will utilize as a client.  But
while it already had one mention of skipped bits due to userspace
extensions, it did not actually direct the reader to the canonical
source to learn about those extensions.

While touching comments, fix an outdated reference that listed only
READ and WRITE as commands.
Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Link: https://lore.kernel.org/r/20230410180611.1051618-2-eblake@redhat.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent ff53cd52
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
* Cleanup PARANOIA usage & code. * Cleanup PARANOIA usage & code.
* 2004/02/19 Paul Clements * 2004/02/19 Paul Clements
* Removed PARANOIA, plus various cleanup and comments * Removed PARANOIA, plus various cleanup and comments
* 2023 Copyright Red Hat
* Link to userspace extensions.
*/ */
#ifndef _UAPILINUX_NBD_H #ifndef _UAPILINUX_NBD_H
...@@ -30,12 +32,18 @@ ...@@ -30,12 +32,18 @@
#define NBD_SET_TIMEOUT _IO( 0xab, 9 ) #define NBD_SET_TIMEOUT _IO( 0xab, 9 )
#define NBD_SET_FLAGS _IO( 0xab, 10) #define NBD_SET_FLAGS _IO( 0xab, 10)
/*
* See also https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md
* for additional userspace extensions not yet utilized in the kernel module.
*/
enum { enum {
NBD_CMD_READ = 0, NBD_CMD_READ = 0,
NBD_CMD_WRITE = 1, NBD_CMD_WRITE = 1,
NBD_CMD_DISC = 2, NBD_CMD_DISC = 2,
NBD_CMD_FLUSH = 3, NBD_CMD_FLUSH = 3,
NBD_CMD_TRIM = 4 NBD_CMD_TRIM = 4
/* userspace defines additional extension commands */
}; };
/* values for flags field, these are server interaction specific. */ /* values for flags field, these are server interaction specific. */
...@@ -64,14 +72,15 @@ enum { ...@@ -64,14 +72,15 @@ enum {
#define NBD_REQUEST_MAGIC 0x25609513 #define NBD_REQUEST_MAGIC 0x25609513
#define NBD_REPLY_MAGIC 0x67446698 #define NBD_REPLY_MAGIC 0x67446698
/* Do *not* use magics: 0x12560953 0x96744668. */ /* Do *not* use magics: 0x12560953 0x96744668. */
/* magic 0x668e33ef for structured reply not supported by kernel yet */
/* /*
* This is the packet used for communication between client and * This is the packet used for communication between client and
* server. All data are in network byte order. * server. All data are in network byte order.
*/ */
struct nbd_request { struct nbd_request {
__be32 magic; __be32 magic; /* NBD_REQUEST_MAGIC */
__be32 type; /* == READ || == WRITE */ __be32 type; /* See NBD_CMD_* */
char handle[8]; char handle[8];
__be64 from; __be64 from;
__be32 len; __be32 len;
...@@ -82,7 +91,7 @@ struct nbd_request { ...@@ -82,7 +91,7 @@ struct nbd_request {
* it has completed an I/O request (or an error occurs). * it has completed an I/O request (or an error occurs).
*/ */
struct nbd_reply { struct nbd_reply {
__be32 magic; __be32 magic; /* NBD_REPLY_MAGIC */
__be32 error; /* 0 = ok, else error */ __be32 error; /* 0 = ok, else error */
char handle[8]; /* handle you got from request */ char handle[8]; /* handle you got from request */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment