@PhdThesis{krieger:thesis,
  author = {Orran Krieger},
  title = {{HFS}: A flexible file system for shared-memory multiprocessors},
  year = {1994},
  month = {October},
  school = {University of Toronto},
  URL = {ftp://ftp.cs.toronto.edu/pub/parallel/Okrieg_PhD.ps.Z},
  keywords = {parallel I/O, multiprocesor file system, shared memory,
  memory-mapped I/O, pario-bib},
  abstract = {The Hurricane File System (HFS) is designed for large-scale,
  shared-memory multiprocessors. Its architecture is based on the principle
  that a file system must support a wide variety of file structures, file
  system policies and I/O interfaces to maximize performance for a wide variety
  of applications. HFS uses a novel, object-oriented building-block approach to
  provide the flexibility needed to support this variety of file structures,
  policies, and I/O interfaces. File structures can be defined in HFS that
  optimize for sequential or random access, read-only, write-only or read/write
  access, sparse or dense data, large or small file sizes, and different
  degrees of application concurrency. Policies that can be defined on a
  per-file or per-open instance basis include locking policies, prefetching
  policies, compression/decompression policies and file cache management
  policies. In contrast, most existing file systems have been designed to
  support a single file structure and a small set of policies. \par We have
  implemented large portions of HFS as part of the Hurricane operating system
  running on the Hector shared-memory multiprocessor. We demonstrate that the
  flexibility of HFS comes with little processing or I/O overhead. Also, we
  show that HFS is able to deliver the full I/O bandwidth of the disks on our
  system to the applications.},
  comment = {Excellent work. HFS uses an object-oriented building-block
  approach to provide flexible, scalable high performance. Indeed, HFS appears
  to be one of the most flexible parallel file systems available, allowing
  users to independently control (or redefine) policies for prefetching,
  caching, redundancy and fault tolerance, and declustering.}
}

