History log of /dflybsd-src/lib/libdmsg/msg.c (Results 1 – 25 of 25)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: v6.4.0, v6.4.0rc1, v6.5.0, v6.2.2, v6.2.1, v6.3.0
# a988b43e 31-Oct-2021 Matthew Dillon <dillon@apollo.backplane.com>

libdmsg - Get the encryption operational again

* Currently encrypts/decrypts, but the algorithm is really just a
place-holder for something better. It does not use any openssl
algos beyond basi

libdmsg - Get the encryption operational again

* Currently encrypts/decrypts, but the algorithm is really just a
place-holder for something better. It does not use any openssl
algos beyond basic public key exchange, session key exchange, and
raw aes-256-gcm encryption with a block IV increment to prevent replay
attacks.

* Note that in the final protocol there will be two verifiers embedded
in the dmsg itself, rather than tacked on via the transport. One is
the 32-bit header crc (there is also an aux-data crc), and the second
is a 64-bit verifier that the link-level is intended to replace and check.
The dmsg also has a signature and 24 random bits to mix things up.

show more ...


Revision tags: v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3
# 157f2a25 19-Aug-2019 Tomohiro Kusumi <kusumi.tomohiro@gmail.com>

lib/libdmsg: Fix compile warning on Linux distros

Appeared since 030e3428e0c23c47cef4dfab51f988a8fa665d19.

--
msg.c:202: warning: pointer targets in passing argument 1 of 'atomic_set_int' differ in

lib/libdmsg: Fix compile warning on Linux distros

Appeared since 030e3428e0c23c47cef4dfab51f988a8fa665d19.

--
msg.c:202: warning: pointer targets in passing argument 1 of 'atomic_set_int' differ in signedness
atomic.h:129: note: expected 'volatile u_int *' but argument is of type 'int *'

show more ...


Revision tags: v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc, v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5
# 5ab1caed 10-Mar-2015 Matthew Dillon <dillon@apollo.backplane.com>

dmsg - Formalize most of the debugging output, cleanup, fix uninit bug

* Macroize and formalize most of the debugging output.

* Add LNK_PING support.

* Fix a bug in kdmsg_iocom_uninit(). The RX t

dmsg - Formalize most of the debugging output, cleanup, fix uninit bug

* Macroize and formalize most of the debugging output.

* Add LNK_PING support.

* Fix a bug in kdmsg_iocom_uninit(). The RX thread can stall reading
from the pipe and never wakeup to see the KILLRX flag if no traffic
comes in.

To deal with this kdmsg_iocom_uninit() sends a LNK_PING over the link,
then gives the threads 10 seconds to shutdown nicely. If they do not
the pipe descriptor is not-so-nicely shutdown().

show more ...


# 0a9eefca 09-Mar-2015 Matthew Dillon <dillon@apollo.backplane.com>

dmsg - Stabilization work

* Refactor the circuit failure handling code. When a connection is lost
circuits running through that connection and all sub-circuits/states
(recursively) are aborted.

dmsg - Stabilization work

* Refactor the circuit failure handling code. When a connection is lost
circuits running through that connection and all sub-circuits/states
(recursively) are aborted. This will propagate through the graph and
there are plenty of edge cases where a failure may be propagating in
one direction and a request in the other direction.

The library is responsible for providing missing transaction closures
when circuits and states fail.

* Add code to handle circuit failure races against newly created messages.
The STATE_DYING flag is now inherited by the newly created message from
its parent.

* The state structure on receive is now updated before the callback is
made so it can be atomic with the lock, instead of after.

* Lots of debugging added and some cleanup.

show more ...


Revision tags: v4.0.4
# a06d536b 03-Mar-2015 Matthew Dillon <dillon@apollo.backplane.com>

dmsg - Stabilization work

* Add a refs field to dmsg_state and kdmsg_state for retention and
disposal.

* Separate out the tracking of state->subq and the state RB trees.

* Greatly simplify the i

dmsg - Stabilization work

* Add a refs field to dmsg_state and kdmsg_state for retention and
disposal.

