Alex Young
bafc3d3687
Make sure filename_incomplete gets freed
2012-06-21 15:58:32 +01:00
Alex Young
cc22f50fe6
Avoid a use-after-free in serve.c
2012-06-21 14:15:58 +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
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
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
b5427d13db
Explicitly check for which fd is acceptable in server_accept
2012-06-11 13:49:35 +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
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
2d9d00b636
Pull ACLs into their own struct
2012-06-07 17:47:43 +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
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
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
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
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
Alex Young
339e766339
Use self_pipe for close_signal
2012-06-06 12:41:03 +01:00
Alex Young
457987664a
Renamed struct client_params to struct client
2012-06-06 11:33:17 +01:00
Alex Young
40279bc9ca
Split client-specific code into client.{c,h}
2012-06-06 11:27:52 +01:00
Alex Young
a80c5ce6b5
Moved sockaddr_address_data to serve.c and renamed params.h to serve.h
2012-06-06 10:45:07 +01:00
Alex Young
cc97dd4842
Rename control to control_fd and struct mode_serve_params to struct server
2012-06-06 10:35:50 +01:00
Alex Young
78b1879cab
Merge
2012-06-06 10:19:59 +01:00
Alex Young
059be22c27
Rename int server to int server_fd in mode_serve_params
2012-06-06 10:19:45 +01:00
Matthew Bloch
2245385117
Added msync() call after every write - not sure whether it's necessary yet.
2012-06-06 01:27:37 +01:00
Alex Young
29937cdcf9
Merge
2012-06-01 16:25:41 +01:00
Alex Young
91ab715659
Indentation fix
2012-06-01 16:24:50 +01:00
nick
b985e97098
Automated merge with ssh://dev/flexnbd-c
2012-06-01 14:51:43 +01:00
nick
04d67b3bab
acls: Add a default-deny option, which allows you to specify what an empty ACL means.
...
When this option is specified, an empty ACL means "reject all clients". Without it,
an empty ACL means "accept all clients"
2012-06-01 14:48:34 +01:00
Alex Young
9dbb107bf8
Use nbdtypes to write the nbd hello message
2012-05-31 20:33:42 +01:00
Alex Young
185a840e03
Factor out the bulk of client_serve_request, and add convenience converters in src/nbdtypes.c
2012-05-31 17:44:11 +01:00
Alex Young
949d7d6a72
Don't check for the INCOMPLETE file on read
2012-05-31 14:11:57 +01:00
Alex Young
1aec12613c
Ditch a couple of unneeded variables to silence gcc warnings
2012-05-31 14:09:35 +01:00
nick
e863bffe3d
Set TCP_NODELAY on our socket. This decreases average NBD read request RTT from 0.3ms to 0.001ms
2012-05-31 11:33:31 +01:00
mbloch
c6dd4fbd89
Merge
2012-05-30 20:14:14 +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