git: hammer2 - Optimize out read I/O on new allocations
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Mar 14 23:33:06 PDT 2015
commit 7100800184765247152118d28d0a45c4e71e13b5
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Mar 14 23:26:59 2015 -0700
hammer2 - Optimize out read I/O on new allocations
* Fix a regression. When DIO went strictly to 64KB blocks,
hammer2_devblksize() did not follow suit. This resulted it
unnecessary read-before-write I/Os on smaller blocks allocated from
fresh full-block freemap areas.
This fix effectively removes almost all read I/O when writing fresh files
to HAMMER2 filesystem, or copying from data already cached into the
HAMMER2 filesystem.
* Allow inodes to be locked without having to load the related meta-data.
This removes unnecessary read I/Os when reclaiming old vnodes from the
vnode cache (whos inodes might no longer be in the buffer cache or the
VM page cache). Removes unnecessary reads during a umount and during
normal vnode recyclement once system caches have reached steady-state.
This change involved flagging the nlinks == 0 inode state in the chain
flags so the inode meta-data does not have to be read.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 15 +++++++++++++--
sys/vfs/hammer2/hammer2_cluster.c | 34 +++++++++++++++++++++++++++++++++
sys/vfs/hammer2/hammer2_inode.c | 40 ++++++++++++++++++++++++++++-----------
sys/vfs/hammer2/hammer2_vnops.c | 12 ++++--------
4 files changed, 80 insertions(+), 21 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7100800184765247152118d28d0a45c4e71e13b5
--
DragonFly BSD source repository
More information about the Commits
mailing list