History log of /dflybsd-src/sys/vfs/hammer2/hammer2_msgops.c (Results 1 – 12 of 12)
Revision Date Author Comments
# c12cfc4a 11-Jun-2021 Tomohiro Kusumi <tkusumi@netbsd.org>

sys/vfs/hammer2: Remove unused (add used) header includes


# b1999ea8 28-Mar-2020 Sascha Wildner <saw@online.de>

kernel: Remove <sys/n{amei,lookup}.h> from all files that don't need it.


# 68b321c1 16-Mar-2018 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - More involved refactoring of chain_repparent, cleanup

* Remove unused locking flags (remove the NOLOCK and NOUNLOCK
features).

* Add HAMMER2_RESOLVE_NONBLOCK to hammer2_chain_lock() for

hammer2 - More involved refactoring of chain_repparent, cleanup

* Remove unused locking flags (remove the NOLOCK and NOUNLOCK
features).

* Add HAMMER2_RESOLVE_NONBLOCK to hammer2_chain_lock() for use
only by hammer2_chain_getparent() and hammer2_chain_repparent().

* Refactor hammer2_chain_getparent() and hammer2_chain_repparent().
Add a hot-path that uses HAMMER2_RESOLVE_NONBLOCK. If this fails
we now do a much more involved tracking operation via 'reptrack'
to deal with races against indirect block deletions.

* Cleanup the copyright messages.

* Fix an issue where a sync could be held-up indefinitely by
ongoing overlapping modifying operations.

* Install a proper initial inode count when creating a snapshot.

* Fix a deadlock in checkdirempty(). A chain lock was winding
up being ordered incorrectly.

show more ...


# 8138a154 19-Feb-2014 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Refactor flush mechanics

* Greatly simplify and reduce special cases in the flush code

* Remove the multi-layer rbtree and replace with two discrete rbtree's
(rbtree and dbtree) represe

hammer2 - Refactor flush mechanics

* Greatly simplify and reduce special cases in the flush code

* Remove the multi-layer rbtree and replace with two discrete rbtree's
(rbtree and dbtree) representing the live state and one linked list (dbq)
representing set-aside deleted chains that are not part of the live state.

* Cleanup some debugging junk, add more debugging junk.

* Separate flushing state flags and TIDs into their own fields instead of
trying to use the live state flags and bref TIDs.

* Simplify transaction TID tracking.

show more ...


# 0dea3156 28-Apr-2013 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Major restructuring, part 1/several

* This breaks a lot of things. The next few commits will get it all
working again.

* Significantly rework the data structures. Instead of embedding

hammer2 - Major restructuring, part 1/several

* This breaks a lot of things. The next few commits will get it all
working again.

* Significantly rework the data structures. Instead of embedding the
RBTREE for a chain's children in the chain, the chain instead points
to a secondary structure containing the RBTREE.

Chains can no longer be moved within the in-memory topology. That is,
if a file is renamed or a block is resized or a block is moved into or
out of an indirect block, the in-memory chain representing that block
is NOT moved. Instead, the in-memory chain is marked deleted and a
copy is created at the new location. Both the old and the new chain
reference the same secondary structure and thus share the same RBTREE,
and reference the same media storage.

In addition, chain->duplink points from the deleted chain to its relocated
copy and maintains a reference on the target until the deleted chain is
deallocated. It is possible for the linked list to span more than one
element.

This link will soon be used to retarget inode->chain pointers (which can
wind up pointing to stale data) and also eventually effect chain->parent
traversals (real parent becomes chain->parent->[duplink*]). A rethink
might be needed down the line.

* This will allow the flush code to run 100% asynchronous from the
frontend and still be able to flush to a synchronization point no
matter how complex a set of changes have occured to the filesystem
concurrent to the flush (but after its synchronization point).

* The change also stabilizes chain->parent, which simplifies quite a bit
of code.

* Simplify nearly all the hammer2_chain_*() API functions, and other
functions.

* Add a hammer2_trans (transaction) structure to keep track of modifying
transactions. This will be flushed out later and used to detect flush
synchronization points. It currently contains the transaction id.

* Start adding API infrastructure and start reworking the flush and other
tree-modifying code to work under the new abstraction.

show more ...


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

hammer2 - dmsg blockdev work (cleanup)

* Cleanup


# 3a5aa68f 25-Oct-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Messaging layer separation work part 3

* Move more hammer2 vfs message code into kern_dmsg.c, renaming and
implementing callbacks as needed.

