diff options
author | erwin <erwin@FreeBSD.org> | 2003-12-29 23:19:45 +0800 |
---|---|---|
committer | erwin <erwin@FreeBSD.org> | 2003-12-29 23:19:45 +0800 |
commit | 39dc72bbabd9a8484e2197ff8ce9c25eb6c45884 (patch) | |
tree | c7b2792acd18d8740cfc78610841c24c6066a81a /net/nbd-server/files | |
parent | 5aa40e4faa4b2d7f5dab97a6ca5e4d413c4616c1 (diff) | |
download | freebsd-ports-graphics-39dc72bbabd9a8484e2197ff8ce9c25eb6c45884.tar.gz freebsd-ports-graphics-39dc72bbabd9a8484e2197ff8ce9c25eb6c45884.tar.zst freebsd-ports-graphics-39dc72bbabd9a8484e2197ff8ce9c25eb6c45884.zip |
Add nbd-server 2.6.0,
This is a server for the linux network block device (nbd). It allows linux to
use a partition or a file over the network as a regular block device.
PR: 60242
Submitted by: Christian Laursen <xi@borderworlds.dk>
Diffstat (limited to 'net/nbd-server/files')
-rw-r--r-- | net/nbd-server/files/nbd.h | 106 | ||||
-rw-r--r-- | net/nbd-server/files/patch-include | 11 |
2 files changed, 117 insertions, 0 deletions
diff --git a/net/nbd-server/files/nbd.h b/net/nbd-server/files/nbd.h new file mode 100644 index 00000000000..bf276f36d2c --- /dev/null +++ b/net/nbd-server/files/nbd.h @@ -0,0 +1,106 @@ +/* + * 1999 Copyright (C) Pavel Machek, pavel@ucw.cz. This code is GPL. + * 1999/11/04 Copyright (C) 1999 VMware, Inc. (Regis "HPReg" Duchesne) + * Made nbd_end_request() use the io_request_lock + * 2001 Copyright (C) Steven Whitehouse + * New nbd_end_request() for compatibility with new linux block + * layer code. + */ + +#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 ) +#define NBD_DISCONNECT _IO( 0xab, 8 ) + +#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) +{ + struct buffer_head *bh; + unsigned nsect; + unsigned long flags; + int uptodate = (req->errors == 0) ? 1 : 0; + +#ifdef PARANOIA + requests_out++; +#endif + spin_lock_irqsave(&io_request_lock, flags); + while((bh = req->bh) != NULL) { + nsect = bh->b_size >> 9; + blk_finished_io(nsect); + req->bh = bh->b_reqnext; + bh->b_reqnext = NULL; + bh->b_end_io(bh, uptodate); + } + blkdev_release_request(req); + spin_unlock_irqrestore(&io_request_lock, flags); +} + +#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 + struct socket * sock; + struct file * file; /* If == NULL, device is not ready, yet */ + int magic; /* FIXME: not if debugging is off */ + spinlock_t queue_lock; + struct list_head queue_head; /* Requests are added here... */ + struct semaphore tx_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 diff --git a/net/nbd-server/files/patch-include b/net/nbd-server/files/patch-include new file mode 100644 index 00000000000..90e84a80acc --- /dev/null +++ b/net/nbd-server/files/patch-include @@ -0,0 +1,11 @@ +diff -urN nbd-2.6.orig/nbd-server.c nbd-2.6/nbd-server.c +--- nbd-2.6.orig/nbd-server.c Thu Oct 16 15:08:17 2003 ++++ nbd-server.c Sun Dec 14 23:48:10 2003 +@@ -53,6 +53,7 @@ + #include <sys/stat.h> + #include <sys/wait.h> /* wait */ + #include <sys/ioctl.h> ++#include <sys/param.h> + #include <sys/mount.h> /* For BLKGETSIZE */ + #include <signal.h> /* sigaction */ + #include <netinet/tcp.h> |