Commit Graph

131 Commits

Author SHA1 Message Date
Alex Young
50b0db7bf6 Reject mirroring if the remote size doesn't match the local size 2012-06-13 15:51:37 +01:00
Alex Young
c9ece5a63f Tidy mirror_runner somewhat 2012-06-13 15:45:59 +01:00
Alex Young
c2b6fac92d Fix an argv array reference (root cause of a bug from the last commit) 2012-06-13 13:52:15 +01:00
Alex Young
7d1c15b07a Fix two bugs in mirroring.
First, Leaving off the source address caused a segfault in the
command-sending process because there was no NULL check on the ARGV
entry.

Second, while the migration thread sent a signal to the server to close
on successful completion, it didn't wait until the close actually
happened before releasing the IO lock.  This meant that any client
thread waiting on that IO lock could have a read or a write queued up
which could succeed despite the server shutdown.  This would have meant
dataloss as the guest would see a successful write to the wrong instance
of the file.  This patch adds a noddy serve_wait_for_close() function
which the mirror_runner calls to ensure that any clients will reject
operations they're waiting to complete.

This patch also adds a simple scenario test for migration, and fixes
TempFileWriter#read_original.
2012-06-13 13:44:21 +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
c7525f87dc Removed proxying completely and fixed the pthread_join bug revealed in the process 2012-06-12 15:08:07 +01:00
Alex Young
2a71b4e7a4 Fix broken error checking around pthread functions 2012-06-11 16:08:19 +01:00
Alex Young
5996c8f7ba Simplify a FATAL_IF_NEGATIVE 2012-06-11 15:31:59 +01:00
Alex Young
4c52bcd870 Make the error and fatal functions swallow semicolons properly 2012-06-11 15:26:42 +01:00
Alex Young
13a6a403a4 Make the error and fatal macros swallow semicolons properly 2012-06-11 15:23:06 +01:00
Alex Young
83b8b9eaac Add general-purpose ERROR/FATAL_IF and ERROR/FATAL_UNLESS macros 2012-06-11 15:20:05 +01:00
Alex Young
c6182b9edf Merge 2012-06-11 14:59:52 +01:00
Alex Young
e2d3161a4a Set default log level to warn to shut the tests up 2012-06-11 14:59:26 +01:00
nick
8513144354 Automated merge with ssh://dev/flexnbd-c 2012-06-11 14:40:53 +01:00
nick
5ab9e10019 test: make check_serve bind() its outgoing socket to a known IP for these tests 2012-06-11 14:40:41 +01:00
Alex Young
710d8254d4 Make sure all ifs are braced 2012-06-11 14:34:17 +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
Alex Young
8825f86726 Merge 2012-06-11 13:49:56 +01:00
Alex Young
b5427d13db Explicitly check for which fd is acceptable in server_accept 2012-06-11 13:49:35 +01:00
nick
893db71d7c Whitespace 2012-06-11 13:05:22 +01:00
nick
224bdcbf87 Fix handling ACLs where > 1 entry exists 2012-06-11 12:56:45 +01:00
nick
0b90517035 tests: Get rid of a warning 2012-06-11 10:08:24 +01:00
nick
0441ef9d74 tests: Get check_serve working after the merge of doom 2012-06-11 10:04:31 +01:00
Matthew Bloch
e8b5fae7ab Merge, just renaming old error macros. 2012-06-09 02:37:23 +01:00
Matthew Bloch
b546539ab8 Rewrote error & log functions to be more general, use longjmp to get out of
trouble and into predictable cleanup functions (one for each of serve,
client & control contexts).  We use 'fatal' to mean 'kill the thread' and
'error' to mean 'don't kill the thread', assuming some recovery action,
except I don't use error anywhere yet.
2012-06-09 02:25:12 +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
b7096ef908 Audit client connections on acl update 2012-06-08 18:03:41 +01:00
Alex Young
35ca93b42c Lock around acl updates 2012-06-08 11:02:40 +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
5fb0cd4cca Fix O_NONBLOCK setting on self_pipes 2012-06-08 10:11:06 +01:00
Alex Young
2d9d00b636 Pull ACLs into their own struct 2012-06-07 17:47:43 +01:00
Alex Young
601e5b475a Tidy the NULLCHECK macro to swallow semicolons properly 2012-06-07 16:00:38 +01:00
Alex Young
c628435f77 Fix an invalid define symbol 2012-06-07 15:59:13 +01:00
Alex Young
1cd8f4660f Merge of doom 2012-06-07 14:40:55 +01:00
Alex Young
5930f25034 Use client stop signals for thread stopping 2012-06-07 14:25:30 +01:00
Matthew Bloch
40f0f9fab6 Big bit of debug output in write_not_zeroes (disabled). 2012-06-07 12:28:21 +01:00
Matthew Bloch
d763ab4e74 Fixed bug in bitset_run_count which was causing data corruptionn writing
around sparse boundaries.
2012-06-07 12:27:46 +01:00
Matthew Bloch
3810a8210f Added some record-keeping / printing to fuzzer to assist with backtracking. 2012-06-07 12:25:56 +01:00
Alex Young
a90f84972b Add stop signals to client threads 2012-06-07 11:44:19 +01:00
Matthew Bloch
5710431780 Refactored write_not_zeroes to use struct bitset_mapping instead of
repeating all that code (has not fixed earlier bug yet, but lots of
repetition cut).
2012-06-07 11:17:02 +01:00
Matthew Bloch
08f3d42b34 Improved fuzz test to find an actual code bug (previous bug was in the test
<g>).
2012-06-07 02:06:08 +01:00
Matthew Bloch
9fc3c061f8 Fixed arguments to debug function. 2012-06-07 01:15:29 +01:00
Matthew Bloch
8cf1a515dd Missing break; in switch statement (verbose was setting default deny!) 2012-06-07 00:01:11 +01:00
Alex Young
cfa9f9c71f Fix the sense of client_serve_request 2012-06-06 14:25:35 +01:00
Alex Young
e8b47d5855 Remove the accept lock as being unneeded 2012-06-06 14:07:55 +01:00
Alex Young
1fc76ad77f Merge 2012-06-06 13:44:49 +01:00
Alex Young
16001eb9eb Move checking for a closed client out of server_lock_io and into client_serve_request 2012-06-06 13:44:38 +01:00
nick
648f768ff6 tests: fix the Ruby flexnbd wrapper for mirror 2012-06-06 13:33:24 +01:00
Alex Young
1b289a0e87 Change io lock and unlock to server error on failure 2012-06-06 13:29:13 +01:00
Alex Young
9dbc0a31a8 Better error message 2012-06-06 13:19:24 +01:00