| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Similar logic already exists in the fuse client:
Count how many times in a row a server was fastest when
measuring RTTs, and lower the switching threshold
more the higher the count gets.
|
| |
|
|
|
|
|
|
| |
Convert dnbd3_host_t to struct sockaddr immediately when
adding alt servers, so we don't have to convert it every time
we establish a connection. Additionally we can now use %pISpc
in printf-like functions instead of having if/else constructs
whenever we want to print an address.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously disconnect was protected against concurrent calls, but connect
wasn't. It was easy to crash the kernel when calling connect and
disconnect IOCTLs in a tight loop concurrently.
A global lock was introduced to make sure only one caller can change the
connection state at a time. dev->connection_lock needs to be aquired
when calling dnbd3_net_connect or _disconnect.
This atomic_t based locking mechanism should be turned into a mutex in a
next step, relying on mutex_trylock for cases where we don't have the
cmpxchg-schedule() loop.
Along the way it was noticed that the send/receive timeouts don't apply
to kernel_connect, which might have been the case in older 3.x kernel
versions. A crude workaround using nonblocking connect has been
introduced to emulate this, but a clean solution for this is welcomed.
Also, devices are now properly closed on module unload.
|
| |
|
|
|
|
| |
This patch adds the feature to manually switch the dnbd3-server to a
specified server. The switching is implemented by the use of the ioctl
call SWITCH.
|
| |
|
|
|
|
|
| |
This patch changes the probing logic to select the first available
dnbd3-server submitted by the ioctl OPEN call. All other specified
dnbd3-servers are added to the alternative server list and do not have
to be available.
|
| |
|
|
|
|
|
|
|
|
| |
The ioctl OPEN call for DNBD3 devices exposed by the dnbd3 Linux kernel
module, is extended with a fixed array of dnbd3 hosts. The fixed array
allows the dnbd3-client to submit host information (IP address and port)
of multiple dnbd3-servers. This information is used to probe all
submitted dnbd3-servers and add them to the alternative dnbd3-server
list. If at least one dnbd3-server is not reachable, the OPEN ioctl call
will abort with an error code.
|
|
|
This change restructures the source code directories, separates shared
form non-shared application code and adds CMake dependencies. These
dependencies allow the tracking of changes and trigger a rebuild of
those build targets where changed files are involved.
WARNING: Note that the support of the DNBD3_SERVER_AFL build option is
not supported yet. Thus, the option should be never turned on.
|