• Skip to sidebar navigation
  • Skip to content

Bitbucket

  • Projects
  • Repositories
    • View all public repositories
  • Help
    • Online help
    • Learn Git
    • Welcome to Bitbucket
    • Keyboard shortcuts
  • Log In
Frank Willmore
  1. Frank Willmore

hdf5_der

Dana Robinson
hdf5_der
Public
Actions
  • Clone
  • Download

Learn more about cloning repositories

You have read-only access

Navigation
  • Source
  • Commits
  • Graphs
  • Branches
  • Network
  • Latest Activities

Commits

Mike McGreevy
86d0acc0c0f
Mike McGreevy committed 369691d78dc26 Jan 2012
[svn-r21893] Purpose:

    Commit changes to ensure superblock is always flushed last.

Description:

    This change ensures the superblock is always the last dirty cache
    entry flushed to disk. This needs to happen because the file size
    is written into the superblock, and if we're not truncating the
    file to match the current EOA, then the reported file size at the
    time of superblock flush is only going to be guaranteed to be
    correct if all other data has already been written and the
    superblock is the last thing to disk.

    To do this, cache states have been created to indicate when an
    entry needs to be flushed last (and collectively, in parallel,
    since the flush callback needs to coordinate the EOF value stored
    in the VFL amongst all processes). These are flush_me_last and
    flush_me_collectively, respectively.

    However! Note that since the superblock is the only entry that
    actually takes advantage of these flags at this time, the code has
    been protected with asserts to enforce this (and some liberties
    have been taken to reduce the coding effort using this knowledge
    so as not to handle the large number of cases this potentially
    introduces - these assumptions made when coding have been
    documented in comments around additions where applicable).

    Expanding on this behavior in the future will require additional
    work to handle additional possible scenarios (e.g. multiple
    "flush_me_collectively" entries need to be properly scheduled
    amongst all processes during candidate list creation and/or
    parsing, how to handle when an entry has one but not both of the
    new flags, et cetera).

    In passing, I've made some tabs-to-spaces and other general
    whitespace cleanups in some of the areas I worked in for clarity.

Tested:

    h5committested (jam, koala, ostrich) and coverage in existing
    avoid truncate tests ensured. Coverage in cache unit testing
    still needed prior to merge to trunk.

Changed files

  • Git repository management for enterprise teams powered by Atlassian Bitbucket
  • Atlassian Bitbucket v4.4.1
  • Documentation
  • Contact Support
  • Request a feature
  • About
  • Contact Atlassian
Atlassian