* Separate out the tracking of state->subq and the state RB trees.

* Greatly simplify the iocom shutdown code and functions related
to handling communications failures. When iterating states for
shutdown, which requires simulating a received failure message,
we can now simply iterate via state->subq.

* Greatly simplify how the simulated failures are generated and
handled (See dmsg_msg_simulate_failure()). This is probably the
most complex part of the library.

* Fix a memory leak in kern_dmsg.c.

* Replace xdisk's per-softc token with a lockmgr lock. Atomicy
has to be guaranteed across blocking conditions in certain cases
and it was easier to simply use a lock for everything.

Cleanup the locking.

* Ripout the shutdown check in the I/O path, which can deadlock
the disk management threads. This will need to be revisited
as it means that /dev/xa* and /dev/serno* devices remain in
/dev after a link failure even when there are no opens on the
device.

* Add the B_FAILONDIS flag to struct buf. This flag allows the disk
probe code to tell xdisk that it is ok for the I/O to fail, allowing
xdisk to discard I/Os that would otherwise block or deadlock the
disk probe code when the related network connection is lost.

show more ...


# 7adbba57 01-Mar-2015 Matthew Dillon <dillon@apollo.backplane.com>

libdmsg - Fix incomplete write bug

* Fix a bug where a partial non-blocking write of encrypted data does not
properly set the WREQ flag if the related dmsg has been disposed of.
This could cause

libdmsg - Fix incomplete write bug

* Fix a bug where a partial non-blocking write of encrypted data does not
properly set the WREQ flag if the related dmsg has been disposed of.
This could cause random stalls of the link.

* Fix an errno-handling bug.

* Cleanup and debugging.

show more ...


# e96cef49 28-Feb-2015 Matthew Dillon <dillon@apollo.backplane.com>

libdmsg - Fix memory leak

* Fix a memory leak in the message relay code. When relaying a message
we just transfer the aux_data pointer to the relay message. The
allocation of the relay message

libdmsg - Fix memory leak

* Fix a memory leak in the message relay code. When relaying a message
we just transfer the aux_data pointer to the relay message. The
allocation of the relay message was also allocate aux_data space which
was getting thrown away and not freed.

show more ...


# f2239a4e 28-Feb-2015 Matthew Dillon <dillon@apollo.backplane.com>

libdmsg - Fix buffer indexing bug in crypted path

* Fix a buffering index bug in the crypted path which causes a buffer
overrun and/or implodes the connection on a protocol error.


# 024de405 28-Feb-2015 Matthew Dillon <dillon@apollo.backplane.com>

libdmsg - Fix buffer overrun

* Large messages (generally large data payloads) could overrun the FIFO
buffer. e.g. dd if=/dev/xa<blah> of=/dev/null bs=32k

* Fix by chunking up large payloads.


Revision tags: v4.0.3, v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc
# 323c0947 05-May-2014 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - dmsg stabilization

This is a general stabilization pass testing xdisk resumption on various
communications failures (killing the local or remote hammer2 service demon).

* Simulate failure

hammer2 - dmsg stabilization

This is a general stabilization pass testing xdisk resumption on various
communications failures (killing the local or remote hammer2 service demon).

* Simulate failures on recursive transactions in a bottom-up fashion

* bcmp() does not return an inequality (neg, zero, or positive). It
returns only 0 or 1. Change fs_label RBTREE test to strcmp()

* ref-count the state structure, use dmsg_state_hold()/dmsg_state_drop()
to control it. Fix at least one memory leak.

* Consolidate simulated transaction failure core into a helper
function dmsg_msg_simulate_failure().

* Clean up the tx state on the front-end after the msg has extracted
necessary information from it, instead of in the transmit thread.
This is so the state fields are updated synchronously and not delayed
by the transmit queue.

* Change xdisk's error test to avoid accidently failing a BIO due to
a communications issue (verses an actual IO error on the remote physical
disk).

* Remove some invalid assertions, add assertions.

show more ...


# d30cab67 05-May-2014 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Retool dmsg mechanics to improve virtual circuit design 2/2

