Commits

Mike McGreevy committed 369691d78dc
[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.