/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos720 src/bos/kernel/sys/hd_psn.h 1.15.1.1                            */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 1988,1990              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)44     1.15.1.1  src/bos/kernel/sys/hd_psn.h, sysxlvm, bos720 3/25/13 16:53:19 */
#ifndef  _H_HD_PSN
#define  _H_HD_PSN


/*
 *   This file contains the physical sector number (PSN) layout of
 *   reserved space on the hardfile.
 */


#define  PSN_IPL_REC     0     /* PSN of the IPL record			*/
#define  PSN_CFG_REC     1     /* PSN of the configuration record	*/
/*
 * The Mirror Write Consistency(MWC) records must stay contiguous.  The
 * MWC cache is written to each alternately by the LVDD.
 */
#define  PSN_MWC_REC0    2     /* PSN of the first MWC cache record	*/
#define  PSN_MWC_REC1    3     /* PSN of the second MWC cache record	*/
#define  PSN_LVM_REC     7     /* PSN of LVM information record		*/
#define  PSN_4K_LVM_REC  8     /* For 4K blksize disk, there is no 
				  bad block dir, so reusing 8 		*/
#define  PSN_BB_DIR      8     /* beginning PSN of bad block directory	*/
#define  LEN_BB_DIR      22    /* length in sectors of bad block dir	*/
#define  PSN_CFG_BAK     64    /* PSN of the backup config record	*/
#define  PSN_GEO_LVM     69    /* PSN of block reseverd for GEO LVM use */
#define  PSN_LVM_BAK     70    /* PSN of backup LVM information record	*/
#define  PSN_4K_LVM_BAK  72    /* For 4K blksize disk, there is no 
				  bad block dir, so reusing 72 		*/
#define  PSN_BB_BAK      71    /* PSN of backup bad block directory	*/
#define  PSN_SVG_MWC_REC 100   /* (100-119) PSN of the first MWC cache 
				   record for SVG  */
#define  PSN_4K_MWC_REC  104   /* PSN of the first MWC cache record of	
				  small/bigvg of 4K block size disks	*/
#define  PSN_CFG_TMP	 120   /* Area the HA heart beat info is kept	*/
#define  PSN_NONRSRVD    128   /* PSN of first non-reserved sector	*/

/*
 * The concurrent config scratch sectors (120-128)
 * are accessible thru LV0 as a negative offset from
 * the VGSA area, which starts at PSN_NONRSRVD.
 * Note that there is one config scratch area
 * per pvol.  When a config operation is sent across,
 * We need to write each of them in turn.
 * When reading them, we stop once we hit a match--
 * (one which contains the same OP/NODEID/HINT as the config message)
 */
#define  GETCFG_LSN(Vg, copy)	\
		(GETSA_LSN(Vg, copy<<1) - (PSN_NONRSRVD - PSN_CFG_TMP))
#endif /* _H_HD_PSN */
