
#if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS)
#endif

/*
 * (C) COPYRIGHT IBM CORPORATION 1987
 * LICENSED MATERIALS - PROPERTY OF IBM
 */
/*

	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();
