#
9480ff55 |
| 27-Apr-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 38E/Many: Undo/Synchronization and crash recovery
* Fix a couple of deadlocks.
* Fix a kernel buffer cache exhaustion issue.
* Get the 'hammer prune' and 'hammer reblock' command working ag
HAMMER 38E/Many: Undo/Synchronization and crash recovery
* Fix a couple of deadlocks.
* Fix a kernel buffer cache exhaustion issue.
* Get the 'hammer prune' and 'hammer reblock' command working again. The commands are now properly synchronized for crash recovery.
show more ...
|
#
f90dde4c |
| 26-Apr-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 38D/Many: Undo/Synchronization and crash recovery
* The flusher now waits for I/O to complete at the appropriate points.
* Implement instant crash recovery. The UNDO FIFO is scanned backwar
HAMMER 38D/Many: Undo/Synchronization and crash recovery
* The flusher now waits for I/O to complete at the appropriate points.
* Implement instant crash recovery. The UNDO FIFO is scanned backwards and reapplied to the filesystem on mount. There is still more work to do here, inode<->inode associations (e.g. directory entry vs file) are not yet bound together.
* Clean up I/O sequencing a lot and get rid of a ton of unnecessary flusher wakeups.
show more ...
|
#
10a5d1ba |
| 25-Apr-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 38C/Many: Undo/Synchronization and crash recovery
* Classify buffers as meta, undo, or data buffers, and collect them into separate lists so they can be flushed in the proper order.
* Make
HAMMER 38C/Many: Undo/Synchronization and crash recovery
* Classify buffers as meta, undo, or data buffers, and collect them into separate lists so they can be flushed in the proper order.
* Make the META buffers and volume header flushed under HAMMERs direct control only, as part of the UNDO sequencing.
* Major work on the flusher thread. Flush the various buffer classes in the correct order (the synchronization points are not yet coded, however).
* Update the volume header's UNDO fifo indices.
* Add a ton of sanity checks on buffer modifications and narrow the size of some of the UNDO records.
* Clean-up after loose IOs. An IO can be loose when its ref count drops to zero and the kernel attempts to reclaim its bp. We can't garbage collect the IO in the kernel bioops callback so we have to remember that the IO is now loose and do it later (in the flusher).
* Temporarily comment out an allocator iterator feature which we cannot do right now because it may result in new data allocations overwriting old deletions which are still subject to UNDO.
show more ...
|
#
b84de5af |
| 24-Apr-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 38A/Many: Undo/Synchronization and crash recovery
* Separate all frontend operations from all backend media synchronization. The frontend VNOPs make all changes in-memory and in the fronten
HAMMER 38A/Many: Undo/Synchronization and crash recovery
* Separate all frontend operations from all backend media synchronization. The frontend VNOPs make all changes in-memory and in the frontend buffer cache. The backend buffer cache used to manage meta-data is not touched.
- In-memory inode contains two copies of critical meta-data structures - In-memory record tree distinguishes between records undergoing synchronization and records not undergoing synchronization. - Frontend buffer cache buffers are tracked to determine which ones to synchronize and which ones not to. - Deletions are cached in-memory. Any number of file truncations simply caches the lowest truncation offset and on-media records beyond that point are ignored. Record deletions are cached as a negative entry in the in-memory record tree until the backend can execute the operation on the media. - Frontend operations continue to have full, direct read access to the media.
* Backend synchronization to the disk media is able to take place simultaniously with frontend operations on the same inodes. This will need some tuning but it basically works.
* In-memory records are no longer removed from the B-Tree when deleted. They are marked for deletion and removed when the last reference goes away.
* An Inode whos last reference is being released is handed over to the backend flusher for its final disposition.
* There are some bad hacks and debugging tests in this commit. In particular when the backend needs to do a truncation it special-cases any negative entries it finds in the in-memory record tree. Also, if a rename operation hits a deadlock it currently breaks atomicy.
* The transaction API has been simplified. The frontend no longer allocates transaction ids. Instead the backend does a full flush with a single transaction id (since that is the granularity the crash recovery code will have anyway).
show more ...
|
#
059819e3 |
| 22-Apr-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 37/Many: Add a flush helper thread, clean up some inconsistencies.
This patch generally cleans up transaction id inconsistencies betwen data and meta-data by syncing the data and inode in a s
HAMMER 37/Many: Add a flush helper thread, clean up some inconsistencies.
This patch generally cleans up transaction id inconsistencies betwen data and meta-data by syncing the data and inode in a single transaction.
* Change the I/O path for write strategy calls. Queue the BIO's to the flush helper thread instead of directly updating the media.
* We no longer try to sync individual buffers. If the kernel wants to sync a dirty buffer, we sync the whole file to minimize inode updates.
show more ...
|
#
b58c6388 |
| 24-Mar-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 35/many: Stabilization pass, cleanups
* Fix a buffer load race which could result in an assertion or panic related to a referenced HAMMER buffer with a NULL bp. The problem was that the
HAMMER 35/many: Stabilization pass, cleanups
* Fix a buffer load race which could result in an assertion or panic related to a referenced HAMMER buffer with a NULL bp. The problem was that the loading flag must be used when releasing the buffer as well as when acquiring the buffer. Change the loading flag to a loading count.
* Do not lose flush requests. The flush request now stays flagged until the buffer is able to be flushed.
* Fix stale blockmap offsets cached in hammer_buffer. Clear the cached offset when freeing a big block from the blockmap. NOTE: We do not yet try to index buffers based on the blockmap offset but we should.
* Remove the old write ordering code in preparation for redoing the algorithm.
* General code cleanups.
show more ...
|
#
36f82b23 |
| 19-Mar-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 33/many: Expand transaction processing, fix bug in B-Tree
* Expand transaction processing to cover more of the code space for upcoming undo code.
* Fix a bug in the btree_split_leaf(), the
HAMMER 33/many: Expand transaction processing, fix bug in B-Tree
* Expand transaction processing to cover more of the code space for upcoming undo code.
* Fix a bug in the btree_split_leaf(), the separator would sometimes not properly be to the left of the split point, resulting in a panic. Temporarily add many more assertions to btree_split_leaf().
* Improve the critical path for blockmap lookups, the (newly) passed trans already contains a referenced root volume so the blockmap code does not have to acquire one.
Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx> (B-Tree bug)
show more ...
|
#
34d829f7 |
| 10-Feb-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 28A/many: Translation and write performance optimizations
* Cache a buffer's virtual (zoneX->zone2) translation to avoid unnecessary re-translations when a hot-cached buffer is available.
HAMMER 28A/many: Translation and write performance optimizations
* Cache a buffer's virtual (zoneX->zone2) translation to avoid unnecessary re-translations when a hot-cached buffer is available.
* Use the sequential heuristic provided by the kernel to detect sequential writes and call bawrite() instead bdwrite() in such cases. This prevents the buffer cache from hitting slow fallback cases and completely solves the write performance issue.
Note that the undo fifo is not yet in place and performance will drop slightly once it is, but what you see now is basically what you're gonna get in the final.
* Performance is now on par with UFS.
show more ...
|
#
47197d71 |
| 08-Feb-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 27/many: Major surgery - change allocation model
After getting stuck on the recovery code and highly unoptimal write performance issues, remove the super-cluster/cluster and radix tree bitmap
HAMMER 27/many: Major surgery - change allocation model
After getting stuck on the recovery code and highly unoptimal write performance issues, remove the super-cluster/cluster and radix tree bitmap infrastructure and replace it with a circular FIFO.
* Nothing is localized yet with this major surgery commit, which means radix nodes, hammer records, file data, and undo fifo elements are all being written to a single fifo. These elements will soon get their own abstracted fifos (and in particular, the undo elements will get a fixed-sized circular fifo and be considered temporary data).
* No sequence numbers or transaction spaces are generated yet.
* Create a 'hammer_off_t' type (64 bits). This type reserves 4 bits for a zone. Zones which encode volume numbers reserve another 8 bits, giving us a 52 bit byte offset able to represent up to 4096 TB per volume. Zones which do not encode volume numbers have 60 bits available for an abstracted offset, resulting in a maximum filesystem size of 2^60 bytes (1 MTB). Up to 15 zones can be encoded.
As of this commit only 2 zones are implemented to wrap up existing functionality.
* Adjust the B-Tree to use full 64 bit hammer offsets. Have one global B-Tree for the entire filesystem. The tree is no longer per-cluster.
* Scrap the recovery and spike code. Scrap the cluster and super-cluster code. Scrap those portions of the B-Tree code that dealt with spikes. Scrap those portions of the IO subsystem that dealt with marking a cluster open or closed.
* Expand the hammer_modify_*() functions to include a data range and add UNDO record generation. Do not implement buffer ordering dependancies yet (ordering issues are going change radically with the FIFO model).
show more ...
|
#
d5ef456e |
| 25-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 25/many: get fsx (filesystem test) working, cleanup pass
* Fix buffer alignment in the write strategy code. Assert buffer alignment in hammer_ip_sync_data().
* Finish implementing file tr
HAMMER 25/many: get fsx (filesystem test) working, cleanup pass
* Fix buffer alignment in the write strategy code. Assert buffer alignment in hammer_ip_sync_data().
* Finish implementing file truncation. There's probably still an edge case or two related to B_CACHE on terminal filesystem buffers when expanding a file.
* Pass VCHR vnodes through to fsync so the inode data syncs properly. It was previously only syncing on umount or OS flushes.
* Change a bunch of debugging kprintf's to only print if a debug variable is set. Reduce the debugging output considerably.
* Test FSX using both a full historical mount and a nohistory mount.
show more ...
|
#
46fe7ae1 |
| 25-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 24/many: Clean up edge cases
Hammer now survives many cpdup/rm-rf loops with recovery forced on.
* Fix an edge case with historical lookups. When pushing down through a spike an exact mat
HAMMER 24/many: Clean up edge cases
Hammer now survives many cpdup/rm-rf loops with recovery forced on.
* Fix an edge case with historical lookups. When pushing down through a spike an exact match on a SPIKE_END element is no guarantee of success, so check for and flag the delete boundary in that case.
* Delay physical cluster deletions (marking the cluster as free in the Volume's A-list) until the last ref on the cluster goes away.
* Fix a race between cluster deletion, filesystem sync, and recovery. Do not attempt to recover a cluster marked as undergoing deletion.
* Enable cluster recovery by default. It is still fairly primitive but it should work well enough to put the filesystem in a working state once the remaining debug shims are removed.
* Clean up sequencing of io->modified to ensure that clusters are properly closed during normal operation. Recovery operations should only occur when encountering an open cluster after a crash.
* Do not open a cluster or create a cluster->buffer dependancy when only updating the mtime or atime of an inode.
* In the hammer_sync_*() procedures, ref the volume/cluster prior to scanning its RB tree, use hammer_ref() instead of hammer_ref_*() to avoid unnecessary loads. This also fixes a stale pointer bug in the same code.
* Remove the stack recursion in btree_remove(). btree_remove() is now able to clean up empty nodes going all the way up the tree (at least until it hits a deadlock, which is not yet handled).
* Fix primary filesystem statistics (they were getting off because whole clusters were being deleted without bothering to free up internal on-disk structures).
* Fix a minor bug in the cluster's stat_records tracking field. 'df' no longer shows a bleeding capacity. Statistics will still get off due to crashes and such (the balancer will probably have to deal with that).
* Add more assertions. How do you debug complex code? You assert that everything is in its proper state, everywhere you can.
show more ...
|
#
b33e2cc0 |
| 24-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 23/many: Recovery, B-Tree, spike, I/O work.
Warning: filesystem structures have changed, recompile newfs_hammer too.
* Correct a couple more edge cases with historical lookups. We have to
HAMMER 23/many: Recovery, B-Tree, spike, I/O work.
Warning: filesystem structures have changed, recompile newfs_hammer too.
* Correct a couple more edge cases with historical lookups. We have to flag the need for an iteration anywhere the edge case is hit as we recurse down, not just on the terminal B-Tree node.
* Get rid of the kludge record buffer bitmap in the cluster header. Augment the A-List recovery and scanning code to locate record buffers. This required adding some unfortunate complexity to the A-list search and recovery routines due to the fact that we ran out of bit codes and couldn't represent an all-free/initialized AND an all-free/uninitialized case.
* Go back to making the SPIKE_END elements range-inclusive instead of range-exclusive. It turns out that making them range-exclusive caused a few too many collisions with adjacent records in the B-Tree.
* Excellent progress on the recovery code. It still has numerous issues (there are lots of recovery cases I still have to implement), but it survives much longer now. Add a sysctl to disable/enable/force cluster recovery (default disabled, since its still buggy).
* When creating a spike be sure to properly assign the cluster record's rec_offset.
* When removing a spike be sure to also free the related cluster record.
* Spike code progress. Implement the last case it couldn't handle (spiking a spike) and add a very simple starter heuristic which generates a better spike topology (doesn't create long chains of end-range spikes).
* Add a huge number of new assertions to ease the tracking down of bugs.
* Address some IO sequencing issues that could result in io.modified getting prematurely cleared. io.modified can only be cleared on write initiation on the last ref to a HAMMER structure.
* Add a hack to pre-reserve enough B-Tree buffers to guarantee the recovery code can regenerate the B-Tree without having to pack it. This ultimately needs to be fixed (the recovery code really needs to pack the tree).
show more ...
|
#
d8971d2b |
| 11-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 18B/many: Stabilization pass
* Fix B_LOCKED buffer leakages by clearing B_LOCKED when a bp is disassociated from its related HAMMER structure.
* The sync code can be called with a buffer s
HAMMER 18B/many: Stabilization pass
* Fix B_LOCKED buffer leakages by clearing B_LOCKED when a bp is disassociated from its related HAMMER structure.
* The sync code can be called with a buffer still referenced from other sources, so hammer_flush_buffer_nodes() can't be called. The refactored hammer_node abstraction no longer holds active refs on the underlying buffer anyway (unless actively referenced itself), so there is no need to flush it to guarentee that the buffer itself gets flushed.
show more ...
|
#
f3b0f382 |
| 11-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 18/many: Stabilization pass
* Properly flag the inode when dirty buffer cache buffers are present so fsync syncs them. Fixes a umount panic.
* Fix A-list bugs introduced when I added the
HAMMER 18/many: Stabilization pass
* Properly flag the inode when dirty buffer cache buffers are present so fsync syncs them. Fixes a umount panic.
* Fix A-list bugs introduced when I added the '10' bit code to record an all-allocated/initialized state vs '00' (all-allocated uninitialized).
* Fix an A-list bug in *alloc_rev. A comparison was off and could result in a near full A-list from incorrectly believing it was completely full.
* When generating a spike also allocate a spike record for the recovery code to find.
* Generate the initial free blocks for a hammer buffer via its cluster A-list instead of directly so the cluster A-list's meta-data is properly synchronized.
show more ...
|
#
055f5ff8 |
| 10-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 17/many: Refactor IO backend, clean up buffer cache deadlocks.
Rewrite HAMMER's IO backend, sans locking which will occur in another patch. The new backend is far less confusing though I woul
HAMMER 17/many: Refactor IO backend, clean up buffer cache deadlocks.
Rewrite HAMMER's IO backend, sans locking which will occur in another patch. The new backend is far less confusing though I wouldn't exactly call it simple.
The new backend keeps track of dependancies with a structure->structure dependancy list, plus implements the special case of opening and closing a cluster header. Buffers are synchronized first, then cluster headers, then volume headers. The new backend also removes a number of potential deadlocks.
show more ...
|
#
4d75d829 |
| 09-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 16/many - Recovery infrastructure, misc bug fixes
* Add A-list recovery and iteration support. This code fixes up an A-list which might have been partially modified or gotten out of sync.
HAMMER 16/many - Recovery infrastructure, misc bug fixes
* Add A-list recovery and iteration support. This code fixes up an A-list which might have been partially modified or gotten out of sync.
* Add substantial cluster recovery infrastructure (not yet enabled). The code still needs to go through a few test/debug cycles and does not yet handle cluster pushes.
* Fix a critical section and a bug in the A-list empty-check code (the latter not yet used by HAMMER but will be soon). The wrong base free block count was being supplied.
* Add a synchronizing transaction id field to the cluster header. This field will be used by the recovery code.
* For the moment add a bitmap of buffers allocated to record arrays. The bitmap is in the cluster header. This may or may not be temporary. For now it will allow the recovery code to wipe the cluster's A-list's and then iterate records to regenerate them.
show more ...
|
#
61aeeb33 |
| 03-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 15/many - user utility infrastructure, refactor alists, misc
* Abstract out userland access to HAMMER's on-disk structures in preparation for more userland work.
* Clean up compiler warnin
HAMMER 15/many - user utility infrastructure, refactor alists, misc
* Abstract out userland access to HAMMER's on-disk structures in preparation for more userland work.
* Clean up compiler warnings.
* Refactor the A-list recursion API. Use another bit code (10) to indicate the all-allocated & initialized state, verses an all-allocated & uninitialized state.
This allows an all-empty flag to propogate up the chain properly which in turn allows us to avoid flushing out dirty backing store for freed disk blocks and will eventually lead to freeing typed buffers back to the cluster's master a-list.
* Fix an edge case in the B-Tree code related to running out of space during an insertion search. If the insertion search ran out of space at a cluster boundary the spike code asserted because the parent B-Tree node wasn't in the same cluster as the node it thought it had to spike. (The root B-Tree node of a cluster cannot be spiked).
* Use a second cache pointer in the in-memory structure for directory inodes. The second cache will be used for inode lookups relative to the directory and will (eventually) greatly reduce the B-Tree search overhead required to stat directory elements.
show more ...
|
#
d113fda1 |
| 01-Jan-2008 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 14/many - historical access cleanup, itimes, bug fixes.
With this commit most historical accesses work and I can go through at least two cycles of cpdup / rm -rf without crashing.
* Fix a bu
HAMMER 14/many - historical access cleanup, itimes, bug fixes.
With this commit most historical accesses work and I can go through at least two cycles of cpdup / rm -rf without crashing.
* Fix a bug in the B-Tree code related to searches on historical records. These records are differentiated by key.create_tid but unlike the rest of the key the matching algorithm has to be somewhat more sophisticated. e.g. A search as of time 10 needs to find a record with a create_tid of 5.
To make this work properly we use a trick when we generate the separator when splitting a leaf. see hammer_btree.c / hammer_make_separator().
* Recycle inodes a link count of 0 immediately.
* Optimization: Do not flush backing store to disk on reclaim.
* Add a per-inode read-only flag. Mark all historical inodes as read-only
* Implement read-only semantics in the vnops and assert attempts to modify inodes marked read-only.
* Properly record the last transaction id for use when synchronizing inodes to the platter. There were a few cases when late synchronizations were using the wrong transaction id, breaking user expectations when accessing historical data after a sync.
* Update the itimes (atime and mtime). These are non-historical updates by default (meaning we just overwrite the latest inode record instead of deleting it and inserting a new one). A future mount option will allow these updates to operate historically (the coding is trivial)... didn't you always want to know the last time a file was accessed prior to a particular date? Think about it...
* Fix an inode memory leak. The inode in-memory structure must be freed on last reference. There were cases where it was being left in the HAMMER cache.
* Optimization: Reduce vnode scan overhead during 'sync' by improving on the inode flags which indicate that some sort of sync is required.
* Optimization: Don't flush inodes when their link count drops by 1, try to only flush them when their link drops to 0.
* Fix a couple of potential deadlocks.
* Fix a case in the vnops code where an inode was not being properly flagged as being dirty.
show more ...
|
#
b3deaf57 |
| 31-Dec-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 13/many - Stabilization commit
* Clean up the in-memory record API.
* Add B-Tree boundary assertions and B-Tree debugging code.
* Delay freeing bits in the allocation bitmaps for B-Tree nod
HAMMER 13/many - Stabilization commit
* Clean up the in-memory record API.
* Add B-Tree boundary assertions and B-Tree debugging code.
* Delay freeing bits in the allocation bitmaps for B-Tree nodes and clusters until the last reference to the in-memory structure goes away. This avoids premature reallocation.
* Fix a bug in btree_split_leaf() - the cursor was not being properly adjusted in a particular boundary case.
* Fix a recursive lock bug on a buffer cache buffer in hammer_io.c
* Do not allow a non-empty directory to be removed.
* Synthesize directory entries for "." and "..". Adjust the hammer_directory_namekey() procedure to reserve key-space for the synthesized entries.
* Fix memory leaks related to the hammer_node and hammer_record structures.
* Finish writing the rename code.
show more ...
|
#
0b075555 |
| 30-Dec-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 12/many - buffer cache sync, buffer cache interactions, misc fixes.
As of this commit all vnops work, the filesystem remains consistent across umount/remount, and the 'cpdup / /mnt/root' test
HAMMER 12/many - buffer cache sync, buffer cache interactions, misc fixes.
As of this commit all vnops work, the filesystem remains consistent across umount/remount, and the 'cpdup / /mnt/root' test succeeds. There is still a ton of work to do but this is a major milestone.
* Get sync and umount working properly. Properly sync out in-memory records and inode updates, and properly release buffer cache buffers so the kernel can throw them away.
* Modifications to buffers backed by the buffer cache ensure that any asynchronous writes complete to avoid a modify-write race.
* Fix miscellanious reference counting bugs.
* Fix two insertion bugs for internal B-Tree nodes that were causing the code to blow up.
show more ...
|
#
7a04d74f |
| 30-Dec-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 12/many - add VOPs for symlinks, device, and fifo support.
* Add some missing VOP bits. Add a fixed attribute record type and store the symlink path as fixed attribute record #1.
* Adjust
HAMMER 12/many - add VOPs for symlinks, device, and fifo support.
* Add some missing VOP bits. Add a fixed attribute record type and store the symlink path as fixed attribute record #1.
* Adjust hammer_inode_data to add missing major and minor device fields.
* Add support for adding generic records and special case deletion of an object's entire set of records.
* Fix a minor bug that was causing the root cluster to be improperly kfree()'d.
show more ...
|
#
d26d0ae9 |
| 29-Dec-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 11/many - initial spike commit.
* Fix a bug in the cluster disk offset calculation. * Implement the cluster allocator and related header initialization. * Remove wildcarding from hammer_btree
HAMMER 11/many - initial spike commit.
* Fix a bug in the cluster disk offset calculation. * Implement the cluster allocator and related header initialization. * Remove wildcarding from hammer_btree_cmp(). * Move the historical filter out of hammer_btree_cmp() and into its own procedure. * Allow the ending element in a B-Tree range iteration to be inclusive or exclusive of the range. * Add infrastructure for cluster-localizes searches. * Initial commit of the spike code (still in progress).
This commit brings in most of the infrastructure needed for the spike code. The spike code is what glues one cluster's B-Tree to another cluster's B-Tree. At the moment we spike by taking the B-Tree leaf node at the cursor after a search and moving all of its elements to a new cluster, then replacing the pointer to that leaf node in the parent B-Tree node with a cluster reference.
This is non-optimal at the moment. Several optimizations are possible and will be eventually be implemented.
show more ...
|
#
fbc6e32a |
| 14-Dec-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 10/many - synchronize miscellaneous work.
* Cleanup the I/O infrastructure a bit in preparation for a write interlock. * Fix a bug in the B-Tree code. * Implement the cluster open flag and wr
HAMMER 10/many - synchronize miscellaneous work.
* Cleanup the I/O infrastructure a bit in preparation for a write interlock. * Fix a bug in the B-Tree code. * Implement the cluster open flag and write dependancies in preparation for the cluster recovery code. * Start working on statistics for statfs.
show more ...
|
#
7f7c1f84 |
| 27-Nov-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 8/many - A-list, B-Tree fixes. As-of queries
Fix numerous bugs in the A-list and B-Tree code, and a few other calculations. The maximum volume size had to be reduced to 8192 TB due to an ov
HAMMER 8/many - A-list, B-Tree fixes. As-of queries
Fix numerous bugs in the A-list and B-Tree code, and a few other calculations. The maximum volume size had to be reduced to 8192 TB due to an overflow in the A-list radix calculation.
Implement as-of name lookups using an @@<delta_seconds_old> name extension. This is temporary. Implelment as-of mounts.
show more ...
|
#
c0ade690 |
| 26-Nov-2007 |
Matthew Dillon <dillon@dragonflybsd.org> |
HAMMER 6/many - memory->disk flush, single-cluster sync to disk, more vnops.
Get most operations within a single 64M cluster working. There are still numerous issues with the B-Tree algorithms so r
HAMMER 6/many - memory->disk flush, single-cluster sync to disk, more vnops.
Get most operations within a single 64M cluster working. There are still numerous issues with the B-Tree algorithms so readbacks generate bad data at the moment.
show more ...
|