11 years agoRelease 2.9.23 master
Wouter Verhelst [Fri, 8 Jul 2011 11:13:35 +0000 (13:13 +0200)]
Release 2.9.23

11 years agoUpdate copyright statement -- apparently I forgot this like forever :-)
Wouter Verhelst [Sat, 25 Jun 2011 10:18:00 +0000 (12:18 +0200)]
Update copyright statement -- apparently I forgot this like forever :-)

11 years agoFix typo
Wouter Verhelst [Sat, 25 Jun 2011 08:16:49 +0000 (10:16 +0200)]
Fix typo

11 years agoAdd "temporary" option, and ability to create files.
Alex Bligh [Tue, 31 May 2011 08:47:23 +0000 (09:47 +0100)]
Add "temporary" option, and ability to create files.

This commit:
* Adds a "temporary" option, which causes a unique file to be
  created, which is unliked as soon as it is created (and thus
  will not be present on exit). This is used for creation of
  temporary disks.
* Will create a file, if "filesize" is specified and the file
  is not present or is zero length (useful in conjunction with the

11 years agoRemove unused assignment
Wouter Verhelst [Sun, 12 Jun 2011 10:56:35 +0000 (12:56 +0200)]
Remove unused assignment

11 years agoRemove dead assignment
Wouter Verhelst [Sun, 12 Jun 2011 10:54:19 +0000 (12:54 +0200)]
Remove dead assignment

This used to be part of option handling, but is dead and useless since
we switched option handling to getopt() calls.

11 years agoAdd missing break
Wouter Verhelst [Sun, 12 Jun 2011 10:51:07 +0000 (12:51 +0200)]
Add missing break

11 years agoMake integrity tests respect request ordering.
Alex Bligh [Mon, 6 Jun 2011 20:34:52 +0000 (21:34 +0100)]
Make integrity tests respect request ordering.

Prior to this patch, the integrity test fired reads and writes as
quickly as they could at the server. This included firing overlapping
reads and writes, before the prior read or write was acknowledged.
Under the protocol, the server is permitted to reorder reads and
writes until they are acknowledged. Whilst nbd-server does not
currently reorder reads or writes, this caused a "false failure"
in other servers that do reorder reads and writes. Also, the workload
as sent was unrealistic (in that servers do not normally have
overlapping reads and writes in their queue).

This patch maintains a record of the reads and writes inflight, and
ensures that:

1. If any block X is covered by an inflight write request, then
   no other request covering block X will be sent until a reply
   to such inflight write is received.

2. If any block X is covered by an inflight read or write request,
   then no write request covering block X will be sent until a reply
   to such inflight request is received.

In otherwords, disallow all overlapping inflight requests, except
overlapping inflight reads, which are permitted.

The "-l" option to nbd-tester-client can be used to turn on
looseordering, IE not do the above.

I have tested this on nbd-server (no change as expected) and on
a server which does reorder requests (which now passes the tests).

11 years agonbd-tester-client: analyse bad data using hash function huersistic
Alex Bligh [Sun, 5 Jun 2011 16:57:16 +0000 (17:57 +0100)]
nbd-tester-client: analyse bad data using hash function huersistic

The hash function used by the integrity test was designed specifically
such that with < (2^32) blocks and < (2^32) read/write operations, it
can accurately guess how the bad data returned was generated. This
patch uses this huersistic to provide a guess as to what is wrong.
EG if it prints out a correct block number but a bad sequence number,
it is likely the server is disordering writes or has missed writes.

11 years agonbd-tester-client: ignore SIGPIPE so we pick up and print the error
Alex Bligh [Sun, 5 Jun 2011 15:15:49 +0000 (16:15 +0100)]
nbd-tester-client: ignore SIGPIPE so we pick up and print the error

11 years agoFix a few branch checks
Wouter Verhelst [Thu, 9 Jun 2011 14:16:44 +0000 (16:16 +0200)]
Fix a few branch checks

There were still two errors in the ifs in negotiate() that made 'make
check fail'. It works again now.

11 years agoRemove some more crack
Wouter Verhelst [Thu, 9 Jun 2011 14:08:24 +0000 (16:08 +0200)]
Remove some more crack

- Don't touch values unless they're actually set in the config file
- Remove silly test for port thing. This is broken in so many ways, I'm
  not even going to try explaining it anymore.

11 years agoImplement proper branches
Wouter Verhelst [Thu, 9 Jun 2011 13:56:54 +0000 (15:56 +0200)]
Implement proper branches

Trying to implement differing negotiation based on parameters that just
happen to be there is a bad strategy, as this bug demonstrates.

Instead, add a parameter to the negotiate() function that is a bitmask
telling us which part of the negotiation we would like to see: modern vs
oldstyle, initial phase versus 'the rest'.

This doesn't actually survive 'make check' yet, because of a different
bit of crack that's still in there. Different bug, different commit.

11 years agoUpdate proto.txt
Wouter Verhelst [Tue, 31 May 2011 07:35:07 +0000 (09:35 +0200)]
Update proto.txt

Minor difference: we now allow new-style handshakes on nonstandard
ports, so hrm. That's not part of the standard, really, but oh well.

Also, unignore the doc directory, ignore doc/doxygen-output instead.

11 years agoAllow varying the port for new-style handshakes
Wouter Verhelst [Sun, 29 May 2011 09:55:19 +0000 (11:55 +0200)]
Allow varying the port for new-style handshakes

which is useful for debugging purposes.

11 years agoMore sorting
Wouter Verhelst [Sun, 29 May 2011 09:43:11 +0000 (11:43 +0200)]
More sorting

11 years agoDon't send to syslog from nbd-trdump
Wouter Verhelst [Sun, 29 May 2011 07:56:17 +0000 (09:56 +0200)]
Don't send to syslog from nbd-trdump

- we don't include the necessary headers
- it's less than useful here

11 years agoMakefile changes
Wouter Verhelst [Sun, 29 May 2011 07:08:29 +0000 (09:08 +0200)]
Makefile changes

- Add make-integrityhuge to EXTRA_PROGRAMS (so it doesn't get installed,
  but its source will be part of 'make dist')
- Remove knbd-client, leftover of a failed attempt at building
  nbd-client against klibc.

11 years agoFix .gitignore
Alex Bligh [Sat, 28 May 2011 20:44:17 +0000 (21:44 +0100)]
Fix .gitignore

11 years agoMerge branch 'master' of git://nbd.git.sourceforge.net/gitroot/nbd/nbd
Alex Bligh [Sat, 28 May 2011 20:39:45 +0000 (21:39 +0100)]
Merge branch 'master' of git://nbd.git.sourceforge.net/gitroot/nbd/nbd

11 years agoAdd integrity test for huge writes. Fix speed calc problem.
Alex Bligh [Sat, 28 May 2011 19:18:13 +0000 (20:18 +0100)]
Add integrity test for huge writes. Fix speed calc problem.

This commit

* Fixes a speed calculation on the integrity tests (we were
  assuming total transferred bytes was the size of the disk,
  which it is for throughputtest but is not for the integrity

* Adds a binary blob integrityhuge-test.tr, which contains
  instructions to do huge oversize reads and writes with
  flushes over a 50MB disk. This is added as a binary blob
  so everyone has the same data.

* Adds make-integrityhuge.c - a simple program which will make
  the above binary blob (though as it uses random data it will
  not be the same each time)

* Adds an /integrity_huge test to "make check"

* Modifies integritytest() to use properly buffered I/O so it
  does not deadlock.

* Modifies integritytest() to keep handles in a hash table
  to avoid spurious memory accesses if the server returns
  a duff handle.

11 years agoFix oversize writes to write to correct area of disk
Alex Bligh [Sat, 28 May 2011 18:53:44 +0000 (19:53 +0100)]
Fix oversize writes to write to correct area of disk

Oversize writes were not incrementing the seek location for
writes. This could cause disk corruption.

11 years agoFix handling of oversize writes
Alex Bligh [Sat, 28 May 2011 18:29:20 +0000 (19:29 +0100)]
Fix handling of oversize writes

Oversize writes were attempting to write the whole length of the
write each time, rather than BUFSIZ chunks. This could cause
disk corruption.

11 years agoConsume unwanted data on a write that fails
Alex Bligh [Sat, 28 May 2011 18:18:51 +0000 (19:18 +0100)]
Consume unwanted data on a write that fails

When a write fails, we should consume the unwanted data sent to use. Whilst
currently the server exits (under certain conditions), it does so messily
(attempting to read some incoming data as commands). Instead, throw away
the data for easier debugging.

11 years agoFix typo
Wouter Verhelst [Sat, 28 May 2011 13:37:01 +0000 (15:37 +0200)]
Fix typo

coutesy of Godwin von Brederlow

11 years agoMerge branch 'alex'
Wouter Verhelst [Sat, 28 May 2011 09:02:07 +0000 (11:02 +0200)]
Merge branch 'alex'

11 years agoMove nbd-trdump.8 to nbd-trdump.1, where it belongs.
Wouter Verhelst [Sat, 28 May 2011 08:48:56 +0000 (10:48 +0200)]
Move nbd-trdump.8 to nbd-trdump.1, where it belongs.

11 years agoMerge branch 'alex'
Wouter Verhelst [Sat, 28 May 2011 08:47:21 +0000 (10:47 +0200)]
Merge branch 'alex'

11 years agoDocument function parameters for doxygen
Alex Bligh [Sat, 28 May 2011 08:46:32 +0000 (09:46 +0100)]
Document function parameters for doxygen

11 years agoPrepare for 2.9.22
Wouter Verhelst [Sat, 28 May 2011 08:43:37 +0000 (10:43 +0200)]
Prepare for 2.9.22

which will arrive this weekend (just not yet)

11 years agoActually add the nbd-trdump manpage rather than just infrastructure
Alex Bligh [Sat, 28 May 2011 08:27:18 +0000 (09:27 +0100)]
Actually add the nbd-trdump manpage rather than just infrastructure

11 years agoAdd nbd-trdump manpage
Alex Bligh [Sat, 28 May 2011 08:21:34 +0000 (09:21 +0100)]
Add nbd-trdump manpage

11 years agoOnly send one reply on oversize writes
Alex Bligh [Sat, 28 May 2011 05:21:27 +0000 (06:21 +0100)]
Only send one reply on oversize writes

11 years agoInstall nbd-trdump to .../bin
Wouter Verhelst [Fri, 27 May 2011 23:11:45 +0000 (01:11 +0200)]
Install nbd-trdump to .../bin

11 years agoImplement basic --help option
Wouter Verhelst [Fri, 27 May 2011 23:11:25 +0000 (01:11 +0200)]
Implement basic --help option

11 years agoClear up mainloop()
Alex Bligh [Fri, 27 May 2011 18:02:42 +0000 (19:02 +0100)]
Clear up mainloop()

* Replace if/else/... by a switch()
* Fix debug line that did not support new commands
* Only check len is oversized when len is used
* Check for disconnect after check for magic number, not before

11 years agoFix INPUT
Wouter Verhelst [Fri, 27 May 2011 16:37:43 +0000 (18:37 +0200)]

Since this was moved to a subdirectory, suddenly doxygen didn't work
anymore as it should've.

11 years agoDistribute maketr, too
Wouter Verhelst [Fri, 27 May 2011 16:33:31 +0000 (18:33 +0200)]
Distribute maketr, too

11 years agoFix 'make distcheck'
Wouter Verhelst [Fri, 27 May 2011 15:57:05 +0000 (17:57 +0200)]
Fix 'make distcheck'

if we want the test suite to remain working, it has to have all the data
it wants. Ship it with the .tgz so the test suite doesn't have to
generate it (though I suppose we could make it do so if we wanted).

Also, rename the file so it's clear what it's needed for, and so it
isn't accidentally overwritten just because it's the default name.

11 years agouse mktemp -d
Wouter Verhelst [Fri, 27 May 2011 15:53:52 +0000 (17:53 +0200)]
use mktemp -d

appending a suffix to a safely-created temporary file to do other stuff is not
necessarily a good idea. Create a directory safely instead.

11 years agoRe-sort documentation
Wouter Verhelst [Fri, 27 May 2011 15:51:11 +0000 (17:51 +0200)]
Re-sort documentation

This used to be alphabetically sorted, but wasn't any more. Fix that.

11 years agoClarify documentation slightly
Wouter Verhelst [Fri, 27 May 2011 15:46:58 +0000 (17:46 +0200)]
Clarify documentation slightly

I'm not sure every nbd user understands what an 'elevator' is (beyond
"device that makes people go up and down"); make it slightly more
obvious how the pieces fit together.

11 years agoRemove double "it", and redundant information about defaults
Wouter Verhelst [Fri, 27 May 2011 15:37:36 +0000 (17:37 +0200)]
Remove double "it", and redundant information about defaults

The manpage says "All booleans default to false unless specified
otherwise" higher up; adding stuff about defaults to just two options
could be confusing.

11 years agoModernize DEBUG macros, and make code -Wall -Werror clean
Wouter Verhelst [Fri, 27 May 2011 15:23:45 +0000 (17:23 +0200)]
Modernize DEBUG macros, and make code -Wall -Werror clean

This involved several things:
- Remove unused variables
- Mark variables that may or may not be used when specific macros are
  defined, but which we still want to define for the other cases without
  having to #ifdef too much, as such by way of G_GNUC_UNUSED.
- use varargs macros instead of the DEBUG[2-5] ones (which we can now do
  since we require a C99 compiler).
- cast integers to what we request in the format string, and
  standardize on assuming that size_t is an unsigned int everywhere.
  This may not always be correct (depending on whether we do LFS
  support), but debugging statements that are not 100% correct (as long
  as they contain a value that maps one-on-one to the right bit pattern)
  isn't a huge problem.
- Move the "include cliserv.h" to below the "include glib.h", so we
  don't define macros twice.

11 years agoAdd nbd-trdump - utilty to dump traces
Alex Bligh [Sun, 22 May 2011 18:21:05 +0000 (19:21 +0100)]
Add nbd-trdump - utilty to dump traces

11 years agoAdd nbd-trdump - utilty to dump traces
Alex Bligh [Sun, 22 May 2011 18:20:49 +0000 (19:20 +0100)]
Add nbd-trdump - utilty to dump traces

11 years agoFix nbd-tester-client.tr properly
Alex Bligh [Sun, 22 May 2011 17:49:52 +0000 (18:49 +0100)]
Fix nbd-tester-client.tr properly

11 years agoDo not use sync_file_range
Alex Bligh [Sun, 22 May 2011 12:08:19 +0000 (13:08 +0100)]
Do not use sync_file_range

11 years agoMerge branch 'master' of git://nbd.git.sourceforge.net/gitroot/nbd/nbd
Alex Bligh [Sun, 22 May 2011 10:29:31 +0000 (11:29 +0100)]
Merge branch 'master' of git://nbd.git.sourceforge.net/gitroot/nbd/nbd

11 years agoUse nbd-tester-client.tr data with conformant MBD_CMD_FLUSH offset/length fields
Alex Bligh [Sun, 22 May 2011 10:07:12 +0000 (11:07 +0100)]
Use nbd-tester-client.tr data with conformant MBD_CMD_FLUSH offset/length fields

11 years agoChnage documentation for NBD_CMD_FLUSH again.
Alex Bligh [Sun, 22 May 2011 09:58:47 +0000 (10:58 +0100)]
Chnage documentation for NBD_CMD_FLUSH again.

Use offset, length=0 for normal flushes. Reserve other options
for later (idea from Goswin von Brederlow <goswin-v-b@web.de>)

11 years agoAdd transaction log support and integrity test
Alex Bligh [Sat, 21 May 2011 07:47:21 +0000 (08:47 +0100)]
Add transaction log support and integrity test

11 years agofix documentation of NBD_CMD_FLUSH
Alex Bligh [Wed, 18 May 2011 18:34:35 +0000 (19:34 +0100)]
fix documentation of NBD_CMD_FLUSH

11 years agocopy handle on all requests
Alex Bligh [Wed, 18 May 2011 18:02:48 +0000 (19:02 +0100)]
copy handle on all requests

11 years agonbd-server: don't check length and offset on flush
Alex Bligh [Wed, 18 May 2011 16:34:09 +0000 (17:34 +0100)]
nbd-server: don't check length and offset on flush

11 years agoImplement support for flush, fua and rotational.
Alex Bligh [Tue, 17 May 2011 18:35:41 +0000 (19:35 +0100)]
Implement support for flush, fua and rotational.

This commit implements support for the flush, fua, and rotational directives
within the configuration file.

FUA means "force the current write to hit the media service" and FLUSH
means "empty the current write queue to disk". Broadly they have the same
semantics as the linux kernel REQ_FLUSH and REQ_FUA. FUA is implemented
through sync_file_range() (or if that doesn't exist, fdatasync() on the
file handle concerned), FLUSH through fsync() on all files. FUA and
FLUSH are selected in the config file, and set new flags bits which will
cause the client to sent FUA and FLUSH requests. The way these are
implemented is further explained in doc/proto.txt.

The purpose of this is reasonably obvious: without supporting either FUA
or FLUSH (and it's relatively easy to support both), filesystems on the
client have no way to ensure the relevant sectors have hit the disk.
The patch is implement such that the default behaviour is unchanged.

Additionally, it introduces an F_ROTATIONAL flag. This will turn off
the use of QUEUE_FLAG_NONROT in the client. QUEUE_FLAG_NONROT effectively
disables the elevator algorithm, making the algorithm merge only. That is
unhelpful where the server does not have its own elevator algorithm
or where the client elevator algorithm is neutered (e.g. writing to a
raw partition with F_SYNC with nbd-server). It's not going to be used
often where the backing store is a file.

It also incidentally fixes a bug where F_SYNC is ignored if F_COPYONWRITE
is set (not that this currently has much utility).

Note the following:

* The top 16 bits of the command type have been reserved
  (see NBD_CMD_MASK_COMMAND) for passing flags to be attached to commands.
  NBD_CMD_FLAG_FUA is the first of these.

* simple_test has been modified so it does not stomp over nbd.conf and
  pid files in the current directory.

* A new ioctl has been added which passes the export flags to the kernel.
  There is currently no support for this in the kernel (I will submit
  a patch in due course)

* "make check" now performs a flush and fua test. These have been verified
  by strace to "do the right thing".

* nbd-client incorrectly shifted the flags value left by 16 after reading it.
  This caused the test of the readonly bit to always fail. I suspect this
  may have been an attempt to combine server flags and export flags into
  a single 32 bit word. However, the low 16 bits were never set, and only
  the low 16 bits are tested. As the only thing it was testing for was the
  read only flag, and that is supplied in the flags, and as this allows
  transparent passing to the ioctl, I suggest it is changed as per this commit.
  If there's something else to add, it can be put in the upper 16 bits.

I have tested this lightly with nbd-client (obviously the kernel does not
yet send FLUSH or FUA) and with the test suite. It's probably ready to
go in marked "experimental".

11 years agoMerge branch 'alex'
Wouter Verhelst [Tue, 17 May 2011 18:28:58 +0000 (20:28 +0200)]
Merge branch 'alex'

11 years agoMerge commit '085441290'
Wouter Verhelst [Tue, 17 May 2011 18:19:55 +0000 (20:19 +0200)]
Merge commit '085441290'

11 years agowrite flags value to return to the rest of program in preparation for flush
Alex Bligh [Tue, 17 May 2011 12:19:47 +0000 (13:19 +0100)]
write flags value to return to the rest of program in preparation for flush

11 years agoAdd 'do not fork' option
Alex Bligh [Tue, 17 May 2011 12:04:59 +0000 (13:04 +0100)]
Add 'do not fork' option

11 years agoAdd flush test
Alex Bligh [Tue, 17 May 2011 11:31:37 +0000 (12:31 +0100)]
Add flush test

11 years agomove NBD_FLAGS from cliserv.h to nbd.h as they will be used in the kernel when we...
Alex Bligh [Tue, 17 May 2011 11:02:37 +0000 (12:02 +0100)]
move NBD_FLAGS from cliserv.h to nbd.h as they will be used in the kernel when we have the ioctl. Add NBD_CMD_FLUSH.

11 years agoUse flags for tests; introduce TEST_FLUSH
Alex Bligh [Tue, 17 May 2011 11:00:01 +0000 (12:00 +0100)]
Use flags for tests; introduce TEST_FLUSH

11 years agoMerge branch 'master' of git://nbd.git.sourceforge.net/gitroot/nbd/nbd
Alex Bligh [Tue, 17 May 2011 10:14:35 +0000 (11:14 +0100)]
Merge branch 'master' of git://nbd.git.sourceforge.net/gitroot/nbd/nbd

11 years agoImprove timing of tests; avoid wrapping tv_usec and tv_sec problems; better rounding...
Alex Bligh [Tue, 17 May 2011 08:28:36 +0000 (09:28 +0100)]
Improve timing of tests; avoid wrapping tv_usec and tv_sec problems; better rounding; display speed with decimal places

11 years agoHandle failed negotiation on modern socket
Wouter Verhelst [Tue, 17 May 2011 07:26:55 +0000 (09:26 +0200)]
Handle failed negotiation on modern socket

When negotiating fails for some reason, nbd-server currently segfaults
due to a NULL-pointer dereference. This should not happen.

CVE request outstanding

11 years agoAdd write test to test suite
Alex Bligh [Tue, 17 May 2011 07:00:56 +0000 (08:00 +0100)]
Add write test to test suite

11 years agoRemove compilation warnings and increase error checking in test suite
Alex Bligh [Tue, 17 May 2011 06:45:19 +0000 (07:45 +0100)]
Remove compilation warnings and increase error checking in test suite

11 years agoFix lp[] initialization
Wouter Verhelst [Mon, 16 May 2011 19:06:46 +0000 (21:06 +0200)]
Fix lp[] initialization

Originally, the s variable was a pointer which was allocated with
calloc() every time we went through the loop. Now, it's a stack variable
which gets memset() back to zero instead, and is copied to the array.

This change was done for an unrelated reason (which is why we didn't
change this assignment back then), but with the current code it's more
efficient and less error-prone if we assign values to the pointers when
we declare the lp[] array, rather than when we go through the loop. So
do that, then.

11 years agofix autogen.sh
Alex Bligh [Mon, 16 May 2011 11:01:12 +0000 (12:01 +0100)]
fix autogen.sh

Building from source fails on a clean git pull, due to autogen.sh failing.

$ ./autogen.sh
+ make -C man -f Makefile.am infiles
make: Entering directory `/home/amb/nbd/nbd/man'
make: *** No rule to make target `infiles'. Stop.
make: Leaving directory `/home/amb/nbd/nbd/man'

A manual autoreconf does this.

$ autoreconf -f -i -s
configure.ac:123: required file `man/nbd-client.8.sh.in' not found
configure.ac:123: required file `man/nbd-server.5.sh.in' not found
configure.ac:123: required file `man/nbd-server.1.sh.in' not found
autoreconf: automake failed with exit status: 1

I think the attached is the right patch (well, I have ./configure
now). There may be a prettier way of doing it (e.g. putting an
"infiles" target into man/Makefile.am) but this is least intrusive.

Alex Bligh

Signed-off-by: Alex Bligh <alex@alex.org.uk>

11 years agoEnsure all options have option length
Alex Bligh [Mon, 16 May 2011 09:35:07 +0000 (10:35 +0100)]
Ensure all options have option length

This is a documentation only patch to the new handshake protocol, but
changes the protocol in completely back compatible manner.

Under the current handshake protocol, it is impliedly necessary for the
server to understand every option presented by the client, as there is
no way for the server to skip options it does not understand (as the
length field is not always part of the option).

My proposal is to include the length field as a 32 bit unsigned length
in the same way that it currently forms the first 4 octets of the
NBD_OPT_EXPORT_NAME. So the length field has technically moved out
of the option data and into the option header (obviously there is
no code change required). This will allow servers to skip options
presented by clients that the server does not understand.

Alex Bligh

Signed-off-by: Alex Bligh <alex@alex.org.uk>

11 years agoRelease 2.9.21a
Wouter Verhelst [Wed, 11 May 2011 13:43:14 +0000 (15:43 +0200)]
Release 2.9.21a

11 years agoAdd sh.tmpl to EXTRA_DIST so it won't break
Wouter Verhelst [Wed, 11 May 2011 09:51:10 +0000 (11:51 +0200)]
Add sh.tmpl to EXTRA_DIST so it won't break

11 years agoRelease 2.9.21
Wouter Verhelst [Mon, 9 May 2011 18:11:30 +0000 (20:11 +0200)]
Release 2.9.21

11 years agoFix 'make distcheck'
Wouter Verhelst [Mon, 9 May 2011 18:01:31 +0000 (20:01 +0200)]
Fix 'make distcheck'

11 years agoFix thinko
Wouter Verhelst [Mon, 9 May 2011 17:51:20 +0000 (19:51 +0200)]
Fix thinko

It's nbd-client.8, not nbd-server.8

11 years agoDon't forget the template, and ignore generated files
Wouter Verhelst [Wed, 4 May 2011 12:04:03 +0000 (14:04 +0200)]
Don't forget the template, and ignore generated files

11 years agoManpage generation revisited
Wouter Verhelst [Wed, 13 Apr 2011 11:03:23 +0000 (13:03 +0200)]
Manpage generation revisited

Previously, we would generate manpages using direct automake-style @foo@
substitution. These, however, contain data in shell syntaxis, which
results in a manpage in the style of '${prefix}/etc/nbd-server/config
allows to configure the nbd-server', which is confusing.

Instead, generate a shell script that outputs the manpage using shell
interpolation, which supposedly works correctly. It's a bit yuck, but
it's the way automake wants us to do these things.

11 years agoDocumentation updates
Wouter Verhelst [Fri, 8 Apr 2011 12:01:39 +0000 (14:01 +0200)]
Documentation updates

- Document the protocol
- Move developer documentation into a separate directory. This includes
  the Doxyfile. Update some other files so that doc/ isn't git ignore'd,
  and so that the Doxyfile is generated at the right location.
- Add a README which explains the purpose of that directory.

11 years agoFix dup_serve
Wouter Verhelst [Mon, 21 Mar 2011 08:46:46 +0000 (09:46 +0100)]
Fix dup_serve

Copy the virtstyle field too, and make sure that we copy everything from
's' (the source) rather than from 'serve' (the destination)

11 years agoFix memleak
Wouter Verhelst [Thu, 3 Mar 2011 14:21:00 +0000 (15:21 +0100)]
Fix memleak

11 years agoFix inline usage
Wouter Verhelst [Thu, 3 Mar 2011 14:07:26 +0000 (15:07 +0100)]
Fix inline usage

inlines must be static, or gcc with some particular set of options (C99?
-Wall -Werror? dunno, don't care) won't compile it.

11 years agoRequire C99
Wouter Verhelst [Sun, 27 Feb 2011 23:30:47 +0000 (00:30 +0100)]
Require C99

We'll want to use a few C99-specific features, and C99 is getting older
than whisky now anyway.

11 years agoFix getopt usage
Wouter Verhelst [Sun, 13 Feb 2011 10:17:47 +0000 (11:17 +0100)]
Fix getopt usage

getopt returns an int, not a char. Since char is unsigned by default on
some architectures, this caused an infinite loop in option parsing

11 years agoCheck return value of read_all in all cases
Wouter Verhelst [Sat, 12 Feb 2011 19:18:45 +0000 (20:18 +0100)]
Check return value of read_all in all cases

... to avoid nbd-tester-client going berzerk if the server dies (this is a test
suite! It should deal with servers dying!)

11 years agoAssign a value to serve when using modern protocol
Wouter Verhelst [Sat, 12 Feb 2011 18:50:29 +0000 (19:50 +0100)]
Assign a value to serve when using modern protocol

We dereference this pointer later on, so need to make sure it's
actually valid.

As an added precaution, initialize it to NULL, so that we catch any
further incorrect dereferences, too.

11 years agoRelease 2.9.20
Wouter Verhelst [Fri, 28 Jan 2011 12:47:13 +0000 (13:47 +0100)]
Release 2.9.20

11 years agoTest request blocks that are larger than 1MB, too.
Wouter Verhelst [Fri, 28 Jan 2011 12:45:48 +0000 (13:45 +0100)]
Test request blocks that are larger than 1MB, too.

11 years agoFix handling of oversized requests
Wouter Verhelst [Fri, 28 Jan 2011 12:19:30 +0000 (13:19 +0100)]
Fix handling of oversized requests

Previously, nbd-server would not serve requests that were over 1MB in
size. This was a problem, and even a bug since the kernel does send such

Modify the server so that it loops if the request is larger than 1MB.

11 years agoFix buffer size checking
Wouter Verhelst [Thu, 27 Jan 2011 21:30:09 +0000 (22:30 +0100)]
Fix buffer size checking

Yes, this means we've re-introduced CVE-2005-3534. Sigh.

11 years agoRemove outdated roadmap
Wouter Verhelst [Wed, 26 Jan 2011 00:46:21 +0000 (01:46 +0100)]
Remove outdated roadmap

11 years agoRelease 2.9.19
Wouter Verhelst [Sun, 16 Jan 2011 00:41:16 +0000 (01:41 +0100)]
Release 2.9.19

11 years ago10 TByte partition
sf@psjt.org [Sat, 11 Dec 2010 00:27:45 +0000 (01:27 +0100)]
10 TByte partition


The attached patch allows to run a 16TB nbd partition on a 32-bit

Gruß, Stephan

11 years agonbd-server: Limit the number of connections
Gregory Thiemonge [Mon, 27 Sep 2010 14:04:36 +0000 (16:04 +0200)]
nbd-server: Limit the number of connections

Hi there,

This is a patch that allows to limit the number of opened connections in

This limitation can be specified from both command line and config
- -M <n> or --max-connections <n> from command line
- or maxconnections = <n> in config files (export sections)


11 years agoPut nbd-client back in sbin
Wouter Verhelst [Wed, 8 Sep 2010 08:31:24 +0000 (10:31 +0200)]
Put nbd-client back in sbin

11 years agoMove man files to man/
Laurent Vivier [Fri, 27 Aug 2010 18:48:17 +0000 (20:48 +0200)]
Move man files to man/

Signed-off-by: Laurent Vivier <laurent@vivier.eu>

11 years agoRevisit documentation
Wouter Verhelst [Thu, 2 Sep 2010 10:55:11 +0000 (12:55 +0200)]
Revisit documentation

There were a few issues with the documentation, where it grew some hairy
and weird phrasing. Fix those.

11 years agoRemove GCC warnings:
Laurent Vivier [Mon, 23 Aug 2010 20:51:50 +0000 (22:51 +0200)]
Remove GCC warnings:

warning: ignoring return value of ‘write’
warning: ignoring return value of ‘read’
warning: format not a string literal and no format arguments
warning: ignoring return value of ‘daemon’

Signed-off-by: Laurent Vivier <laurent@vivier.eu>

11 years agoBe less scary
Wouter Verhelst [Tue, 24 Aug 2010 01:11:22 +0000 (03:11 +0200)]
Be less scary

When nothing is configured, a rather scary warning is displayed. Change
it so that it isn't quite as scary, since that produces a number of
questions from users who don't know nbd-server.

11 years agoOops
Wouter Verhelst [Thu, 19 Aug 2010 18:04:28 +0000 (20:04 +0200)]