git: hammer2 - flush sequencing part 1
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri May 3 21:36:38 PDT 2013
commit d001f460bbf1795b8f37fce7ccc3243202a5d5f6
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri May 3 21:31:31 2013 -0700
hammer2 - flush sequencing part 1
* Rip out the jerry-rigged flush sequencer and start work on a real
one.
* Sync and fsync calls create synchronization points and will be serialized
against each other.
* Modifying operations occurring before a synchronization point will stall
modifying operations occurring after the synchronization point until
they complete. This will need to be optimized.
* However, the synchronization points are coded such that modifying operations
occurring after a synchronization point will be able to run concurrently
with the disk flush related to that synchronization point.
So if there is only one synchronization point (sync or fsync or background
sync) active, modifying operations will generally not stall. At least not
for very long.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 58 +++++++++++++++----
sys/vfs/hammer2/hammer2_chain.c | 50 +++++++---------
sys/vfs/hammer2/hammer2_flush.c | 121 ++++++++++++++++++++++++++-------------
sys/vfs/hammer2/hammer2_ioctl.c | 4 +-
sys/vfs/hammer2/hammer2_vfsops.c | 23 +++++++-
sys/vfs/hammer2/hammer2_vnops.c | 42 ++++++++------
6 files changed, 197 insertions(+), 101 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d001f460bbf1795b8f37fce7ccc3243202a5d5f6
--
DragonFly BSD source repository
More information about the Commits
mailing list