nick
c2df38c9d3
mirror: Use libev to provide an event loop inside the mirror thread
...
We're doing this so we can implement bandwidth controls sanely.
2013-08-09 17:02:10 +01:00
nick
14db3315ca
non-debug builds get -O2 for impressive bitset speedups
2013-07-24 12:34:36 +01:00
nick
b29ef6d4de
flexnbd status: Avoid a possible NULL dereference reading migration status
...
While the mirror mutex is taken, the mirroring can be abandoned and serve->mirror
set to NULL, so we need to lock around reading information from serve->mirror
2013-07-08 13:32:14 +01:00
nick
24858fcde5
logging: Add a timestamp to the log messages we emit
2013-06-06 11:57:05 +01:00
nick
5257e93cb7
flexnbd: Split the proxy mode out into its own binary.
...
"flexnbd-proxy ..." should be identical in operation to "flexnbd proxy ..."
2013-03-19 13:13:37 +00:00
nick
78299de299
Dummy commit to get past a merge commit
2013-02-21 13:57:33 +00:00
nick
98d8fbeaf0
flexnbd: Add a proxy mode
...
This lets us proxy connections between NBD clients and servers, resiliently.
2013-02-15 16:52:16 +00:00
nick
58c4a9530b
Make acceptance tests verbose by default
2013-02-14 11:17:44 +00:00
nick
ac560bd907
serve: Refactor some socket utility code into its own module.
...
We'll be using this in proxy mode later
2013-02-13 13:43:52 +00:00
Alex Young
22bea81445
Don't open the control socket until after the server socket is bound
...
This makes it easier for the tests (and supervisor) to guarantee to be
able to connect to the server socket.
Also this patch moves freeing the mirror supervisor into the server
thread.
2012-10-09 17:35:20 +01:00
Matthew Bloch
7b13964c39
Update Rakefile to support locally-installed libcheck, removed efence, pushed
...
-l arguments to end of link command line.
2012-10-07 02:09:34 +01:00
Alex Young
239136064a
Add default empty LDFLAGS
2012-08-24 09:32:33 +01:00
Alex Young
c3c621f750
Don't free a client which hasn't finished yet.
2012-08-23 17:51:19 +01:00
Alex Young
4790912750
Remove listen mode
...
Changing behaviour so that instead of rebinding after a successful
migration and continuing as an ordinary server, we simply quit with a
0 exit code and let our caller restart us as a server if they want to.
This means that everything in listen.c, listen.h, and anything making
reference to a rebind address is unneeded.
2012-07-23 09:48:50 +01:00
Alex Young
76bbdb4889
Force gzipping the man page
2012-07-19 17:22:25 +01:00
Alex Young
484a29b3f6
Add README.txt to the deb task code files
2012-07-16 10:29:06 +01:00
Alex Young
a1ea2ba4c5
Add a rake task to build the man page
...
Also tweak the debian .install to put it in the right place.
2012-07-14 18:47:25 +01:00
Alex Young
54a1409dce
Added a README.txt and a man page
...
Spoiler: they're the same thing. Added a `rake man` task to build the
man page. Depends on asciidoc.
2012-07-14 18:36:02 +01:00
Alex Young
03c06a689d
Append the CFLAGS environment variable to the build flags.
...
This is going to be used for the DIRECT_IO flag.
2012-07-14 10:05:35 +01:00
Alex Young
f3f017a87d
Free all possibly held mutexes in error handlers
...
Now that we have 3 mutexes lying around, it's important that we check
and free these if necessary if error() is called in any thread that can
hold them. To do this, we now have flexthread.c, which defines a
flexthread_mutex struct. This is a wrapper around a pthread_mutex_t and
a pthread_t. The idea is that in the error handler, the thread can
check whether it holds the mutex and can free it if and only if it does.
This is important because pthread fast mutexes can be freed by *any*
thread, not just the thread which holds them.
Note: it is only ever safe for a thread to check if it holds the mutex
itself. It is *never* safe to check if another thread holds a mutex
without first locking that mutex, which makes the whole operation rather
pointless.
2012-07-11 09:43:16 +01:00
Alex Young
988b2ec014
Moved acceptance tests into tests/acceptance
2012-07-03 10:59:31 +01:00
Alex Young
c0c9c6f076
Moved unit tests into tests/unit
2012-07-03 10:53:08 +01:00
Alex Young
94b4fa887c
Add mboxes
2012-06-27 15:45:33 +01:00
Alex Young
80f298f6cd
Make non-fatal errors return properly
2012-06-21 18:01:56 +01:00
Alex Young
f37a217cb9
Add listen mode
2012-06-21 18:01:50 +01:00
Alex Young
43e95dc4db
Make sure all the lines we read get freed (including the trailing blank)
2012-06-21 15:31:28 +01:00
Alex Young
b986f6b63e
Take _GNU_SOURCE out of source and put it in CFLAGS
2012-06-13 09:59:08 +01:00
Alex Young
25fc0969cf
Make the compiler stricter and tidy up code to make the subsequent errors and warnings go away
2012-06-11 13:57:03 +01:00
Matthew Bloch
e8b5fae7ab
Merge, just renaming old error macros.
2012-06-09 02:37:23 +01:00
Matthew Bloch
8691533d88
Added hopeful default path to find rake_utils, turned undefined function
...
warnings into errors, and added expensive header scanning to .c->.o rule to
ensure changes to .h files cause recompiles as you'd expect.
2012-06-09 02:17:34 +01:00
Alex Young
f7e1a098b1
Move updating the acl object into serve.c
...
* * *
Replacing the server acl sends an acl_updated signal
2012-06-08 10:32:33 +01:00
Alex Young
2d9d00b636
Pull ACLs into their own struct
2012-06-07 17:47:43 +01:00
Alex Young
5930f25034
Use client stop signals for thread stopping
2012-06-07 14:25:30 +01:00
Alex Young
a90f84972b
Add stop signals to client threads
2012-06-07 11:44:19 +01:00
Alex Young
d7fa05d42c
Backed out changeset 0cbb8e9cf515 because it breaks deb packaging.
2012-06-06 10:24:04 +01:00
Matthew Bloch
29151b8a78
Isolated missing library code to pkg:deb task - couldn't locate library code
...
(must be available from Debian, or bundled).
2012-06-05 23:46:28 +01:00
Alex Young
b90b73fba6
build and default rake tasks, because I keep trying to type them
2012-05-31 14:01:49 +01:00
nick
71e755906b
Make the Rakefile take note of DEBUG=
2012-05-31 12:12:32 +01:00
Alex Young
f21dd9e888
Basic debian packaging
...
Add a build dependency on rake_utils, but we get simple debian packages
out of it.
2012-05-30 17:35:07 +01:00
Alex Young
a01621dc1e
Added .h files to the Rakefile
2012-05-30 15:06:06 +01:00
Alex Young
7832958522
Rearranged the project to have src/ and build/ directories
...
This simplifies keeping everything clean.
2012-05-30 09:51:20 +01:00
mbloch
dcb1633b8b
Lots of errors spotted by Alex fixed, added mutexes to accept & I/O, added
...
"remote" commands to set ACL, start mirror etc.
2012-05-29 00:59:12 +01:00
Matthew Bloch
c54d4a68ba
Added another write/read test, fixed bugs in splice() usage and IPv6
...
socket handling.
2012-05-27 14:40:16 +01:00
Matthew Bloch
5a5041a751
First few external tests with test/unit, some minor tidying of internal data
...
structures.
2012-05-24 01:39:35 +01:00
Matthew Bloch
9c26f7f36f
Split control-socket functions into separate file.
2012-05-23 00:42:14 +01:00
Matthew Bloch
f7ce2c0ea5
Mostly finished bitset tests, fixed test build to include utilities, remove
...
efence as valgrind far preferable.
2012-05-21 03:17:32 +01:00
Matthew Bloch
c94b6f365c
Tweaks to bitset.h, established a C test framework.
2012-05-20 14:38:46 +01:00
Matthew Bloch
8a38cf48eb
Fixed segfaulting access control, allowed change to acl via control socket.
2012-05-19 12:48:03 +01:00
Matthew Bloch
0432fef8f5
Split code out into separate compilation units (first pass, anyway).
2012-05-17 20:14:22 +01:00
mbloch
c796a526d0
Added Rakefile
2012-05-16 01:27:14 +01:00