summaryrefslogtreecommitdiffstats
path: root/src/kernel/dnbd3_main.h
Commit message (Collapse)AuthorAgeFilesLines
* [KERNEL] Add support for Linux kernels without blk-mq (e.g. CentOS 7)Manuel Bentele2021-06-161-1/+22
|
* [KERNEL] Removes duplicate word 'of' in license headersManuel Bentele2021-04-161-1/+1
|
* [KERNEL] Implement best_count logic for load balancingSimon Rettberg2021-03-261-1/+3
| | | | | | | 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.
* [KERNEL] Use sockaddr instead of dnbd3_host_t where possibleSimon Rettberg2021-03-241-9/+16
| | | | | | | | 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.
* [KERNEL] Synchronous add/remove of alt-servers via IOCTLSimon Rettberg2021-03-231-5/+9
|
* [KERNEL] Refactor code to satisfy Linux kernel code styleManuel Bentele2021-03-121-12/+12
|
* [KERNEL] Fix several connect/disconnect race conditionsSimon Rettberg2020-11-191-1/+2
| | | | | | | | | | | | | | | | | | | 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.
* [KERNEL] add manual switching of dnbd3-server to specified serverManuel Bentele2020-11-101-0/+3
| | | | | | 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.
* [KERNEL]: change probing logic to select first available serverManuel Bentele2020-11-091-1/+1
| | | | | | | 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.
* [KERNEL, CLIENT]: submit and probe multiple dnbd3-server with ioctl OPENManuel Bentele2020-11-061-1/+0Star
| | | | | | | | | | 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.
* [BUILD] rewrite CMake build system to track changes of source filesManuel Bentele2020-10-161-0/+88
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.