1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright (c) 1991,1997-1998 by Sun Microsystems, Inc. 24 * All rights reserved. 25 */ 26 27 #ifndef _SYS_DKBAD_H 28 #define _SYS_DKBAD_H 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /* 35 * Definitions needed to perform bad sector 36 * revectoring ala DEC STD 144. 37 * 38 * The bad sector information is located in the 39 * first 5 even numbered sectors of the last 40 * track of the disk pack. There are five 41 * identical copies of the information, described 42 * by the dkbad structure. 43 * 44 * Replacement sectors are allocated starting with 45 * the first sector before the bad sector information 46 * and working backwards towards the beginning of 47 * the disk. A maximum of 126 bad sectors are supported. 48 * The position of the bad sector in the bad sector table 49 * determines which replacement sector it corresponds to. 50 * 51 * The bad sector information and replacement sectors 52 * are conventionally only accessible through the 53 * 'c' file system partition of the disk. If that 54 * partition is used for a file system, the user is 55 * responsible for making sure that it does not overlap 56 * the bad sector information or any replacement sector.s 57 */ 58 59 #define NDKBAD 126 /* # of entries maximum */ 60 61 struct dkbad { 62 long bt_csn; /* cartridge serial number */ 63 ushort_t bt_mbz; /* unused; should be 0 */ 64 ushort_t bt_flag; /* -1 => alignment cartridge */ 65 struct bt_bad { 66 short bt_cyl; /* cylinder number of bad sector */ 67 short bt_trksec; /* track and sector number */ 68 } bt_bad[NDKBAD]; 69 }; 70 71 #ifdef __cplusplus 72 } 73 #endif 74 75 #endif /* _SYS_DKBAD_H */ 76