From 39dc72bbabd9a8484e2197ff8ce9c25eb6c45884 Mon Sep 17 00:00:00 2001 From: erwin Date: Mon, 29 Dec 2003 15:19:45 +0000 Subject: 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 --- net/Makefile | 1 + net/nbd-server/Makefile | 27 ++++++++++ net/nbd-server/distinfo | 1 + net/nbd-server/files/nbd.h | 106 +++++++++++++++++++++++++++++++++++++ net/nbd-server/files/patch-include | 11 ++++ net/nbd-server/pkg-descr | 7 +++ net/nbd-server/pkg-plist | 1 + 7 files changed, 154 insertions(+) create mode 100644 net/nbd-server/Makefile create mode 100644 net/nbd-server/distinfo create mode 100644 net/nbd-server/files/nbd.h create mode 100644 net/nbd-server/files/patch-include create mode 100644 net/nbd-server/pkg-descr create mode 100644 net/nbd-server/pkg-plist (limited to 'net') diff --git a/net/Makefile b/net/Makefile index 2a6250d..86cf048 100644 --- a/net/Makefile +++ b/net/Makefile @@ -359,6 +359,7 @@ SUBDIR += napshare SUBDIR += nast SUBDIR += nat + SUBDIR += nbd-server SUBDIR += nbtscan SUBDIR += nc SUBDIR += nc6 diff --git a/net/nbd-server/Makefile b/net/nbd-server/Makefile new file mode 100644 index 0000000..a42eb4c9 --- /dev/null +++ b/net/nbd-server/Makefile @@ -0,0 +1,27 @@ +# New ports collection makefile for: nbd-server +# Date created: 14 december 2003 +# Whom: Christian Laursen +# +# $FreeBSD$ +# + +PORTNAME= nbd-server +PORTVERSION= 2.6.0 +CATEGORIES= net +MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} +MASTER_SITE_SUBDIR= nbd +DISTNAME= nbd-${PORTVERSION} + +MAINTAINER= xi@borderworlds.dk +COMMENT= A server for the linux network block device (nbd) + +WRKSRC= ${WRKDIR}/nbd-2.6 + +HAS_CONFIGURE= yes +CONFIGURE_ARGS+= --prefix=${PREFIX} +USE_GMAKE= yes + +post-extract: + ${CP} ${FILESDIR}/nbd.h ${WRKSRC} + +.include diff --git a/net/nbd-server/distinfo b/net/nbd-server/distinfo new file mode 100644 index 0000000..6d4391b --- /dev/null +++ b/net/nbd-server/distinfo @@ -0,0 +1 @@ +MD5 (nbd-2.6.0.tar.gz) = 97ee3120f321628b86f5c0fe77f89255 diff --git a/net/nbd-server/files/nbd.h b/net/nbd-server/files/nbd.h new file mode 100644 index 0000000..bf276f3 --- /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 +#include + +#define LOCAL_END_REQUEST + +#include + +#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 0000000..90e84a8 --- /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 + #include /* wait */ + #include ++#include + #include /* For BLKGETSIZE */ + #include /* sigaction */ + #include diff --git a/net/nbd-server/pkg-descr b/net/nbd-server/pkg-descr new file mode 100644 index 0000000..2c38a7f --- /dev/null +++ b/net/nbd-server/pkg-descr @@ -0,0 +1,7 @@ +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. + +WWW: http://nbd.sourceforge.net/ + +- Christian +xi@borderworlds.dk diff --git a/net/nbd-server/pkg-plist b/net/nbd-server/pkg-plist new file mode 100644 index 0000000..aebf965 --- /dev/null +++ b/net/nbd-server/pkg-plist @@ -0,0 +1 @@ +bin/nbd-server -- cgit v1.1