* Use transaction stacking to effectively connect resources to consumers.
Issuing a transaction over a received SPAN effective

hammer2 - Retool dmsg mechanics to improve virtual circuit design 2/2

* Use transaction stacking to effectively connect resources to consumers.
Issuing a transaction over a received SPAN effectively creates a virtual
circuit to the originator.

* The hammer2 service demon (userland) is currently being used to route,
but direct kernel<->kernel socket connections are now theoretically
possible for later performance work. Current performance is going
to be low due to layering.

* Get subr_diskiocom and the xdisk driver mostly working again. The
code is a lot cleaner but still needs considerable stability work and
better unwinding during failure conditions.

* Start work on hammer2<->hammer2 communications.

show more ...


# 1b8eded1 23-Apr-2014 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Retool dmsg mechanics to improve virtual circuit design 1/2

* Rip-out the circuit structures and forging code. These changes simplify
the DMSG code considerably.

* Retool the core comm

hammer2 - Retool dmsg mechanics to improve virtual circuit design 1/2

* Rip-out the circuit structures and forging code. These changes simplify
the DMSG code considerably.

* Retool the core command/response messaging mechanics to allow either
side of a transaction to initiate commands and receive responses.

This means we cannot use DMSGF_REPLY to determine whether the transmit-side
or receive-side state RBTREE holds the msgid. Instead we add two more
flags DMSGF_REVTRANS and DMSGF_REVCIRC to tell the receiver which RBTREE
holds the msgid and/or circuit id.

* Retool to allow transaction stacking. Sub-transactions can now run under
their parents.

* Retool the transaction code to provide virtual circuit functionality
through the use of transaction stacking.

With these changes, the normal SPAN mechanism which operates using
open transactions can also be used to route messages over the SPAN.
There is no longer a need to forge a return path because sub-transaction
commands can now be initiated 'out' over an active, received SPAN
transaction.

This part is not completely working yet, it needs the actual routing
code and some adjustments to the SPAN mechanism to prevent path ripups
from interfering with any in-progress transactions. Ultimately the
availability of a new path would have two be detected by the end points
so new 'connections' can be forged over the new, better path.

show more ...


# 8e226bc8 21-Apr-2014 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - more dmsg/separation work

* More separation work in libdmsg, kern_dmsg.c, and kernel dmsg consumers.

* subr_diskiocom.c should no longer need hammer2_disk.h (sys/dmsg.h)
for the kernel

hammer2 - more dmsg/separation work

* More separation work in libdmsg, kern_dmsg.c, and kernel dmsg consumers.

* subr_diskiocom.c should no longer need hammer2_disk.h (sys/dmsg.h)
for the kernel build.

* Add dmsg->tcmd to smooth some switch() use cases.

show more ...


# 01e43224 19-Apr-2014 Matthew Dillon <dillon@apollo.backplane.com>

libdmsg - refactor remove hammer2-specific code

* Remove hammer2-specific code.

* Refactor the callback API to allow the hammer service code to handle
the H2-specific LNK_CONN commands... mostly

libdmsg - refactor remove hammer2-specific code

* Remove hammer2-specific code.

* Refactor the callback API to allow the hammer service code to handle
the H2-specific LNK_CONN commands... mostly VOLCONF.

show more ...


Revision tags: v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.4.3, v3.4.2, v3.4.1, v3.4.0, v3.4.0rc, v3.5.0
# 7078f92b 12-Jan-2013 Johannes Hofmann <johannes.hofmann@gmx.de>

merge


Revision tags: v3.2.2
# 98126869 05-Dec-2012 Matthew Dillon <dillon@apollo.backplane.com>

cluster - Stabilization

* Fix disconnect/reconnect sequence for autoconn (/etc/hammer2/autoconn).
The pipe used to signal termination of the iocom_core() was not supposed
to be closed by iocom_d

cluster - Stabilization

* Fix disconnect/reconnect sequence for autoconn (/etc/hammer2/autoconn).
The pipe used to signal termination of the iocom_core() was not supposed
to be closed by iocom_done().

