https://github.com/torvalds/linux
Revision 32c356d76d7e13dcd0675189d8e9c64ef66aa561 authored by James Bottomley on 19 August 2008, 22:58:13 UTC, committed by James Bottomley on 23 October 2008, 16:41:16 UTC
On Tue, 12 Aug 2008 15:08:14 +0200
Giuliano Pochini <pochini@shiny.it> wrote:

> Fujitsu magneto-optical drive, Adaptec 29160 and
> Linux Jay 2.6.26 #7 SMP Sun Aug 10 18:34:22 CEST 2008 ppc 7455, altivec supported PowerMac3,6 GNU/Linux
>
> When I insert a disk and I mount it, scsi_test_unit_ready() is called and
> the do-while loop gets sshdr->sense_key == UNIT_ATTENTION in the first
> cycle and 0 in the second one. So the if below misses the UNIT_ATTENTION
> and sdev->changed = 1 is not executed. At this point bad things can
> happen... I'm not sure how to fix this. Any clue ?

The problem is essentially caused by us eating UNIT_ATTENTION
conditions in scsi_test_unit_ready().  Fix by updating the ->changed
flag when this happens if the media is removable.

[pochini@shiny.it: updates to tidy up patch]
Signed-off-by: Giuliano Pochini <pochini@shiny.it>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
1 parent 26e9a39
History
Tip revision: 32c356d76d7e13dcd0675189d8e9c64ef66aa561 authored by James Bottomley on 19 August 2008, 22:58:13 UTC
[SCSI] fix removable device inability to detect disk changes
Tip revision: 32c356d
File Mode Size
lzo
reed_solomon
zlib_deflate
zlib_inflate
.gitignore -rw-r--r-- 51 bytes
Kconfig -rw-r--r-- 3.1 KB
Kconfig.debug -rw-r--r-- 29.6 KB
Kconfig.kgdb -rw-r--r-- 1.8 KB
Makefile -rw-r--r-- 2.8 KB
argv_split.c -rw-r--r-- 1.8 KB
audit.c -rw-r--r-- 1.2 KB
bcd.c -rw-r--r-- 257 bytes
bitmap.c -rw-r--r-- 30.3 KB
bitrev.c -rw-r--r-- 2.1 KB
bug.c -rw-r--r-- 4.1 KB
bust_spinlocks.c -rw-r--r-- 588 bytes
check_signature.c -rw-r--r-- 599 bytes
cmdline.c -rw-r--r-- 3.6 KB
cpumask.c -rw-r--r-- 752 bytes
crc-ccitt.c -rw-r--r-- 3.0 KB
crc-itu-t.c -rw-r--r-- 2.8 KB
crc-t10dif.c -rw-r--r-- 2.9 KB
crc16.c -rw-r--r-- 2.8 KB
crc32.c -rw-r--r-- 14.9 KB
crc32defs.h -rw-r--r-- 1.0 KB
crc7.c -rw-r--r-- 2.3 KB
ctype.c -rw-r--r-- 1.3 KB
debug_locks.c -rw-r--r-- 1.1 KB
debugobjects.c -rw-r--r-- 21.3 KB
dec_and_lock.c -rw-r--r-- 806 bytes
devres.c -rw-r--r-- 7.7 KB
div64.c -rw-r--r-- 2.3 KB
dump_stack.c -rw-r--r-- 290 bytes
dynamic_printk.c -rw-r--r-- 9.5 KB
extable.c -rw-r--r-- 1.9 KB
fault-inject.c -rw-r--r-- 7.9 KB
find_next_bit.c -rw-r--r-- 6.4 KB
gen_crc32table.c -rw-r--r-- 1.8 KB
genalloc.c -rw-r--r-- 5.3 KB
halfmd4.c -rw-r--r-- 2.0 KB
hexdump.c -rw-r--r-- 6.1 KB
hweight.c -rw-r--r-- 1.6 KB
idr.c -rw-r--r-- 20.3 KB
inflate.c -rw-r--r-- 38.6 KB
int_sqrt.c -rw-r--r-- 533 bytes
iomap.c -rw-r--r-- 7.4 KB
iomap_copy.c -rw-r--r-- 2.1 KB
iommu-helper.c -rw-r--r-- 2.0 KB
ioremap.c -rw-r--r-- 2.1 KB
irq_regs.c -rw-r--r-- 578 bytes
kasprintf.c -rw-r--r-- 680 bytes
kernel_lock.c -rw-r--r-- 2.9 KB
klist.c -rw-r--r-- 8.6 KB
kobject.c -rw-r--r-- 20.7 KB
kobject_uevent.c -rw-r--r-- 8.0 KB
kref.c -rw-r--r-- 1.9 KB
libcrc32c.c -rw-r--r-- 6.4 KB
list_debug.c -rw-r--r-- 1.5 KB
lmb.c -rw-r--r-- 11.6 KB
locking-selftest-hardirq.h -rw-r--r-- 207 bytes
locking-selftest-mutex.h -rw-r--r-- 120 bytes
locking-selftest-rlock-hardirq.h -rw-r--r-- 74 bytes
locking-selftest-rlock-softirq.h -rw-r--r-- 74 bytes
locking-selftest-rlock.h -rw-r--r-- 158 bytes
locking-selftest-rsem.h -rw-r--r-- 163 bytes
locking-selftest-softirq.h -rw-r--r-- 207 bytes
locking-selftest-spin-hardirq.h -rw-r--r-- 73 bytes
locking-selftest-spin-softirq.h -rw-r--r-- 73 bytes
locking-selftest-spin.h -rw-r--r-- 118 bytes
locking-selftest-wlock-hardirq.h -rw-r--r-- 74 bytes
locking-selftest-wlock-softirq.h -rw-r--r-- 74 bytes
locking-selftest-wlock.h -rw-r--r-- 158 bytes
locking-selftest-wsem.h -rw-r--r-- 163 bytes
locking-selftest.c -rw-r--r-- 28.6 KB
parser.c -rw-r--r-- 6.0 KB
percpu_counter.c -rw-r--r-- 3.2 KB
plist.c -rw-r--r-- 2.8 KB
prio_heap.c -rw-r--r-- 1.4 KB
prio_tree.c -rw-r--r-- 12.2 KB
proportions.c -rw-r--r-- 9.3 KB
radix-tree.c -rw-r--r-- 30.9 KB
random32.c -rw-r--r-- 3.8 KB
ratelimit.c -rw-r--r-- 1.3 KB
rbtree.c -rw-r--r-- 8.6 KB
reciprocal_div.c -rw-r--r-- 159 bytes
rwsem-spinlock.c -rw-r--r-- 6.8 KB
rwsem.c -rw-r--r-- 6.4 KB
scatterlist.c -rw-r--r-- 11.8 KB
sha1.c -rw-r--r-- 2.4 KB
show_mem.c -rw-r--r-- 1.4 KB
smp_processor_id.c -rw-r--r-- 1.1 KB
sort.c -rw-r--r-- 2.5 KB
spinlock_debug.c -rw-r--r-- 6.8 KB
string.c -rw-r--r-- 13.6 KB
string_helpers.c -rw-r--r-- 1.6 KB
swiotlb.c -rw-r--r-- 23.7 KB
syscall.c -rw-r--r-- 2.4 KB
textsearch.c -rw-r--r-- 9.5 KB
ts_bm.c -rw-r--r-- 5.3 KB
ts_fsm.c -rw-r--r-- 10.6 KB
ts_kmp.c -rw-r--r-- 4.3 KB
vsprintf.c -rw-r--r-- 28.0 KB

back to top