Messages in this thread Patch in this message | | | Subject | cdu31a in 2.1.106 | Date | Sun, 14 Jun 1998 15:17:54 PDT | From | "Marty Leisner" <> |
| |
The behavior of the standard cdu31a driver was to fail oftentimes on a mount (but mount would come back) after a short amount of time (10s of seconds).
Now its hanging i mount forever...
What I've been doing is patching cdu31a to print some debug stuff (and it changes the timing...)
Here's the patches I've been using: : leisner@compaq;rcsdiff -u -w cdu31a.c =================================================================== RCS file: cdu31a.c,v retrieving revision 1.1 diff -u -w -r1.1 cdu31a.c --- cdu31a.c 1998/06/14 20:54:13 1.1 +++ cdu31a.c 1998/06/14 20:55:21 @@ -864,7 +864,7 @@ } if (is_busy() || (!(is_result_ready()))) { -#if DEBUG +#if 1 printk("CDU31A timeout out %d\n", __LINE__); #endif result_buffer[0] = 0x20; @@ -923,7 +923,7 @@ } if (!is_result_ready()) { -#if DEBUG +#if 1 printk("CDU31A timeout out %d\n", __LINE__); #endif result_buffer[0] = 0x20; @@ -952,7 +952,7 @@ } if (!is_result_ready()) { -#if DEBUG +#if 1 printk("CDU31A timeout out %d\n", __LINE__); #endif result_buffer[0] = 0x20; @@ -1034,7 +1034,7 @@ } if (is_busy()) { -#if DEBUG +#if 1 printk("CDU31A timeout out %d\n", __LINE__); #endif result_buffer[0] = 0x20; @@ -1090,7 +1090,7 @@ volatile int val; -#if 0*DEBUG +#if DEBUG printk("Entering handle_sony_cd_attention\n"); #endif if (is_attention()) @@ -1171,7 +1171,7 @@ } num_consecutive_attentions = 0; -#if 0*DEBUG +#if DEBUG printk("Leaving handle_sony_cd_attention at %d\n", __LINE__); #endif return(0); @@ -1328,7 +1328,7 @@ #endif return(0); } -#if DEBUG +#if DEBUG || 1 printk("Leaving start_request at %d\n", __LINE__); #endif } @@ -1586,7 +1586,7 @@ } else { -#if DEBUG +#if DEBUG || 1 printk("CDU31A timeout out %d\n", __LINE__); #endif res_reg[0] = 0x20; @@ -1611,7 +1611,7 @@ if (!is_result_ready()) { -#if DEBUG +#if DEBUG || 1 printk("CDU31A timeout out %d\n", __LINE__); #endif res_reg[0] = 0x20; @@ -1840,7 +1840,7 @@ new one. */ else if (block != sony_next_block) { -#if DEBUG +#if DEBUG || 1 printk("CDU31A Warning: Read for block %d, expected %d\n", block, sony_next_block); @@ -1977,14 +1977,14 @@ No need to check session 0, since session 0 is the same as session 1; the command returns different information if you give it 0. */ -#if DEBUG +#if DEBUG || 1 memset(&sony_toc, 0x0e, sizeof(sony_toc)); memset(&single_toc, 0x0f, sizeof(single_toc)); #endif session = 1; while (1) { -#if DEBUG +#if DEBUG || 1 printk("Trying session %d\n", session); #endif parms[0] = session; @@ -1994,7 +1994,7 @@ res_reg, &res_size); -#if DEBUG +#if DEBUG || 1 printk("%2.2x %2.2x\n", res_reg[0], res_reg[1]); #endif @@ -2003,7 +2003,7 @@ /* An error reading the TOC, this must be past the last session. */ break; } -#if DEBUG +#if DEBUG || 1 printk("Reading session %d\n", session); #endif @@ -2097,8 +2097,6 @@ single_toc.dummyc0[5], single_toc.dummyc0[6]); #endif -#undef DEBUG -#define DEBUG 0 sony_toc.lead_out_start_msf[0] = bcd_to_int(single_toc.lead_out_start_msf[0]); sony_toc.lead_out_start_msf[1] = bcd_to_int(single_toc.lead_out_start_msf[1]);
And a mount gives me: Uniform CD-ROM driver Revision: 2.12 Trying session 1 00 00 Reading session 1 Trying session 2 20 11 VFS: Disk change detected on device 0f:00 CDU31A Warning: Read for block 68, expected 66 CDU31A Warning: Read for block 72, expected 70 CDU31A Warning: Read for block 96, expected 74 ISO9660 Extensions: RRIP_1991A
A log that doesn't mount (nad hangs mount) is: Jun 14 16:12:25 compaq kernel: Uniform CD-ROM driver Revision: 2.12 Jun 14 16:12:38 compaq kernel: CDU31A: Invalid block status: 0x0 Jun 14 16:12:38 compaq kernel: cdu31a: Resetting drive on error Jun 14 16:12:45 compaq kernel: CDU31A: unknown 0x03 error for block 72, nblock 2
marty leisner@sdsp.mc.xerox.com Don't confuse education with schooling. Milton Friedman to Yogi Berra
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |