git: hammer2 - Stabilization, optimization
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Jun 25 10:52:10 PDT 2016
commit 7767d389a9d16876a2fcf4faba411aa322917991
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Jun 25 10:05:24 2016 -0700
hammer2 - Stabilization, optimization
* Increase the hammer2_io.refs field to 64 bits so we can add a few more
control bits.
* Track whether invalidation is ok at the DIO level for full-sized (64KB)
data blocks. We continue to use the slightly less-capable CHAIN_DEDUP
flag for smaller data blocks (this flag gets set on frontend->backend
flush whereas the DIO level flag is only cleared when a block is actually
reused for deduplication).
* Separate vfs.hammer2.cluster_enable into cluster_read and cluster_write.
Leave cluster_read enabled with a read-ahead of 4 blocks. Disable
cluster_write for now, but still set B_CLUSTEROK in the bdwrite().
This allows the frontend to 'flush' data to the backend without
initiating disk I/O on the block device, giving us a chance to discard
the data later if it winds up being temporary.
* Remove an improper BUF_KERNPROC(dio->bp) in the case where a different
thread owns the in-progress DIO.
* Defer setting of B_INVAL | B_RELBUF to when the DIO is in lastdrop.
* Add missing brelse() in the hammer2_read_file() error path. Add missing
B_CLUSTEROK in hammer2_write_file().
* The bulkfree code now ensures that the INVALOK bit in any related DIO
for a freed block is cleared, preventing accidental invalidations on
reuse.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 23 ++++---
sys/vfs/hammer2/hammer2_bulkfree.c | 27 ++++++--
sys/vfs/hammer2/hammer2_chain.c | 87 ++++++++++++++++--------
sys/vfs/hammer2/hammer2_flush.c | 25 ++++---
sys/vfs/hammer2/hammer2_io.c | 133 +++++++++++++++++++++++++------------
sys/vfs/hammer2/hammer2_strategy.c | 10 +++
sys/vfs/hammer2/hammer2_vfsops.c | 9 ++-
sys/vfs/hammer2/hammer2_vnops.c | 5 +-
8 files changed, 225 insertions(+), 94 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7767d389a9d16876a2fcf4faba411aa322917991
--
DragonFly BSD source repository
More information about the Commits
mailing list