aboutsummaryrefslogtreecommitdiff
path: root/pfinet/linux-src/include/linux/nbd.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2000-02-04 03:21:18 +0000
committerRoland McGrath <roland@gnu.org>2000-02-04 03:21:18 +0000
commit8880a73970b23f10c720011cb910c0e0e1e02975 (patch)
treed1ce76577a1ace5312fc0576a93d4d8db1e89323 /pfinet/linux-src/include/linux/nbd.h
parent8399aa4ab7b849da57f4c59039f091526c9e2f98 (diff)
parent9fd51e9b0ad33a89a83fdbbb66bd20d85f7893fb (diff)
downloadhurd-8880a73970b23f10c720011cb910c0e0e1e02975.tar.gz
hurd-8880a73970b23f10c720011cb910c0e0e1e02975.tar.bz2
hurd-8880a73970b23f10c720011cb910c0e0e1e02975.zip
Merge from vendor branch Linux:
Import of Linux 2.2.12 subset (ipv4 stack and related)
Diffstat (limited to 'pfinet/linux-src/include/linux/nbd.h')
-rw-r--r--pfinet/linux-src/include/linux/nbd.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/pfinet/linux-src/include/linux/nbd.h b/pfinet/linux-src/include/linux/nbd.h
new file mode 100644
index 00000000..c2c0431f
--- /dev/null
+++ b/pfinet/linux-src/include/linux/nbd.h
@@ -0,0 +1,85 @@
+#ifndef LINUX_NBD_H
+#define LINUX_NBD_H
+
+#define NBD_SET_SOCK _IO( 0xab, 0 )
+#define NBD_SET_BLKSIZE _IO( 0xab, 1 )
+#define NBD_SET_SIZE _IO( 0xab, 2 )
+#define NBD_DO_IT _IO( 0xab, 3 )
+#define NBD_CLEAR_SOCK _IO( 0xab, 4 )
+#define NBD_CLEAR_QUE _IO( 0xab, 5 )
+#define NBD_PRINT_DEBUG _IO( 0xab, 6 )
+#define NBD_SET_SIZE_BLOCKS _IO( 0xab, 7 )
+
+#ifdef MAJOR_NR
+
+#include <linux/locks.h>
+#include <asm/semaphore.h>
+
+#define LOCAL_END_REQUEST
+
+#include <linux/blk.h>
+
+#ifdef PARANOIA
+extern int requests_in;
+extern int requests_out;
+#endif
+
+static void
+nbd_end_request(struct request *req)
+{
+#ifdef PARANOIA
+ requests_out++;
+#endif
+ if (end_that_request_first( req, !req->errors, "nbd" ))
+ return;
+ end_that_request_last( req );
+}
+
+#define MAX_NBD 128
+
+struct nbd_device {
+ int refcnt;
+ int flags;
+ int harderror; /* Code of hard error */
+#define NBD_READ_ONLY 0x0001
+#define NBD_WRITE_NOCHK 0x0002
+#define NBD_INITIALISED 0x0004
+ struct socket * sock;
+ struct file * file; /* If == NULL, device is not ready, yet */
+ int magic; /* FIXME: not if debugging is off */
+ struct request *head; /* Requests are added here... */
+ struct request *tail;
+ struct semaphore queue_lock;
+};
+#endif
+
+/* This now IS in some kind of include file... */
+
+/* These are send over network in request/reply magic field */
+
+#define NBD_REQUEST_MAGIC 0x25609513
+#define NBD_REPLY_MAGIC 0x67446698
+/* Do *not* use magics: 0x12560953 0x96744668. */
+
+/*
+ * This is packet used for communication between client and
+ * server. All data are in network byte order.
+ */
+struct nbd_request {
+ u32 magic;
+ u32 type; /* == READ || == WRITE */
+ char handle[8];
+ u64 from;
+ u32 len;
+}
+#ifdef __GNUC__
+ __attribute__ ((packed))
+#endif
+;
+
+struct nbd_reply {
+ u32 magic;
+ u32 error; /* 0 = ok, else error */
+ char handle[8]; /* handle you got from request */
+};
+#endif