-- Steven Jenkins - 11 Jun 2007 ?VInitVolumePackage is the main setup program for the fileserver, salvageserver, and volserver (and some utilities). It initializes the data structures need by each to do their operations. Synchronization is done via vol_glock_mutex, vol_trans_mutex, vol_put_volume_cond, and vol_sleep_cond.

  • Called by:

    1. fileserver
    2. salvageserver
    3. volserver
    4. vol-dump utility
    5. salvager
    6. vol-bless utility (unsupported)
  • Does: (among other operations)

    1. ?VInitPartitionPackage
    2. ?VInitVolumeHash
    3. ?VInitVnodes (for small & large vnodes)
    4. ?VAttachVolumesByPartition

?VInitPartitionPackage simply allocates memory for use by the caller (for DAFs -- for non-DAFS, it's a no-op)

?VInitVolumeHash allocates memory and sets up ?VolumeHashTable.Table; also does queue_Init for reach entry in the Table.

?VInitVnodes allocates memory for the Vnode hash, and initializes all values in the entries (to 0 or NULL), or the nextpointer.

?VInitVolumesByPartition reads the disk and calls ?VAttachVolumeByName (?VPreAttachVolumeByName for DAFS) for each volume on the disk.