Network Block Device
@PACKAGE_VERSION@
Main Page
Related Pages
Data Structures
Files
File List
Globals
nbd.h
Go to the documentation of this file.
1
/*
2
* 1999 Copyright (C) Pavel Machek, pavel@ucw.cz. This code is GPL.
3
* 1999/11/04 Copyright (C) 1999 VMware, Inc. (Regis "HPReg" Duchesne)
4
* Made nbd_end_request() use the io_request_lock
5
* 2001 Copyright (C) Steven Whitehouse
6
* New nbd_end_request() for compatibility with new linux block
7
* layer code.
8
* 2003/06/24 Louis D. Langholtz <ldl@aros.net>
9
* Removed unneeded blksize_bits field from nbd_device struct.
10
* Cleanup PARANOIA usage & code.
11
* 2004/02/19 Paul Clements
12
* Removed PARANOIA, plus various cleanup and comments
13
*/
14
15
#ifndef LINUX_NBD_H
16
#define LINUX_NBD_H
17
18
//#include <linux/types.h>
19
20
#define NBD_SET_SOCK _IO( 0xab, 0 )
21
#define NBD_SET_BLKSIZE _IO( 0xab, 1 )
22
#define NBD_SET_SIZE _IO( 0xab, 2 )
23
#define NBD_DO_IT _IO( 0xab, 3 )
24
#define NBD_CLEAR_SOCK _IO( 0xab, 4 )
25
#define NBD_CLEAR_QUE _IO( 0xab, 5 )
26
#define NBD_PRINT_DEBUG _IO( 0xab, 6 )
27
#define NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 )
28
#define NBD_DISCONNECT _IO( 0xab, 8 )
29
#define NBD_SET_TIMEOUT _IO( 0xab, 9 )
30
#define NBD_SET_FLAGS _IO( 0xab, 10 )
31
32
enum
{
33
NBD_CMD_READ
= 0,
34
NBD_CMD_WRITE
= 1,
35
NBD_CMD_DISC
= 2,
36
NBD_CMD_FLUSH
= 3,
37
NBD_CMD_TRIM
= 4
38
};
39
40
#define NBD_CMD_MASK_COMMAND 0x0000ffff
41
#define NBD_CMD_FLAG_FUA (1<<16)
42
43
/* values for flags field */
44
#define NBD_FLAG_HAS_FLAGS (1 << 0)
/* Flags are there */
45
#define NBD_FLAG_READ_ONLY (1 << 1)
/* Device is read-only */
46
#define NBD_FLAG_SEND_FLUSH (1 << 2)
/* Send FLUSH */
47
#define NBD_FLAG_SEND_FUA (1 << 3)
/* Send FUA (Force Unit Access) */
48
#define NBD_FLAG_ROTATIONAL (1 << 4)
/* Use elevator algorithm - rotational media */
49
#define NBD_FLAG_SEND_TRIM (1 << 5)
/* Send TRIM (discard) */
50
51
#define nbd_cmd(req) ((req)->cmd[0])
52
53
/* userspace doesn't need the nbd_device structure */
54
55
/* These are sent over the network in the request/reply magic fields */
56
57
#define NBD_REQUEST_MAGIC 0x25609513
58
#define NBD_REPLY_MAGIC 0x67446698
59
/* Do *not* use magics: 0x12560953 0x96744668. */
60
61
/*
62
* This is the packet used for communication between client and
63
* server. All data are in network byte order.
64
*/
65
struct
nbd_request
{
66
__be32
magic
;
67
__be32
type
;
/* == READ || == WRITE */
68
char
handle
[8];
69
__be64
from
;
70
__be32
len
;
71
}
__attribute__
((packed));
72
73
/*
74
* This is the reply packet that nbd-server sends back to the client after
75
* it has completed an I/O request (or an error occurs).
76
*/
77
struct
nbd_reply
{
78
__be32
magic
;
79
__be32
error
;
/* 0 = ok, else error */
80
char
handle
[8];
/* handle you got from request */
81
};
82
#endif
nbd_request::type
__be32 type
Definition:
nbd.h:67
NBD_CMD_FLUSH
Definition:
nbd.h:36
NBD_CMD_READ
Definition:
nbd.h:33
nbd_reply
Definition:
nbd.h:77
__be32
#define __be32
Definition:
cliserv.h:39
NBD_CMD_WRITE
Definition:
nbd.h:34
nbd_reply::error
__be32 error
Definition:
nbd.h:79
nbd_request
Definition:
nbd.h:65
NBD_CMD_DISC
Definition:
nbd.h:35
__attribute__
struct nbd_reply __attribute__
__be64
#define __be64
Definition:
cliserv.h:40
nbd_request::len
__be32 len
Definition:
nbd.h:70
nbd_request::from
__be64 from
Definition:
nbd.h:69
nbd_reply::magic
__be32 magic
Definition:
nbd.h:78
nbd_request::handle
char handle[8]
Definition:
nbd.h:68
NBD_CMD_TRIM
Definition:
nbd.h:37
nbd_request::magic
__be32 magic
Definition:
nbd.h:66
Generated by
1.8.11