Patrick J Cherry
a4d641b215
Ensure ev abandon_watcher is stopped before reuse.
2018-12-07 21:47:14 +00:00
Patrick J Cherry
842e7d362d
Ensure control socket is closed first, and wait for it to close.
2018-12-07 16:32:58 +00:00
Patrick J Cherry
5839a36ab1
Remove useless function definition
2018-12-07 15:05:19 +00:00
Patrick J Cherry
70a3a4bb55
Close the control socket during cleanup
...
This should prevent further requests coming in, triggering deadlocks.
2018-12-07 15:02:55 +00:00
Patrick J Cherry
b26b308e68
Add test to check when proxy times-out mid-write to upstream
...
I've add to add code to allow the environment to specify the upstream
tiemout so we don't have to wait 30s for this test to happen.
2018-11-14 16:49:55 +00:00
Patrick J Cherry
3fe9f2c6a1
Removed a couple of gotos.
...
Hadn't you heard? They're considered harmful.
2018-11-14 10:23:05 +00:00
Patrick J Cherry
9b1518806d
Move state-resetting to after before the init is read from upstream
...
This removes repetition and ensures a constant state before the upstream
init is read.
2018-11-13 21:33:06 +00:00
Patrick J Cherry
1225a28d41
Reset proxy req size/needle on timeout
2018-11-13 16:42:13 +00:00
Patrick J Cherry
ead6328d80
Force sync after every write
2018-04-24 10:27:02 +01:00
Patrick J Cherry
f47f56d4c4
Formatted all code using indent
2018-02-20 10:05:35 +00:00
James Carter
19a1127bde
Merge branch 'fix-correct-num-clients-status' into 'develop'
...
Call the thread cleanup code when requesting `status`
See merge request open-source/flexnbd-c!46
2018-02-20 09:51:37 +00:00
James Carter
073a4ac0fa
Merge branch '35-incorrect-struct-type-used-in-readwrite-c' into 'develop'
...
Resolve "Incorrect struct type used in readwrite.c"
Closes #35
See merge request open-source/flexnbd-c!41
2018-02-20 09:50:25 +00:00
Patrick J Cherry
d0439dab88
Call the thread cleanup code when requesting status
...
This ensures the correct number of connected clients is returned when
the status command is issued.
Previously the thread pool would only be cleaned up on a new connection.
2018-02-16 12:58:03 +00:00
Patrick J Cherry
099e29de91
Merge branch 'develop' into 'take-request-response-size-into-malloc'
...
# Conflicts:
# debian/changelog
2018-02-13 17:06:41 +00:00
Patrick J Cherry
158379ba7a
Use correct constant name.
2018-02-12 19:11:24 +00:00
Patrick J Cherry
1c66b56af1
Update proxy malloc to add the struct size onto the request/response buffer
...
This alters the meaning of NBD_MAX_SIZE to be the actual max request size
we'll accept over nbd. Previously it was *nearly* the max size we'd
accept depending on the size of the struct.
2018-02-12 19:04:29 +00:00
Patrick J Cherry
cdcd527544
Refactored read_reply to compare the network-byte-ordered handle
2018-02-09 12:18:34 +00:00
Patrick J Cherry
169d40f575
Increase log level for readloop failures, which might help with diagnosis
2018-02-09 11:57:07 +00:00
Patrick J Cherry
5b350e10e5
Merge branch 'develop' into '35-incorrect-struct-type-used-in-readwrite-c'
...
# Conflicts:
# debian/changelog
2018-02-09 11:29:48 +00:00
Patrick J Cherry
a19267b377
Adjust block-rounding line to match in serve.c
2018-02-08 16:37:36 +00:00
Patrick J Cherry
347b7978e4
Discs must be sized in multiples of 512 bytes or odd things happen
...
In #36 some of the odd errors were due to seeks beyond the end of the
disc. This was because the disc was "specially crafted" to be 25GB + 1
byte, which doesn't fit into the normal 512 byte sectors expected of a
disc. This lead to reads going beyond the end of the disc etc.
If a similarly evil disc is used with `losetup`, it just ignores the
last bytes of the disc that don't fit into 512 chunks. This is what
that patch does, logging an error at the same time.
2018-02-08 16:31:28 +00:00
Patrick J Cherry
f8fec5f57e
Alter struct types to reflect reality, avoiding mixing "host" and "raw" structs
2018-02-08 15:46:34 +00:00
Patrick J Cherry
8beb3f0af6
Allow proxy to pass NBD protocol errors downstream; server returns EINVAL/ENOSPC appropriately
...
Previously the proxy would just disconnect when it saw an NBD protocol
error, and retry the operation it was in the middle of.
Additionally, the server needs to return the correct error types when
this happens.
2018-02-08 13:19:51 +00:00
Patrick J Cherry
9bf3b52d54
Call proxy_finish_connect_to_upstream when reconnecting, setting
...
TCP_NODELAY
2018-02-06 10:02:16 +00:00
Patrick J Cherry
3a86870c9f
Use sysconf to determine actual page size for msync
...
Also added comments in tests around testing for msync offsets/lengths.
2018-02-06 07:32:58 +00:00
Patrick J Cherry
6d6948af09
Fix offset calculation for partial msyncs to go to nearest 4k block
...
Previously they were always set to zero.
2018-02-05 23:05:00 +00:00
Patrick J Cherry
c423900f02
Fix typo
2018-02-05 17:04:23 +00:00
Patrick J Cherry
afa1bb0efb
Use msync rather than fsync to flush the entire disc
...
This involves storing the size of the mapped disc in the client struct,
and then supplying that to the msync command.
2018-02-05 17:01:32 +00:00
Patrick J Cherry
ad2014ac9d
Fixed long-standing bug with h2r functions being back to front
...
h2r seemd to be using beXXtoh functions instead of htobeXX. Foruntately
ROT13 works symmetrically on our systems..!
2018-02-05 16:16:17 +00:00
Patrick J Cherry
d1dc7392c2
Open file with O_NOATIME, not O_SYNC
...
O_SYNC is not necessary as we're not doing direct writes to the file.
O_NOATIME might give some speed boost.
2018-02-05 16:15:36 +00:00
Patrick J Cherry
2b58468800
Added test for FUA acceptance.
...
Although I think this might be a bit useless as servers normally just
ingore flags.
2018-02-03 20:29:15 +00:00
Patrick J Cherry
3410ccd4c5
Fixed up commenting around our advertised flags.
2018-02-02 20:50:48 +00:00
Patrick J Cherry
9eb7072f49
Removed some extra spaces I'd added
2018-02-02 20:46:25 +00:00
Patrick J Cherry
6aa5907f5e
Tidied constants up a bit
2018-02-02 20:34:49 +00:00
Patrick J Cherry
b22b99d9b9
Fix fill_request to set flags as well as type.
2018-02-02 20:28:00 +00:00
Patrick J Cherry
ad001cb83c
Tidy comments
2018-02-02 16:17:01 +00:00
Patrick J Cherry
68a196e93d
Allow the proxy connection to pass through flags from upstream.
2018-02-02 10:30:40 +00:00
Patrick J Cherry
1f0ef0aad6
Implement FLUSH command and honour FUA flag
...
I changed the request struct to break the 32 bits reserved for the
request type into two. The first part of this is used for the flags
(such as FUA), and the second part for the command type. Previously
we'd masked the top two bytes, thus ignoring any flags.
2018-02-01 22:13:59 +00:00
Patrick J Cherry
25cc084108
First steps towards implementing flags as part of oldstyle negotiation
2018-02-01 19:25:36 +00:00
James F. Carter
9b1781164a
avoid fatal error on client connection timeout
2018-01-26 15:03:44 +00:00
Chris Cottam
c37627a5b9
not high enough, trying 32MB
2018-01-18 17:08:32 +00:00
Chris Cottam
ceb3328261
increasing the NBD max size to see if it fixes an issue with qemu-2.11.0
2018-01-18 16:52:24 +00:00
James F. Carter
fa75de0a8b
proxy sets the upstream address and port as its log context
2018-01-11 10:04:18 +00:00
James F. Carter
1cb11bfd38
serve sets the disc's backing file as its log context
2018-01-11 10:03:16 +00:00
James F. Carter
2702e73a26
add a log_context, a string output as part of any log message
2018-01-11 10:01:42 +00:00
James F. Carter
884a714744
whitespace fix
2018-01-10 13:55:05 +00:00
James F. Carter
0c668f1776
remember how || works in C
2018-01-10 13:54:26 +00:00
James F. Carter
1d5b315f17
apply tcp keepalive to serving sockets
2018-01-10 13:49:22 +00:00
Chris Elsworth
ab3106202a
Also return migration_bytes_left
2017-07-14 16:18:34 +01:00
Patrick J Cherry
c07df76ede
This fixes the compiler warning pointer-to-int-cast in serve.c
...
```
In file included from src/server/bitset.h:4:0,
from src/server/mirror.h:8,
from src/server/flexnbd.h:5,
from src/server/serve.h:8,
from src/server/serve.c:1:
src/server/serve.c: In function 'tryjoin_client_thread':
src/server/serve.c:258:6: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
(uint64_t)status);
^
```
2016-10-06 21:16:07 +01:00