--- src/sys/vfs/hammer/hammer_ondisk.c 2008/06/03 18:47:25 1.49 +++ src/sys/vfs/hammer/hammer_ondisk.c 2008/06/07 07:41:51 1.50 @@ -885,6 +885,29 @@ hammer_bnew(hammer_mount_t hmp, hammer_o return((char *)buffer->ondisk + xoff); } +/* + * Invalidate HAMMER_BUFSIZE bytes at zone2_offset. This is used to + * make sure that we do not have the related buffer cache buffer at + * the device layer because it is going to be aliased in a high level + * vnode layer. + */ +void +hammer_binval(hammer_mount_t hmp, hammer_off_t zone2_offset) +{ + hammer_volume_t volume; + int vol_no; + int error; + + KKASSERT((zone2_offset & HAMMER_OFF_ZONE_MASK) == + HAMMER_ZONE_RAW_BUFFER); + vol_no = HAMMER_VOL_DECODE(zone2_offset); + volume = hammer_get_volume(hmp, vol_no, &error); + if (volume) { + hammer_io_inval(volume, zone2_offset); + hammer_rel_volume(volume, 0); + } +} + /************************************************************************ * NODES * ************************************************************************