Path: utzoo!utgpu!attcan!uunet!husc6!uwvax!rutgers!ucsd!nosc!helios.ee.lbl.gov!pasteur!ames!pacbell!hoptoad!peora!rtmvax!tarpit!rd From: rd@tarpit.UUCP (Bob Thrush) Newsgroups: comp.unix.microport Subject: How does Microport System V/AT handle bad blocks? Message-ID: <460@tarpit.UUCP> Date: 17 Dec 88 22:28:21 GMT Reply-To: rd@tarpit.UUCP (Bob Thrush) Organization: Automation Intelligence,Inc; Orlando,FL Lines: 170 About 3 months ago, the 2nd drive on this System V/AT 2.3.1 system died. It was replaced, the entire drive was formatted, one partition was created with /etc/fdisk and 2 file systems were made. In the past month, I have been noticing intermittent "HD I/O Errors ..." often followed by serious file system problems on the replacement drive. I have searched the printed manuals and man pages and have not found any documentation of this error. Here are a few samples: HD I/O Error Fun: 30 Cyl: 329 Hd: 5 Sec: 9 Status: 51 Estat: 10 Drstat: A5 HD I/O Error Fun: 20 Cyl: 346 Hd: 3 Sec: 12 Status: 59 Estat: 10 Drstat: B3 HD I/O Error Fun: 30 Cyl: 197 Hd: 4 Sec: 11 Status: 51 Estat: 10 Drstat: A4 HD I/O Error Fun: 30 Cyl: 346 Hd: 2 Sec: 7 Status: 51 Estat: 10 Drstat: B2 Exactly what do these messages mean? Furthermore, is there a way to have the messages logged to a file? If (as I expect) they indicate disk errors, does System V/AT gracefully switch to alternate areas in the face of disk write errors? How does the bad block mechanism work? If bad block mapping is not done automatically, how do I translate the above into a badblock update? How many bad blocks are allowed? If I have multiple System5 partitions, how do I enter the initial bad block information for the 2nd and subsequent partitions? I would appreciate any help regarding this problem. Especially in understanding the bad block mechanism and the meaning of the HD I/O Errors. If any information is dependent on a particular release of System V/AT, please be specific. I will summarize all email responses. For those who wish to read on, I have attached relevant info from /etc/fdisk, /etc/divvy, and /etc/showbad. ********************************************************** /etc/fdisk 1 yields: Drive parameters from fixed disk unit 1 Cylinders Tracks/Cylinder Landing Zone Write Precomp 982 7 982 -1 Display Partition Information Partition Status Type Start End Size Blocks 4 N unknown 0 0 0 0 3 N unknown 0 0 0 0 2 N unknown 0 0 0 0 1 A System5 1 981 981 116739 ********************************************************** /etc/divvy -d 1 yields: CONTENTS OF PARTITION END RECORD FOR UNIT #1 Drive Table ----- ----- Number of cylinders: 982 Number of heads/cylinder: 7 Landing zone: 982 Write precomp: -1 Sectors/track: 17 Sector size: 512 Number of alternate cylinders: 0 Actual sectors/cylinder: 119 DOS disk control byte: 0 DOS compatible null 0: 0 DOS compatible null 1: 0 DOS compatible null 2: 0 DOS compatible null 3: 0 DOS compatible null 4: 0 DOS compatible null 5: 0 Slice table pointer: 0 Slice Table ----- ----- Slice 0 ROOT -- first sector: 119, number of sectors: 40000 Slice 1 SWAP -- first sector: 40119, number of sectors: 0 Slice 2 USR -- first sector: 115838, number of sectors: 0 Slice 3 TMP -- first sector: 40119, number of sectors: 75719 Slice 4 Reserved -- first sector: 26000, number of sectors: 0 Slice 5 DOS partition -- first sector: 0, number of sectors: 0 Slice 6 UNIX partition #1 -- first sector: 119, number of sectors: 116739 Slice 7 UNIX partition #2 -- first sector: 0, number of sectors: 0 Slice 8 UNIX partition #3 -- first sector: 0, number of sectors: 0 Slice 9 UNIX partition #4 -- first sector: 0, number of sectors: 0 Slice 10 Entire disk -- first sector: 0, number of sectors: 116858 Slice 11 Last track active pt -- first sector: 116841, number of sectors: 17 Minor Device Table ----- ------ ----- Note that the Winchester driver ONLY uses the information stored in the minor device table of the partition end record of the primary drive (unit 0). i1010minor[0] (unit 0, slice 0): 0 i1010minor[1] (unit 0, slice 1): 1 i1010minor[2] (unit 0, slice 2): 2 i1010minor[3] (unit 0, slice 3): 3 i1010minor[4] (unit 0, slice 4): 4 i1010minor[5] (unit 0, slice 5): 5 i1010minor[6] (unit 0, slice 6): 6 i1010minor[7] (unit 0, slice 7): 7 i1010minor[8] (unit 0, slice 8): 8 i1010minor[9] (unit 0, slice 9): 9 i1010minor[10] (unit 0, slice 10): 10 i1010minor[11] (unit 0, slice 11): 11 i1010minor[12] (reserved): 0 i1010minor[13] (reserved): 0 i1010minor[14] (reserved): 0 i1010minor[15] (reserved): 0 i1010minor[16] (reserved): 0 i1010minor[17] (reserved): 0 i1010minor[18] (reserved): 0 i1010minor[19] (reserved): 0 i1010minor[20] (unit 1, slice 0): 1040 i1010minor[21] (unit 1, slice 1): 1041 i1010minor[22] (unit 1, slice 2): 1042 i1010minor[23] (unit 1, slice 3): 1043 i1010minor[24] (unit 1, slice 4): 1044 i1010minor[25] (unit 1, slice 5): 1045 i1010minor[26] (unit 1, slice 6): 1046 i1010minor[27] (unit 1, slice 7): 1047 i1010minor[28] (unit 1, slice 8): 1048 i1010minor[29] (unit 1, slice 9): 1049 i1010minor[30] (unit 1, slice 10): 1050 i1010minor[31] (unit 1, slice 11): 1051 ********************************************************** /etc/showbad 1 yields (a lot of bad blocks): Bad Track Table - Unit 1 Bad Cylinder Bad Head Alt. Cylinder Alt. Head 28 3 974 0 33 1 974 1 40 1 974 2 41 1 974 3 63 1 974 4 77 1 974 5 119 0 974 6 122 1 975 0 123 1 975 1 124 1 975 2 141 0 975 3 211 1 975 4 230 1 975 5 474 4 975 6 643 4 976 0 700 3 976 1 719 3 976 2 735 3 976 3 736 3 976 4 740 3 976 5 792 4 976 6 794 4 978 1 795 4 977 0 800 1 977 1 831 3 977 2 843 3 977 3 849 3 977 4 859 3 977 5 874 3 977 6 968 3 978 0 ********************************************************** Thanks, -- Bob Thrush UUCP: {rtmvax,ucf-cs}!tarpit!rd Automation Intelligence, 1200 W. Colonial Drive, Orlando, Florida 32804