* The shutdown code now simply sets DMSG_IOCOMF_EOF instead of trying to
shutdown() the socket.

* Fix double mutex lock in dmsg_msg_alloc().

show more ...


# 747e3bc9 05-Dec-2012 Matthew Dillon <dillon@apollo.backplane.com>

cluster - misc cleanup

* Rename the routing function to something that I remember.


# 2892d211 04-Dec-2012 Matthew Dillon <dillon@apollo.backplane.com>

cluster - Improve hammer2 connect directive, add /etc/hammer2/autoconn

* Improve the hammer2 connect directive, fixing a socket descriptor reuse
race.

* Monitor the file /etc/hammer2/autoconn whi

cluster - Improve hammer2 connect directive, add /etc/hammer2/autoconn

* Improve the hammer2 connect directive, fixing a socket descriptor reuse
race.

* Monitor the file /etc/hammer2/autoconn which contains a list of hosts
the hammer2 service demon whould automatically maintain connections to.

* Adjust the dmsg_master_service() API to also allow an alternative
signalling descriptor and callback to be specified. This simplifies
forced connection terminations.

* Fix descriptor leak in dmsg_master_service() on closure.

show more ...


# a2179323 04-Dec-2012 Matthew Dillon <dillon@apollo.backplane.com>

cluster - more libdmsg work

* Fix numerous bugs, including a nasty edge case in the encryption code.

* Do a better job locking things (state structures still need help).


# 8d6d37b8 03-Dec-2012 Matthew Dillon <dillon@apollo.backplane.com>

cluster - Major kernel component work (diskiocom, xdisk, kdmsg)

* Major implementation and stabilization work. Fix lots of bugs,
improve the AUTO flags and APIs.

* xdisk and diskiocom are now op

cluster - Major kernel component work (diskiocom, xdisk, kdmsg)

* Major implementation and stabilization work. Fix lots of bugs,
improve the AUTO flags and APIs.

* xdisk and diskiocom are now operational for the first time.

xdisk is a consumer of remote block devices. You pass it one end of
a pipe and use an ioctl to create /dev/xa* devices. The kernel's
nominal disk management subsystem handles /dev/serno/* and will also
probe the /dev/xa* devices to create the slices.

diskiocom is a block device service. An ioctl is used to connect a
raw disk device to the network via a pipe.

* The hammer2 service demon ties the two together over the network.

* Initial testing with a local hammer2 service daemon looping da0 to xa0
succeeded, ~46MB/sec unoptimized using dd.

show more ...


# f306de83 03-Dec-2012 Matthew Dillon <dillon@apollo.backplane.com>

cluster - circuit tracking, bug fixes

* Misc virtual circuit tracking work and bug fixes


# 0d20ec8a 30-Nov-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - cluster / libdmsg circuit work

* Major work on the virtual circuit code. Note there are still some thread
races.

* Major work on the spanning tree code to allow for future symmetric

hammer2 - cluster / libdmsg circuit work

* Major work on the virtual circuit code. Note there are still some thread
races.

* Major work on the spanning tree code to allow for future symmetric
pathing support.

* fs_label is now part of the RB tree compare, along with pfs_fsid.
(e.g. the serial number for BLK protocol services).

* Rip out the 'router' structure, replace with the 'circuit' structure.
Embed circuit0 in the iocom.

show more ...


# 3b76886b 26-Oct-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - dmsg blockdev work (cleanup)

* Cleanup


# 11f7caf4 25-Oct-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Messaging layer separation work part 5

* Fix debug shell callback issue


# 0c3a8cd0 25-Oct-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Messaging layer separation work part 2

* Move most of the low-level message handling from the hammer2 utility
to a new library called libdmsg.

* Move additional message headers from the

hammer2 - Messaging layer separation work part 2

* Move most of the low-level message handling from the hammer2 utility
to a new library called libdmsg.

* Move additional message headers from the hammer2 vfs code to libdmsg,
cleanup.

* Rename and reorganize a ton of stuff.

show more ...