I tried to startup db and got the following error in alert log


ORA-00206: error in writing (block 3, # blocks 1) of control file
ORA-00202: control file: '/eas/u01/app/oracle/product/admin/easp1/links/control2'
ORA-27063: number of bytes read/written is incorrect
Solaris-AMD64 Error: 5: I/O error
Additional information: -1
Additional information: 8192
ORA-00206: error in writing (block 3, # blocks 1) of control file
ORA-00202: control file: '/eas/u01/app/oracle/product/admin/easp1/links/control1'
ORA-27063: number of bytes read/written is incorrect
Solaris-AMD64 Error: 5: I/O error
Additional information: -1
Additional information: 8192
Sun May 27 19:46:52 2007
Errors in file /eas/u01/app/oracle/product/admin/easp1/bdump/easp1_ckpt_22321.trc:
ORA-00221: error on write to control file
ORA-00206: error in writing (block 3, # blocks 1) of control file
ORA-00202: control file: '/eas/u01/app/oracle/product/admin/easp1/links/control3'
ORA-27063: number of bytes read/written is incorrect
Solaris-AMD64 Error: 5: I/O error

This was part of the alert log from about a week ago:
Mon May 21 18:23:22 2007
Memory Notification: Library Cache Object loaded into SGA
Heap size 2527K exceeds notification threshold (2048K)
Details in trace file /eas/u01/app/oracle/product/admin/easp1/bdump/easp1_dw01_10737.trc
KGL object name :SELECT /*+rule*/ SYS_XMLGEN(VALUE(KU$), XMLFORMAT.createFormat2('TABLE_T', '7')), KU$.OBJ_NUM ,KU$.ANC_OBJ
.NAME ,KU$.ANC_OBJ.OWNER_NAME ,KU$.ANC_OBJ.TYPE_NAME ,KU$.BASE_OBJ.NAME ,KU$.BASE_OBJ.OWNER_NAME ,KU$.BASE_OBJ.TYPE_NAME ,K
U$.SPARE1 ,KU$.XMLSCHEMACOLS ,KU$.SCHEMA_OBJ.NAME ,KU$.SCHEMA_OBJ.NAME ,'TABLE' ,KU$.PROPERTY ,KU$.SCHEMA_OBJ.OWNER_NAME ,K
U$.TS_NAME ,KU$.TRIGFLAG FROM SYS.KU$_10_1_HTABLE_VIEW KU$ WHERE NOT (BITAND (KU$.PROPERTY,8192)=8192) AND NOT BITAND(KU$.
SCHEMA_OBJ.FLAGS,128)!=0 AND KU$.OB

Can anyone please diagnose the problem?