/*
 * Copyright 2000, International Business Machines Corporation and others.
 * All Rights Reserved.
 * 
 * This software has been released under the terms of the IBM Public
 * License.  For details, see the LICENSE file in the top-level source
 * directory or online at http://www.openafs.org/dl/license10.html
 */

/*
	System:		VICE-TWO
	Module:		volinodes.h
	Institution:	The Information Technology Center, Carnegie-Mellon University

 */

/* Used by vutil.c and salvager.c */

private struct VolumeHeader tempHeader;

#ifdef AFS_NAMEI_ENV
#define NO_LINK_TABLE 0
#else
#define NO_LINK_TABLE 1
#endif
private struct stuff {
    struct versionStamp stamp;
    bit32 inodeType;
    int size;			/* size of any fixed size portion of the header */
    Inode *inode;
    char *description;
    /* if this is 1, then this inode is obsolete--
     * salvager may delete it, and shouldn't complain
     * if it isn't there; create can not bother to create it */
    int obsolete;
} stuff[] = {
    { {
    VOLUMEINFOMAGIC, VOLUMEINFOVERSION}, VI_VOLINFO, sizeof(VolumeDiskData),
	&tempHeader.volumeInfo, "Volume information", 0}
    , { {
    SMALLINDEXMAGIC, SMALLINDEXVERSION}
    , VI_SMALLINDEX, sizeof(struct versionStamp), &tempHeader.smallVnodeIndex,
	"small inode index", 0}, { {
    LARGEINDEXMAGIC, LARGEINDEXVERSION}, VI_LARGEINDEX,
	sizeof(struct versionStamp), &tempHeader.largeVnodeIndex,
	"large inode index", 0}, { {
    ACLMAGIC, ACLVERSION}, VI_ACL, sizeof(struct versionStamp),
	&tempHeader.volumeAcl, "access control list", 1}, { {
    MOUNTMAGIC, MOUNTVERSION}, VI_MOUNTTABLE, sizeof(struct versionStamp),
	&tempHeader.volumeMountTable, "mount table", 1}, { {
LINKTABLEMAGIC, LINKTABLEVERSION}, VI_LINKTABLE,
	sizeof(struct versionStamp), &tempHeader.linkTable, "link table",
	NO_LINK_TABLE},};
/* inodeType is redundant in the above table;  it used to be useful, but now
   we require the table to be ordered */
#define MAXINODETYPE VI_LINKTABLE

Volume *VWaitAttachVolume();
