Andrew,
Could you try the same test with the sg driver found in
lk 2.4.5-ac9 . If that oopses as well, then it would seem
that sg_detach() is not being called. [Sg_detach() is the
callback that the mid level uses to tell the sg driver that
a device has been detached (removed).]

I tried it on my hardware with the newer sg driver (removing
a parallel port zip drive that is accessed via the imm driver) 
and the "cat" yielded: "No such device or address" [ENXIO]. 
That is what I would expect.

Doug Gilbert


Andrew Patterson wrote:
> 
> I get an oops when I try to open a generic scsi device file that was attached
> to a LUN that has been removed.  The LUN is on a RAID box which is removed
> using the RAID software.  I then try and update the kernel data structures
> using:
> 
>   echo "scsi remove-single-device x x x x" >/proc/scsi/scsi
> 
> When a try an open the generic device file that used to be used to access this
> LUN, e.g.,:
> 
>    cat /dev/sg2
> 
> I get segmentation fault and the following oops:
> 
> ksymoops 2.3.4 on i686 2.4.5-pre1.  Options used
>      -V (default)
>      -k /proc/ksyms (default)
>      -l /proc/modules (default)
>      -o /lib/modules/2.4.5-pre1/ (default)
>      -m ./System.map (specified)
> 
> Warning (compare_maps): ksyms_base symbol __VERSIONED_SYMBOL(shmem_file_setup)
> n
> ot found in System.map.  Ignoring ksyms_base entry
> Jun  5 12:29:30 lvadp kernel: Unable to handle kernel paging request at
> virtual
> Jun  5 12:29:30 lvadp kernel: c01f4e95
> Jun  5 12:29:30 lvadp kernel: *pde = 00000000
> Jun  5 12:29:30 lvadp kernel: Oops: 0000
> Jun  5 12:29:30 lvadp kernel: CPU:    0
> Jun  5 12:29:30 lvadp kernel: EIP:    0010:[<c01f4e95>]
> Using defaults from ksymoops -t elf32-i386 -a i386
> Jun  5 12:29:30 lvadp kernel: EFLAGS: 00010282
> Jun  5 12:29:30 lvadp kernel: eax: 00c0043b   ebx: 00000000   ecx: 00001502
> ed
> Jun  5 12:29:30 lvadp kernel: esi: 00000002   edi: c224e7e0   ebp: c688a220
> es
> Jun  5 12:29:30 lvadp kernel: ds: 0018   es: 0018   ss: 0018
> Jun  5 12:29:30 lvadp kernel: Process scsitool (pid: 2610, stackpage=c4fe9000)
> Jun  5 12:29:30 lvadp kernel: Stack: 00000000 00000002 c3df3680 0028b33c
> 0000000
> Jun  5 12:29:30 lvadp kernel: eax: 00c0043b   ebx: 00000000   ecx: 00001502
> ed
> Jun  5 12:29:30 lvadp kernel: esi: 00000002   edi: c224e7e0   ebp: c688a220
> es
> Jun  5 12:29:30 lvadp kernel: ds: 0018   es: 0018   ss: 0018
> Jun  5 12:29:30 lvadp kernel: Process scsitool (pid: 2610, stackpage=c4fe9000)
> Jun  5 12:29:30 lvadp kernel: Stack: 00000000 00000002 c3df3680 0028b33c
> 0000000
> Jun  5 12:29:30 lvadp kernel:        c4fe9f2c c3df3680 00000202 c021c06b
> c224e7e
> Jun  5 12:29:30 lvadp kernel:        c7f7cec0 c3df3680 c7f7cec0 00000002
> ffffffe
> Jun  5 12:29:30 lvadp kernel: Call Trace: [<c0135c94>] [<c021c06b>] [<c0135bf7>
> ]
>  [<c012c712>] [<c012b845>] [<c012b77e>] [<c012ba7c>]
> Jun  5 12:29:30 lvadp kernel:        [<c0106b43>]
> Jun  5 12:29:30 lvadp kernel: Code: f6 40 70 01 0f 84 ab 00 00 00 bb 00 e0 ff
> ff
>  c7 44 24 10 00
> 
> >>EIP; c01f4e95 <scsi_block_when_processing_errors+d/f8>   <=====
> Trace; c0135c94 <cached_lookup+10/54>
> Trace; c021c06b <sg_open+7b/234>
> Trace; c0135bf7 <permission+2b/30>
> Trace; c012c712 <chrdev_open+3e/4c>
> Trace; c012b845 <dentry_open+bd/154>
> Trace; c012b77e <filp_open+52/5c>
> Trace; c012ba7c <sys_open+38/b4>
> Trace; c0106b43 <system_call+33/38>
> Code;  c01f4e95 <scsi_block_when_processing_errors+d/f8>
> 00000000 <_EIP>:
> Trace; c021c06b <sg_open+7b/234>
> Trace; c0135bf7 <permission+2b/30>
> Trace; c012c712 <chrdev_open+3e/4c>
> Trace; c012b845 <dentry_open+bd/154>
> Trace; c012b77e <filp_open+52/5c>
> Trace; c012ba7c <sys_open+38/b4>
> Trace; c0106b43 <system_call+33/38>
> Code;  c01f4e95 <scsi_block_when_processing_errors+d/f8>
> 00000000 <_EIP>:
> Code;  c01f4e95 <scsi_block_when_processing_errors+d/f8>   <=====
>    0:   f6 40 70 01               testb  $0x1,0x70(%eax)   <=====
> Code;  c01f4e99 <scsi_block_when_processing_errors+11/f8>
>    4:   0f 84 ab 00 00 00         je     b5 <_EIP+0xb5> c01f4f4a
> <scsi_block_whe
> n_processing_errors+c2/f8>
> Code;  c01f4e9f <scsi_block_when_processing_errors+17/f8>
>    a:   bb 00 e0 ff ff            mov    $0xffffe000,%ebx
> Code;  c01f4ea4 <scsi_block_when_processing_errors+1c/f8>
>    f:   c7 44 24 10 00 00 00      movl   $0x0,0x10(%esp,1)
> Code;  c01f4eab <scsi_block_when_processing_errors+23/f8>
>   16:   00
> 
> 1 warning issued.  Results may not be reliable.
> 
> I am scanning all sg files to determine what devices are available, so I
> can't use the old reliable "well just don't do that".  Any ideas on how
> I can determine if a device has been removed without getting this error?  Is
> it possible to fix this problem in the sg driver?  The sd driver seems to
> be able to handle this.
> 
> Andrew
> 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>    Andrew Patterson                          Voice:  (970) 898-3261
>    Hewlett-Packard                           Email: [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]

Reply via email to