* Move hammer2_icrc.c (the iscsi crc support

hammer2 - Messaging layer separation work part 3

* Move more hammer2 vfs message code into kern_dmsg.c, renaming and
implementing callbacks as needed.

* Move hammer2_icrc.c (the iscsi crc support) to libkern/icrc32.c

show more ...


# 5bc5bca2 25-Oct-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Messaging layer separation work part 1

This work is to separate the network messaging format and various
lower layers out from hammer2 and into their own 'dmsg*' files.

* Factor low level

hammer2 - Messaging layer separation work part 1

This work is to separate the network messaging format and various
lower layers out from hammer2 and into their own 'dmsg*' files.

* Factor low level messaging structures into sys/dmsg.h

* Rename HAMMER2 -> DMSG.

show more ...


# 10c86c4e 10-Aug-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Message routing work

* Further API simplification

* Start adding router infrastructure to the kernel VFS

* Looks like we will need a 'source' and 'target' field in
the message header a

hammer2 - Message routing work

* Further API simplification

* Start adding router infrastructure to the kernel VFS

* Looks like we will need a 'source' and 'target' field in
the message header after all (replaces the single 'spanid' field),
in order to track the reply VC as a message is relayed.

show more ...


# 81666e1b 08-Aug-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - userland API / span work

* Fix a stall bug in the streaming write code

* Add some pretty-printing support for debug output. Also remove
a ton of debug messages.

* Add a remote shell '

hammer2 - userland API / span work

* Fix a stall bug in the streaming write code

* Add some pretty-printing support for debug output. Also remove
a ton of debug messages.

* Add a remote shell 'tree' command to dump the spanning tree.

* Cleanup some of the state handling and error codes.

show more ...


# 8c280d5d 04-Aug-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Flesh out span code, API cleanups

* Cleanup the transactional APIs and add a few functions to help with
simple (error code only) message replies.

* Better message protocol layering for

hammer2 - Flesh out span code, API cleanups

* Cleanup the transactional APIs and add a few functions to help with
simple (error code only) message replies.

* Better message protocol layering for both the kernel and userland code.

* Kernel now opens a LNK_CONN transaction which will enable the SPAN
protocol on the link and also serve to install a PFS filter (which is
not yet implemented).

Upon success the kernel then initiates the SPAN.

Basically for the kernel:

send LNK_CONN
wait for streaming reply (transaction remains open on both sides)
send LNK_SPAN

TODO: Receive/track LNK_SPANs, each representing a virtual circuit.

TODO: Track LNK_SPANs that match our PFS.

TODO: Issue higher level protocol transaction messages over these
circuits based on VNOPS, caching, mirroring, etc.
(transactional failures can occur when the LNK_SPAN state
changes, forcing a retry, etc).

* Userland now accepts the LNK_CONN and uses the open transaction to
install tracking structures for those connections participating in
the SPAN protocol.

* Userland now installs tracking structures for received SPAN messages.

* Start fleshing out the userland side of the SPAN relay/transmit code.
This will involve yet more structures to track which SPANs are being
relayed over each connection, so changes can be propagated (not yet
implemented).

For userland the TODO is very large so no point iterating it here.

* Kernel now accepts DBG_SHELL replies (basically debug output messages)
and will kprintf() them. DBG_SHELL commands not yet accepted by the
kernel.

show more ...


# 9b8b748f 13-Jun-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Implement and test first SPAN message transaction.

* The hammer2 VFS now sends a dummy SPAN message to the hammer2 service
daemon. SPANs are used to register capabilities (primarily PFS

hammer2 - Implement and test first SPAN message transaction.

* The hammer2 VFS now sends a dummy SPAN message to the hammer2 service
daemon. SPANs are used to register capabilities (primarily PFS services
and PFS consumers). SPAN messages are left as open transactions for the
duration of the link and/or when the graph changes (mainly a spanning
tree mechanic that will be coded as a function of the hammer2 service
daemon in userland.

* Basic open transaction and simple reply message tested. Use a dummy
message for testing.

* hammer2_msg_write() detects CREATE, allocates state, and assigns a
msgid. state allocation moved out of hammer2_state_msgtx() and
into hammer2_msg_write() so we can calculate the proper CRCs.

* Fixed a couple of expected bugs. The userland code was swapping
msg_hdr.source and msg_hdr.target in the reply, but I adjusted the
message spec to NOT do that (meaning any message routing has to select
{source} or {target} based on whether the REPLY bit is set or not.

* Memory seems to get cleaned up properly, so far.

show more ...