linux/drivers/scsi
Hans de Goede 5ce524bdff scsi/sd: add a no_read_capacity_16 scsi_device flag
I seem to have a knack for digging up buggy usb devices which don't work
with Linux, and I'm crazy enough to try to make them work.  So this time a
friend of mine asked me to get an mp4 player (an mp3 player which can play
videos on a small screen) to work with Linux.

It is based on the well known rockbox chipset for which we already have an
unusual devs entries to work around some of its bugs.  But this model
comes with an additional twist.

This model chokes on read_capacity_16 calls.  Now normally we don't make
those calls, but this model comes with an sdcard slot and when there is no
card in there (and shipped from the factory there is none), it reports a
size of 0.  However this time the programmers actually got the
read_capacity_10 response right!  So they substract one from the size as
stored internally in the mp3 player before reporting it back, resulting in
an answer of ...  0xffffffff sectors, causing sd.c to try a
read_capacity_16, on which the device crashes.

This patch adds a flag to scsi_device to indicate that a a device cannot
handle read_capacity_16, and when this flag is set if a device reports an
lba of 0xffffffff as answer to a read_capacity_10, assumes it tries to
report a size of 0.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-10-22 10:22:05 -07:00
..
aacraid drivers: scsi: use newly introduced hex_to_bin() method 2010-08-11 08:59:02 -07:00
aic7xxx [SCSI] aic7xxx: Remove OS utility wrappers 2010-07-28 09:05:27 -05:00
aic7xxx_old fix comnment/printk typos concerning "empty" 2010-07-12 18:03:50 +02:00
aic94xx drivers/scsi/aic94xx/aic94xx_init.c: correct the size argument to kmalloc 2010-08-11 08:59:00 -07:00
arcmsr arcmsr_hba: Missing slab.h include 2010-08-17 18:07:43 -07:00
arm
be2iscsi [SCSI] be2iscsi: Fix for Login failure 2010-09-02 17:13:09 -03:00
bfa Merge branch 'params' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2010-08-12 10:01:59 -07:00
bnx2i scsi: fix bnx2i build errors 2010-08-11 08:59:01 -07:00
cxgb3i Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-08-04 15:15:15 -07:00
device_handler [SCSI] scsi_dh_rdac: Add Dell MD36xxi controller into RDAC device list 2010-07-28 09:05:43 -05:00
dpt
fcoe Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-08-04 15:31:02 -07:00
fnic scsi: remove private BIT macros 2010-08-11 08:59:01 -07:00
ibmvscsi [SCSI] ibmvfc: Driver version 1.0.9 2010-08-06 12:26:39 -05:00
libfc [SCSI] libfc: call fc_remote_port_chkready under the host lock. 2010-08-06 11:00:26 -05:00
libsas [SCSI] Unify SAM_ and SAM_STAT_ macros 2010-07-28 09:07:49 -05:00
lpfc Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-08-14 12:34:34 -07:00
megaraid scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
mpt2sas Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-08-04 15:31:02 -07:00
mvsas [SCSI] Unify SAM_ and SAM_STAT_ macros 2010-07-28 09:07:49 -05:00
osd [SCSI] fix bio.bi_rw handling 2010-09-02 17:11:55 -03:00
pcmcia pcmcia: remove memreq_t 2010-08-03 09:04:14 +02:00
pm8001 [SCSI] pm8001: introduce missing kfree 2010-08-06 12:06:08 -05:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.03.04-k0. 2010-09-05 15:22:55 -03:00
qla4xxx drivers/scsi/qla4xxx: fix build 2010-08-20 09:34:56 -07:00
sym53c8xx_2 [SCSI] sd, sym53c8xx: Remove warnings after vsprintf %pV introducation. 2010-09-02 17:23:20 -03:00
.gitignore
3w-9xxx.c Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing 2010-05-24 08:01:10 -07:00
3w-9xxx.h [SCSI] 3w-xxxx, 3w-9xxx: force 60 second timeout 2010-04-11 09:23:25 -05:00
3w-sas.c Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing 2010-05-24 08:01:10 -07:00
3w-sas.h
3w-xxxx.c Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing 2010-05-24 08:01:10 -07:00
3w-xxxx.h [SCSI] 3w-xxxx, 3w-9xxx: force 60 second timeout 2010-04-11 09:23:25 -05:00
53c700.c scsi: 53c700: remove dma_is_consistent usage 2010-08-11 08:59:21 -07:00
53c700.h
53c700.scr
53c700_d.h_shipped
a100u2w.c
a100u2w.h
a2091.c m68k/scsi: a2091 - Do not use legacy Scsi_Host.base 2010-05-26 19:51:08 +02:00
a2091.h m68k/scsi: a2091 - Kill a2091_scsiregs typedef 2010-05-26 19:51:07 +02:00
a3000.c m68k/scsi: a3000 - Do not use legacy Scsi_Host.base 2010-05-26 19:51:08 +02:00
a3000.h m68k/scsi: a3000 - Kill a3000_scsiregs typedef 2010-05-26 19:51:07 +02:00
a4000t.c m68k: amiga - A4000T SCSI platform device conversion 2010-05-26 19:51:09 +02:00
advansys.c fix typos concerning "initiali[zs]e" 2010-06-16 18:05:05 +02:00
aha152x.c
aha152x.h
aha1542.c aha1532: remove ISA_DMA_THRESHOLD usage 2010-08-07 18:15:46 +02:00
aha1542.h
aha1740.c
aha1740.h
aic7xxx_old.c
atari_NCR5380.c
atari_scsi.c
atari_scsi.h
atp870u.c
atp870u.h
BusLogic.c
BusLogic.h
bvme6000_scsi.c
ch.c drivers/scsi/ch.c: don't use vprintk as macro 2010-08-11 08:59:01 -07:00
constants.c [SCSI] Fix warning: zero-length gnu_printf format string 2010-09-02 17:15:31 -03:00
dc395x.c dc395x: decrease iteration for tag_number of max_command in start_scsi() 2010-08-11 08:59:00 -07:00
dc395x.h
dmx3191d.c
dpt_i2o.c [SCSI] dpt_i2o: move range check forward 2010-07-28 09:05:43 -05:00
dpti.h
dtc.c
dtc.h
eata.c
eata_generic.h
eata_pio.c
eata_pio.h
esp_scsi.c
esp_scsi.h
fd_mcs.c
fdomain.c
fdomain.h
FlashPoint.c
g_NCR5380.c g_NCR5380: fix broken MMIO compilation 2010-08-11 08:59:00 -07:00
g_NCR5380.h g_NCR5380: fix broken MMIO compilation 2010-08-11 08:59:00 -07:00
g_NCR5380_mmio.c
gdth.c gdth: unmap ccb_phys when scsi_add_host() fails in gdth_eisa_probe_one() 2010-08-11 08:59:00 -07:00
gdth.h
gdth_ioctl.h
gdth_proc.c
gdth_proc.h
gvp11.c m68k/scsi: gvp11 - Do not use legacy Scsi_Host.base 2010-05-26 19:51:08 +02:00
gvp11.h m68k: amiga - GVP Series II SCSI zorro_driver conversion 2010-05-26 19:51:08 +02:00
hosts.c [SCSI] implement runtime Power Management 2010-07-28 09:07:50 -05:00
hpsa.c [SCSI] hpsa: disable doorbell reset on reset_devices 2010-09-02 17:14:44 -03:00
hpsa.h [SCSI] hpsa: remove unused firm_ver member of the per-hba structure 2010-07-27 12:01:15 -05:00
hpsa_cmd.h [SCSI] hpsa: Fix hard reset code. 2010-07-27 12:02:00 -05:00
hptiop.c [SCSI] hptiop: Eliminate a NULL pointer dereference 2010-07-27 12:01:01 -05:00
hptiop.h
ibmmca.c
imm.c
imm.h
in2000.c
in2000.h
initio.c drivers/scsi: remove unnecessary NULL test 2010-08-11 08:59:00 -07:00
initio.h
ipr.c [SCSI] ipr: fix resource type update and add sdev and shost attributes 2010-07-28 09:05:40 -05:00
ipr.h [SCSI] ipr: change endian swap key to match hardware spec change 2010-07-27 12:03:55 -05:00
ips.c
ips.h
iscsi_boot_sysfs.c [SCSI] iscsi boot: mv iscsi_boot_sysfs to drivers/scsi 2010-08-06 10:45:07 -05:00
iscsi_tcp.c [SCSI] iscsi_tcp: remove sk_sleep check 2010-05-25 10:04:10 -05:00
iscsi_tcp.h [SCSI] iscsi_tcp: Remove unused field iscsi_conn from struct iscsi_sw_tcp_conn 2010-04-11 14:04:05 -05:00
jazz_esp.c
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-08-14 12:34:34 -07:00
lasi700.c
libiscsi.c [SCSI] libiscsi: regression: fix header digest errors 2010-05-02 11:16:50 -04:00
libiscsi_tcp.c [SCSI] iscsi_tcp: change & to && 2010-04-11 14:03:59 -05:00
libsrp.c
mac53c94.c powerpc/macio: Fix probing of macio devices by using the right of match table 2010-06-02 17:50:38 +10:00
mac53c94.h
mac_esp.c
mac_scsi.c
mac_scsi.h
Makefile [SCSI] iscsi boot: mv iscsi_boot_sysfs to drivers/scsi 2010-08-06 10:45:07 -05:00
megaraid.c scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
megaraid.h scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
mesh.c powerpc/macio: Fix probing of macio devices by using the right of match table 2010-06-02 17:50:38 +10:00
mesh.h
mvme16x_scsi.c
mvme147.c m68k/scsi: mvme147 - Kill obsolete HOSTS_C logic 2010-05-26 19:51:07 +02:00
mvme147.h [SCSI] mvme147: Reindentation 2010-05-02 15:55:03 -04:00
ncr53c8xx.c
ncr53c8xx.h
NCR53c406a.c
NCR5380.c NCR5380: bit MR_DMA_MODE set twice in NCR5380_transfer_dma() 2010-08-11 08:59:00 -07:00
NCR5380.h
NCR_D700.c
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32.c
nsp32.h
nsp32_debug.c
nsp32_io.h
osst.c osst: fix read buffer overflow 2010-08-11 08:58:59 -07:00
osst.h
osst_detect.h
osst_options.h
pas16.c
pas16.h
pmcraid.c [SCSI] pmcraid : Remove unnecessary casts for void * pointers 2010-07-28 09:05:26 -05:00
pmcraid.h [SCSI] pmcraid: MSI-X support and other changes 2010-07-27 12:01:35 -05:00
ppa.c
ppa.h
ps3rom.c
qla1280.c
qla1280.h
qlogicfas.c
qlogicfas408.c
qlogicfas408.h
qlogicpti.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
qlogicpti.h of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
raid_class.c
script_asm.pl
scsi.c [SCSI] Fix VPD inquiry page wrapper 2010-09-16 11:48:48 -04:00
scsi.h
scsi_debug.c [SCSI] scsi_debug: fix map_region and unmap_region oops 2010-07-27 12:03:55 -05:00
scsi_devinfo.c
scsi_error.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-08-14 12:34:34 -07:00
scsi_ioctl.c
scsi_lib.c [SCSI] fix use-after-free in scsi_init_io() 2010-09-09 09:58:18 -05:00
scsi_lib_dma.c
scsi_logging.h
scsi_module.c
scsi_netlink.c
scsi_pm.c [SCSI] implement runtime Power Management 2010-07-28 09:07:50 -05:00
scsi_priv.h SCSI: remove fake "address-of" expression 2010-08-06 09:17:02 -07:00
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c [SCSI] implement runtime Power Management 2010-07-28 09:07:50 -05:00
scsi_sysctl.c
scsi_sysfs.c SCSI: remove fake "address-of" expression 2010-08-06 09:17:02 -07:00
scsi_tgt_if.c
scsi_tgt_lib.c [SCSI] tgt: fix warning 2010-08-11 00:55:42 -04:00
scsi_tgt_priv.h
scsi_trace.c [SCSI] scsi_trace: Enhance SCSI command tracing 2010-04-30 12:52:08 -05:00
scsi_transport_api.h
scsi_transport_fc.c drivers: scsi: use newly introduced hex_to_bin() method 2010-08-11 08:59:02 -07:00
scsi_transport_fc_internal.h
scsi_transport_iscsi.c [SCSI] iscsi_transport: wait on session in error handler path 2010-07-28 09:06:06 -05:00
scsi_transport_sas.c
scsi_transport_spi.c
scsi_transport_srp.c
scsi_transport_srp_internal.h
scsi_typedefs.h
scsi_wait_scan.c
scsicam.c
sd.c scsi/sd: add a no_read_capacity_16 scsi_device flag 2010-10-22 10:22:05 -07:00
sd.h scsi/sd: remove big kernel lock 2010-08-07 18:26:08 +02:00
sd_dif.c
ses.c
sg.c drivers/scsi: use memdup_user 2010-08-11 08:59:02 -07:00
sgiwd93.c
sim710.c
sni_53c710.c
sr.c scsi/sr: add no_read_disc_info scsi_device flag 2010-10-22 10:22:04 -07:00
sr.h
sr_ioctl.c
sr_vendor.c
st.c st: use noop_llseek() instead of default_llseek() 2010-05-27 09:12:56 -07:00
st.h
st_options.h
stex.c
sun3_NCR5380.c block: remove wrappers for request type/flags 2010-08-07 18:17:56 +02:00
sun3_scsi.c block: remove wrappers for request type/flags 2010-08-07 18:17:56 +02:00
sun3_scsi.h
sun3_scsi_vme.c block: remove wrappers for request type/flags 2010-08-07 18:17:56 +02:00
sun3x_esp.c
sun_esp.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
sym53c416.c
sym53c416.h
t128.c
t128.h
tmscsim.c
tmscsim.h
u14-34f.c
ultrastor.c
ultrastor.h
vmw_pvscsi.c
vmw_pvscsi.h
wd33c93.c [SCSI] wd33c93: Kill empty wd33c93_release() 2010-05-02 15:54:15 -04:00
wd33c93.h [SCSI] wd33c93: Kill empty wd33c93_release() 2010-05-02 15:54:15 -04:00
wd7000.c [SCSI] wd7000: fix reset handler typo spin_unlock_irq() => spin_lock_irq() 2010-04-11 13:37:33 -05:00
zalon.c
zorro7xx.c m68k: amiga - Zorro bus modalias support 2010-05-17 21:37:41 +02:00