DragonFly commits List (threaded) for 2009-02
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
DragonFly-2.1.1.480.g1ce12d master sys/vfs/hammer hammer_blockmap.c
commit 1ce12d35b1ca168256fa390c238fd75e231855db
Author: Matthew Dillon <dillon@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
hammer_blockmap_alloc().
* 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(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1ce12d35b1ca168256fa390c238fd75e231855db
--
DragonFly BSD source repository
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]