DragonFly- master sys/vfs/hammer hammer_blockmap.c

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Feb 1 00:39:00 PST 2009

commit 1ce12d35b1ca168256fa390c238fd75e231855db
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Jan 31 22:53:38 2009 -0800

    HAMMER VFS - Fix I/O invalidation collision assertion
    Fix more issues with the hammer_reserve subsystem.
    * Fix a broken base_offset calculation which had reversed the zone
      and offset fields in a HAMMER_ZONE_ENCODE() call.  The broken
      base_offset caused hammer_del_buffers() to scan the wrong offset
      range, leaving conflicting buffer cache buffers intact.
      The resulting conflict caused a KKASSERT(LIST_FIRST(&bp->b_dep) == NULL)
      to fail later on.
    * Hold a reference through a potentially blocking operation in
    * Record the proper zone in a hammer_reserve() structure created via
      hammer_blockmap_free().  Without this the I/O invalidation code
      cannot locate conflicting hammer_buffer structures.
    * hammer_reserve_setdelay_offset() was not actually placing the
      hammer_reserve() structure in the delay queue, allowing it to
      be disposed of too early.

Summary of changes:
 sys/vfs/hammer/hammer_blockmap.c |   37 ++++++++++++++++++++++++++++---------
 1 files changed, 28 insertions(+), 9 deletions(-)


DragonFly BSD source repository

More information about the Commits mailing list