History log of /dragonfly/sbin/newfs_hammer2/newfs_hammer2.c (Results 51 – 65 of 65)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# cdfd0a3e 24-Sep-2013 Matthew Dillon <dillon@backplane.com>

hammer2 - Add hammer2 boot support

* Add hammer2 boot loader support. The hammer2 boot loader accesses the
hammer2 mount starting at the super-root. To use hammer2 boot support
you need to hav

hammer2 - Add hammer2 boot support

* Add hammer2 boot loader support. The hammer2 boot loader accesses the
hammer2 mount starting at the super-root. To use hammer2 boot support
you need to have a PFS called 'boot', which will be seen as "/boot" by
the boot loader.

The 'boot' PFS can be created either by creating a boot-specific H2
partition with 'newfs_hammer2 -L boot ...', or by using
'hammer2 pfs-create boot' to create a PFS called 'boot'.

You can access any super-root if desired.

* Since boot is a super-root you can mix boot PFS's and other PFS's on the
same hammer2 filesystem, including creating a boot PFS far later on.

* WARNING!!!!! The 'boot' PFS must be configured without compression.
i.e. 'hammer2 setcomp autozero /boot' (assuming you've mounted it on /boot),
before you install anything. The newfs_hammer2 utility will automatically
handle this if you specify a label name of 'boot' (i.e. -L boot).

* WARNING!!!!! The BIOS may not be able to reliably access very high
sector numbers on large hard drives, so to be safe we recommend creating
a small 'a' partition anyway, unless the drive / main hammer2 filesystem
is small enough to not cause problems.

* Add %qx support to boot2's mini printf().

* Fix ipdata->comp_algo propagation bug in hammer2_inode_create()

* newfs_hammer2 and the pfs_create ioctl will set comp_algo to AUTOZERO
for PFS's called "boot" automatically.

show more ...


# f481450f 23-Sep-2013 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Cleanup and bugfix pass to hammer2 setcomp paths

* HAMMER2 will attempt to use LZ4 compression by default now.

* hammer2 setcomp now accepts text labels for the compression type and
acc

hammer2 - Cleanup and bugfix pass to hammer2 setcomp paths

* HAMMER2 will attempt to use LZ4 compression by default now.

* hammer2 setcomp now accepts text labels for the compression type and
accepts a compression level of 0 to set the default, which is simply
passed through to the VFS.

* Specify force and recursion flags in hammer2's main options rather than
after the setcomp command.

* Allow a list of paths to be specified rather than just one.

* The HAMMER2IOC_INODE_SET ioctl now only sets field elements which can
actually be modified by userland i.e. only the comp_algo field. It
used to set everything, including the indirect block table.

* Do not modify the hammer2_inode if the compression method is not being
changed.

* Change the zero-block testing logic a little, with related code cleanups.

show more ...


Revision tags: v3.4.3
# 70585eea 04-Jun-2013 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Adjust newfs_hammer2 for recent media changes

* Adjust newfs_hammer2 for recent media changes. The freemap is now based
in the volume header with a blockref set instead of a single bloc

hammer2 - Adjust newfs_hammer2 for recent media changes

* Adjust newfs_hammer2 for recent media changes. The freemap is now based
in the volume header with a blockref set instead of a single blockref.

show more ...


Revision tags: v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0
# 9061bde5 30-Jan-2013 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Start working on the freemap (note: freemap not yet operational)

* hammer2 show now tries to dump all four volume headers

* Minimum storage allocation chunk size is 1K, increase MIN_RADIX

hammer2 - Start working on the freemap (note: freemap not yet operational)

* hammer2 show now tries to dump all four volume headers

* Minimum storage allocation chunk size is 1K, increase MIN_RADIX and
MIN_ALLOC appropriately.

* Preliminary reserved block mappings for the freemap indirect and bitmap
blocks.

* Preliminary freemap design will use normal indirect blocks (but with
a different bref.type name). The check area of the bref will be used to
store additional freemap hints.

The volume header will contain a blockref to the root of the freemap,
and newfs_hammer2 now initializes this blockref.

* Bring major hammer2_disk.h media structure comments up to snuff.

* Formalize blockref.methods and set proper defaults. This field contains
the crc/check and compression methods for a blockref.

show more ...


Revision tags: v3.2.2
# 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 ...


Revision tags: v3.2.1, v3.2.0, v3.3.0, v3.0.3
# 2063f4d7 12-Aug-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Add peer_type field to LNK_CONN and LNK_SPAN

* Adds a peer_type field allowing connections to identify what they are
(i.e. a HAMMER2 mount, a CLUSTER controller, a BLOCK device controlle

hammer2 - Add peer_type field to LNK_CONN and LNK_SPAN

* Adds a peer_type field allowing connections to identify what they are
(i.e. a HAMMER2 mount, a CLUSTER controller, a BLOCK device controller).

Rename the pfs_type field in the volume header, which never made much
sense, to peer_type, which now does make sense though for the moment
the only value it can have is HAMER2_PEER_HAMMER2.

* Filter HAMMER2_PEER_HAMMER2 peer types by pfs_clid to reduce unnecessary
LNK_SPAN traffic being transmitted to a HAMMER2 mount (in the kernel).

* Minor cleanup.

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 ...


# 9b014aea 15-May-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - last_tid renamed to mirror_tid in volume header

* The volume header needs a discrete field to hold the highest-propagated
mirror_tid value.


# 62efe6ec 12-May-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Crypto handshake work for message stream

* 'hammer2 debug' can now take a destination host argument (and will
default to localhost). This is the debug shell connection.

* Add 'hammer2

hammer2 - Crypto handshake work for message stream

* 'hammer2 debug' can now take a destination host argument (and will
default to localhost). This is the debug shell connection.

* Add 'hammer2 rsainit' to initialize hammer2's keys /etc/hammer2/rsa.*

* Change the 'hammer2 node' directive to 'hammer2 service'.

* Flesh out the initial public key exchange handshake. Currently the
handshake consists of a symmetric 512 byte write and 512 byte read.
The data is encrypted with our private key and the remote end's public
key.

Currently a very simple verifier has been constructed, but we will
ultimately want to use sha or md5 or something like that for the
verifier.

Since I am doing a double-encryption here the first stage encrypt
has to check that the result does not exceed the modulus (typically
bit 7 of the first byte must be zero). If it does we increment
a 32 bit quantity in our pad*[] area and retry until we get a good
result.

* The exchange is used to calculate the AES session key. Session
encryption is not yet implemented. A random session key is sent
by both ends. The actual session key will be the XOR of the one
we send and the one we receive.

* When a connection is accepted the remote end's public key is looked
up in /etc/hammer2/remotes/<IP>.pub. If this file does not exist
then the connection is not allowed.

show more ...


# ae183399 06-Apr-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Add pfs_list, pfs_create, pfs_delete

* Add functions to manage PFSs created under the super-root.


Revision tags: v3.0.2
# 90200001 19-Mar-2012 Matthew Dillon <dillon@apollo.backplane.com>

newfs_hammer2 - cleanup, rename redo area to aux area, add default label

* The -L option is no longer mandatory. The label will default to 'ROOT'
if not specified.

* The redo area in the volume

newfs_hammer2 - cleanup, rename redo area to aux area, add default label

* The -L option is no longer mandatory. The label will default to 'ROOT'
if not specified.

* The redo area in the volume header has been renamed to the aux area.

show more ...


Revision tags: v3.0.1
# 37494cab 13-Feb-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - initial mkdir skeleton

* Code up VOP_NMKDIR() to test the chain creation code and VOP_READDIR.

* Code up VOP_NLOOKUPDOTDOT.

* Adjust newfs_hammer2 to set alloc_tid to 16, so we can reser

hammer2 - initial mkdir skeleton

* Code up VOP_NMKDIR() to test the chain creation code and VOP_READDIR.

* Code up VOP_NLOOKUPDOTDOT.

* Adjust newfs_hammer2 to set alloc_tid to 16, so we can reserve some
inode numbers for the super-root and root.

* Add another field to the media inode_data for inode allocation within
a PFS.

Note: These are mostly skeletons. We don't flush modified chain elements
back to the disk yet and the chain create path can't create indirect
blocks yet.

show more ...


# e028fa74 13-Feb-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Adjust chain lookup/iteration API, add readdir

* Adjust the chain lookup/iteration API to take a key range key_beg to key_end
(inclusive), instead of a key/mask pair.

* Add and initiali

hammer2 - Adjust chain lookup/iteration API, add readdir

* Adjust the chain lookup/iteration API to take a key range key_beg to key_end
(inclusive), instead of a key/mask pair.

* Add and initialize a parent inode pointer in hammer2_inode{}.

* Adjust the directory key hash to always OR with 0x8000U in order to
guarantee that some low valued codes remain unused so we can use them
for pseudo directory cookies (for '.' and '..').

newfs2_hammer is required on the test volume with this change.

* Implement hammer2_vop_readdir().

show more ...


# 85f1fb96 10-Feb-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - correct icrc generation for sector 0

* Correct the icrc generation for sector 0. Other icrc's are also stored
in sector 0 and have be generated first.

* Write the volume header out to a

hammer2 - correct icrc generation for sector 0

* Correct the icrc generation for sector 0. Other icrc's are also stored
in sector 0 and have be generated first.

* Write the volume header out to all volume header alternates. All four
are, in fact, master copies. The mount code will find the best one.

show more ...


# b33a7e92 09-Feb-2012 Matthew Dillon <dillon@apollo.backplane.com>

hammer2 - Initial newfs_hammer2 implementation

* This is a rough start for the newfs_hammer2 implementation.

* Creates the volume header, super-root inode, and named root inode.


123