| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We steal 8 bits from the request offset to count hops when requests
get relayed by proxies. This still leaves plenty of bits for the
offset (56 bits, supporting images of up to 72 petabytes).
This is used to detect proxy cycles. The algorithm is not perfect
but should prevent endless relays of the same request.
This is backwards compatible to old clients and servers, as the server
only ever sets the hopcount in relayed requests if the upstream server
is using protocol version 3 or newer, and clients are automatically
upwards compatible as there is practically no image larger than 74PB,
so the newly introduced hop count field is always 0 even in requests
from old clients.
|
| |
|
|
|
|
|
| |
This changed in 4.11, see
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dc3b17cc8bf21307c7e076e7c778d5db756f7871
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- ACL is defined in new file rpc.acl
- Queries are still WIP, for now something like
/query?q=stats&q=images
/query?q=clients
works, although the parsing is still ugly
- Also supports HTTP keep-alive
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This will close the readFd of images that have no active clients
after some idle period (1 hour currently).
Prevents deleted images from taking up space until the server
is shut down.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
These two have been the same all along and recently,
the _CACHE variant has been removed (kernel 4.6).
Switch to the non-CACHE version so build doesn't break
on newer kernels.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new mechanism is supposed to complement the existing
RTT based balancing. While the RTT-averaging approach is
better suited to react to sudden drastic changes in server
latency.
The new approach doesn't directly consider RTT, but keeps
track of how many consecutive times each server was the best
server when measuring the RTTs. The higher that counter
rises, the more likely it will become that the connection
switches over to that server.
Eg.: Server 1 measures 600µs each time
Server 2 measures 599µs each time
After a while, in case server 1 is currently used, the
connection will eventually switch over to server 2. The
RTT-based mechanism would not switch over in this case,
since the threshold that prevents constant switching between
servers is not reached.
The new approach is meant to handle scenarios where the
network is generally fast, but it would still be beneficial
from a network topology point of view if the clients switch
to the slightly faster server, assuming it is closer to the
client and thus less network segments are burdened.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
replace epoll with poll.
We now don't assume that a signal equals a single fd (eventfd on Linux).
The next step would be to create a version of signal.c that uses a pipe
internally, so it can be used on other platforms, like *BSD.
This is also the reason epoll was replaced with poll in uplink.c
|
|
|
|
|
|
|
|
|
|
| |
This was a wrong decision made long time ago, and it's broken in
certain scenarios (eg. two servers serving from same NFS mount).
Also it's of limited use anyways since it only supportes ASCII and
would ignore umlauts, so blöd and BLÖD would still be considered
two different images.
So if you relied on this "feature" in any way, be careful when
updating.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Disable panic timeout that reports errors to block layer by default
- Get rid of "is_server" used by old proxy mode, introduce
"honor_server_alts" that just controls whether we use alts provided by
the server
- Allow switching servers when we only have 3 RTT measurements
- If using alts provided by server, don't ignore those that come from
other servers than the initial one
|
|
|
|
|
|
|
|
|
| |
Before, we would wait endlessly if there is a pending
read request that doesn't get answered (e.g. because
the server went down. That means you couldn't exit
the client in that case. Now we use a signal handler
to set a flag which causes the read to bail out and
return EIO.
|
|
|
|
|
|
|
| |
A run with gprof revealed that background replication is a huge CPU hog.
The block selection was very slow and has been improved a lot.
Minor improvements were made to other functions that scan the cache map
of an image and are thus relatively slow.
|
| |
|
|
|
|
| |
So you can cancel image loading on startup via Ctrl-C
|