git: hammer2 - major simplification 1/many (stabilization B)
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Jul 30 23:06:10 PDT 2014
commit 05dd26e42f0fc661844b6dfa3c57844a430836f8
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Wed Jul 30 22:50:19 2014 -0700
hammer2 - major simplification 1/many (stabilization B)
* Change hammer2_cluster_bytes() to hammer2_cluster_need_resize()
to check for cluster size mismatches against desired. Used for
data block resizing.
* Fix panic - allow data blocks to have a chain->dio. This will be
the case when compression or other data filters are used.
* Fix null pointer panic - chain->dio can be NULL for data blocks.
* Fix null pointer panic - hlinkp is allowed to be NULL in
hammer2_unlink_file().
* Do not assert if a hardlink target cannot be found. There is a known
bug case when a directory is moved to another part of the topology
where underlying hardlinks can get lost. kprintf() instead.
* Fix inode deadlock, add missing inode unlock in hammer2_hardlink_find().
* Remove OBJTYPE_HARDLINK tests from hammer2_inode_lock_*(). It is no
longer possible for an inode's chain to point to a hardlink pointer,
it will always point to the hardlink target.
* Add some lock count tracking to the VOPs to catch left over locks on
return. (Note that read-ahead operations mess up the lock count because
the shared lock is inherited by the async op, so lock count tracking
is not done in code which handles logical file data).
* Hammer2 survives cpdup, blogbench fsx, fsstress
Summary of changes:
sys/vfs/hammer2/hammer2.h | 7 ++-
sys/vfs/hammer2/hammer2_ccms.c | 6 +++
sys/vfs/hammer2/hammer2_chain.c | 38 ++++++++++------
sys/vfs/hammer2/hammer2_cluster.c | 17 +++++--
sys/vfs/hammer2/hammer2_flush.c | 2 +-
sys/vfs/hammer2/hammer2_inode.c | 84 ++++++++++++++++++++++++----------
sys/vfs/hammer2/hammer2_vfsops.c | 12 ++++-
sys/vfs/hammer2/hammer2_vnops.c | 96 ++++++++++++++++++++++++++++++++++-----
8 files changed, 203 insertions(+), 59 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/05dd26e42f0fc661844b6dfa3c57844a430836f8
--
DragonFly BSD source repository
More information about the Commits
mailing list