| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Work towards simplifying the iscsi implementation has begun. Goals are:
- Simpler and easier to understand resource/lifecycle management of
allocations
- Single-threaded architecture, making locking unnecessary
- Moving as many allocations as possible to the stack
- Making the call-stack more shallow for easier tracking of code flow
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- R2T handling
- Portal groups
- Fixes to login phase handling
- Code refactoring
- Remove obsolete PDU fields
- SCSI INQUIRY handler
- Persistent Reservation support
- Implement SCSI block based operations
- Implement other needed SCSI ops
- Disks are now reported as read-only
- Doxygen tags
- Bugfixes for crashes, memleaks, etc.
|
| |
|
|
| |
Also a couple bug fixes and other minor improvements
|
| |
|
|
|
| |
- globals, portal groups, portals, ports, etc.
- Finally, fixed some bugs.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Bringing up a proxy that has been offline for some time will trigger
lots of loads and replication on other proxies when booting up again.
Just wait until a client actually needs an image before establishing
an uplink connection.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Any request from a client being relayed to an uplink server will have
its size extended to this value. It will also be applied to background
replication requests, if the BGR mode is FULL.
As request coalescing is currently very primitive, this setting should
usually be left diabled, and bgrWindowSize used instead, if appropriate.
If you enable this, set it to something large (1M+), or it might have
adverse effects.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Incoming requests from clients might actually be prefetch jobs from
another downstream proxy. Don't do prefetching for those, as this would
cascade upwars in the proxy chain (prefetch for a prefetch of a prefetch)
Incoming requests might also be background replication. Don't relay
those if we're not configured for background replication as well.
|
| |
|
|
|
|
|
|
|
| |
There is a race condition where we process the next request from the
same client faster than the OS will schedule the async prefetch job,
rendering it a NOOP in the best case (request ranges match) or fetching
redundant data from the upstream server (prefetch range is larger than
actual request by client). Make prefetching synchronous to prevent this
race condition.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change links the dnbd3-server with 'libatomic' to add support for
atomic operations not supported by hardware (especially 32-bit hardware
architectures, such as ARM). Thus the dnbd3-server can also run on a
Raspberry Pi 1 running Rasperry Pi OS.
Note that the dnbd3-server is still linked to the libatomic, even if the
hardware supports atomic operations. In this case, the compiler resolves
atomic operations and replaces them automatically with specific built-in
functions. This unnecessary linkage can be removed in the future if the
GCC supports an upcoming option called automatic linking of libatomic
(--enable-autolink-libatomic).
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
saveLoadAllCacheMaps() is called frequently, and a 'full' run can take
some time. If we only update the nextSave timestamp when we're done, we
might already have a concurrent call to the function, which will also do
a 'full' run, since the timestamp is not updated yet. This doesn't break
anything, but leads to even more disk activity, which is probably
already high, given that the previous run is not done yet.
|
| |
|
|
|
| |
This patch sets the programming languages of each CMake project to C. With
this change, CMake does not search for an unused C++ compiler anymore.
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch adds the following CMake targets
- package
- source
to build bundeled packages. Those packages contain either all built
binary artifacts or all source files for source code distribution. Both
CMake targets are available in Release build configuration.
|
| |
|
|
|
| |
The afl-fuzz support for the dnbd3-server requires an AFL C compiler
like afl-gcc and can be enabled with the CMake option DNBD3_SERVER_AFL.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
There was a logic bug that would favor a remotely looked up image rid,
even if we already found a higher revision locally.
|
| | |
|
| |
|
|
|
|
| |
Greatly improves performance when reading from the local disk cache, and
additionally avoids having everything in the fs cache twice (disk view
and fuse view).
|
| | |
|
| | |
|
| | |
|
| | |
|