linux/drivers/scsi
Linus Torvalds 7b3d9545f9 Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done""
This reverts commit ac40532ef0, which gets
us back the original cleanup of 6f5391c283.

It turns out that the bug that was triggered by that commit was
apparently not actually triggered by that commit at all, and just the
testing conditions had changed enough to make it appear to be due to it.

The real problem seems to have been found by Peter Osterlund:

  "pktcdvd sets it [block device size] when opening the /dev/pktcdvd
   device, but when the drive is later opened as /dev/scd0, there is
   nothing that sets it back.  (Btw, 40944 is possible if the disk is a
   CDRW that was formatted with "cdrwtool -m 10236".)

   The problem is that pktcdvd opens the cd device in non-blocking mode
   when pktsetup is run, and doesn't close it again until pktsetup -d is
   run.  The effect is that if you meanwhile open the cd device,
   blkdev.c:do_open() doesn't call bd_set_size() because
   bdev->bd_openers is non-zero."

In particular, to repeat the bug (regardless of whether commit
6f5391c283 is applied or not):

  " 1. Start with an empty drive.
    2. pktsetup 0 /dev/scd0
    3. Insert a CD containing an isofs filesystem.
    4. mount /dev/pktcdvd/0 /mnt/tmp
    5. umount /mnt/tmp
    6. Press the eject button.
    7. Insert a DVD containing a non-writable filesystem.
    8. mount /dev/scd0 /mnt/tmp
    9. find /mnt/tmp -type f -print0 | xargs -0 sha1sum >/dev/null
    10. If the DVD contains data beyond the physical size of a CD, you
        get I/O errors in the terminal, and dmesg reports lots of
        "attempt to access beyond end of device" errors."

which in turn is because the nested open after the media change won't
cause the size to be set properly (because the original open still holds
the block device, and we only do the bd_set_size() when we don't have
other people holding the device open).

The proper fix for that is probably to just do something like

	bdev->bd_inode->i_size = (loff_t)get_capacity(disk)<<9;

in fs/block_dev.c:do_open() even for the cases where we're not the
original opener (but *not* call bd_set_size(), since that will also
change the block size of the device).

Cc: Peter Osterlund <petero2@telia.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-01-06 10:17:12 -08:00
..
aacraid [SCSI] aacraid: fix security weakness 2007-11-11 17:35:48 -06:00
aic7xxx Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-10-23 16:37:29 -07:00
aic7xxx_old
aic94xx aic94xx_sds: rename FLASH_SIZE 2007-11-14 18:45:44 -08:00
arcmsr deal with resource allocation bugs in arcmsr 2007-10-29 07:41:33 -07:00
arm [ARM] Fix an rpc_defconfig regression 2007-10-31 15:21:35 +00:00
dpt
ibmvscsi [SCSI] ibmvscsi: Prevent IO during partner login 2007-11-03 12:10:36 -05:00
libsas Use helpers to obtain task pid in printks 2007-10-19 11:53:43 -07:00
lpfc [SCSI] lpfc : Correct queue tag handling 2007-11-03 12:09:29 -05:00
megaraid [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
pcmcia [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.02.00-k5. 2007-10-23 15:55:16 -04:00
qla4xxx Fix misspellings of "system", "controller", "interrupt" and "necessary". 2007-10-19 23:10:43 +02:00
sym53c8xx_2 [SCSI] sym53c8xx: fix "irq X: nobody cared" regression 2007-12-18 16:04:09 -06:00
.gitignore
3w-9xxx.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
3w-9xxx.h [SCSI] 3w-9xxx: add support for 9690SA 2007-07-21 08:57:40 -05:00
3w-xxxx.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c [SCSI] 53c700: Remove printk, which triggers because of low scsi clock on SNI RMs 2007-07-14 19:12:43 -05:00
53c700.h [SCSI] 53c700: m68k support for the 53c700 SCSI core 2007-06-17 16:15:56 -05:00
53c700.scr
a100u2w.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
a100u2w.h [SCSI] a100u2w: Convert into Linux style 2007-06-17 16:09:29 -05:00
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
advansys.c [SCSI] advansys: Changes to work on parisc 2007-10-12 14:54:13 -04:00
aha152x.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
aha152x.h [SCSI] aha152x: fix debug mode symbol conflict 2007-08-04 09:11:06 -05:00
aha1542.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
aha1542.h
aha1740.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
aha1740.h
aic7xxx_old.c [SCSI] aic7xxx_old: fix accidental logic reversal 2007-10-18 08:40:42 -04:00
atari_dma_emul.c
atari_NCR5380.c m68k: sg fallout 2007-10-24 08:55:40 +02:00
atari_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
atari_scsi.h
atp870u.c
atp870u.h
blz1230.c
blz2060.c
BusLogic.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
BusLogic.h
bvme6000_scsi.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
ch.c
constants.c [SCSI] Fix device not ready printk 2007-10-12 14:51:56 -04:00
cyberstorm.c
cyberstormII.c
dc395x.c Fix misspellings of "system", "controller", "interrupt" and "necessary". 2007-10-19 23:10:43 +02:00
dc395x.h
dec_esp.c
dmx3191d.c
dpt_i2o.c [SCSI] dpt_i2o: driver is only 32 bit so don't set 64 bit DMA mask 2007-12-18 16:04:08 -06:00
dpti.h revert "dpt_i2o: convert to SCSI hotplug model" 2007-12-10 19:43:54 -08:00
dtc.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
dtc.h
eata_generic.h
eata_pio.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
eata_pio.h
eata.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
esp_scsi.c esp_scsi: fix reset cleanup spinlock recursion 2007-12-10 19:43:55 -08:00
esp_scsi.h [SCSI] ESP: Revert ESP_BUS_TIMEOUT back down to 250 2007-07-31 10:51:25 -05:00
fastlane.c
fd_mcs.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
fdomain.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
fdomain.h
FlashPoint.c FlashPoint, use BIT instead of BITW 2007-10-19 11:53:42 -07:00
g_NCR5380_mmio.c
g_NCR5380.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c [SCSI] gdth: Move members from SCp to gdth_cmndinfo, stage 2 2007-10-12 14:56:09 -04:00
gdth_proc.h [SCSI] gdth: clean up host private data 2007-10-12 14:55:46 -04:00
gdth.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-10-23 16:37:29 -07:00
gdth.h [SCSI] gdth: !use_sg cleanup and use of scsi accessors 2007-10-12 14:56:13 -04:00
gvp11.c
gvp11.h
hosts.c [SCSI] make supported_mode default to initiator. 2007-10-17 21:56:12 -04:00
hptiop.c [SCSI] hptiop: avoid buffer overflow when returning sense data 2007-10-17 21:56:13 -04:00
hptiop.h [SCSI] hptiop: adding new firmware interface and more PCI device IDs 2007-10-12 14:46:40 -04:00
ibmmca.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
ide-scsi.c ide-scsi: add ide_scsi_hex_dump() helper 2007-12-12 23:31:57 +01:00
imm.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
imm.h
in2000.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
in2000.h
initio.c [SCSI] initio: bugfix for accessors patch 2007-12-18 16:04:15 -06:00
initio.h [SCSI] initio: Convert into a real Linux driver and update to modern style 2007-05-22 11:08:56 -05:00
ipr.c SG: Change sg_set_page() to take length and offset argument 2007-10-24 11:20:47 +02:00
ipr.h
ips.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
ips.h [SCSI] ips: Update version information 2007-10-12 14:51:44 -04:00
iscsi_tcp.c [SCSI] iscsi_tcp: fix potential lockup with write commands 2007-11-14 14:51:58 -06:00
iscsi_tcp.h [SCSI] iscsi_tcp: fix potential lockup with write commands 2007-11-14 14:51:58 -06:00
jazz_esp.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
Kconfig PCI: Add Kconfig option to disable deprecated pci_find_* API 2007-11-05 13:35:17 -08:00
lasi700.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
libiscsi.c [SCSI] iscsi: return data transfer residual for data-out commands 2007-11-14 14:52:16 -06:00
libsrp.c [SCSI] tgt: convert libsrp and ibmvstgt to use srp_transport 2007-10-12 14:37:57 -04:00
mac53c94.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
mac53c94.h
mac_esp.c
mac_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
mac_scsi.h
Makefile [SCSI] fc4: remove this and all associated drivers 2007-10-17 21:53:55 -04:00
mca_53c9x.c
megaraid.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
megaraid.h
mesh.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
mesh.h
mvme16x_scsi.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
mvme147.c
mvme147.h
ncr53c8xx.c [SCSI] Remove ->pid field from scsi_cmnd 2007-10-12 14:51:52 -04:00
ncr53c8xx.h [SCSI] ncr53c8xx: Call scsi_host_put in release 2007-10-12 14:51:18 -04:00
NCR53c406a.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
NCR53C9x.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
NCR53C9x.h
NCR5380.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
NCR5380.h [SCSI] NCR5380: Use scsi_eh API for REQUEST_SENSE invocation 2007-10-12 14:55:07 -04:00
NCR_D700.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
NCR_D700.h
NCR_Q720.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
nsp32.h define global BIT macro 2007-10-19 11:53:42 -07:00
oktagon_esp.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
oktagon_io.S
osst_detect.h
osst_options.h
osst.c [SCSI] osst: fix if (...) \n #if... cases missing semicolons when false 2007-10-27 14:31:06 -05:00
osst.h [SCSI] osst: Use mutex instead of semaphore 2007-10-12 14:50:55 -04:00
pas16.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
pas16.h
ppa.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
ppa.h
ps3rom.c powerpc: Fix fallout from sg_page() changes 2007-10-23 09:13:14 +02:00
psi240i.c
psi240i.h
psi_chip.h
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c [SCSI] qla1280: convert to use the data buffer accessors 2007-11-14 18:25:44 -06:00
qla1280.h [SCSI] qla1280: eliminate wasted space in request and response ring 2007-10-23 12:35:35 -04:00
qlogicfas408.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
qlogicfas408.h
qlogicfas.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
qlogicpti_asm.c
qlogicpti.c qlogicpti: sg chaining support 2007-10-16 11:14:19 +02:00
qlogicpti.h [SCSI] qlogicpti: Add a slave_configure method 2007-10-12 14:52:38 -04:00
raid_class.c
script_asm.pl
scsi_debug.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
scsi_debug.h
scsi_devinfo.c [SCSI] Add QUANTUM XP34301 to the blacklist 2007-10-12 14:39:19 -04:00
scsi_error.c Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done"" 2008-01-06 10:17:12 -08:00
scsi_ioctl.c
scsi_lib_dma.c [SCSI] don't build scsi_dma_{map,unmap} for !HAS_DMA 2007-07-14 19:28:10 -05:00
scsi_lib.c Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done"" 2008-01-06 10:17:12 -08:00
scsi_logging.h
scsi_module.c
scsi_netlink.c [NET]: make netlink user -> kernel interface synchronious 2007-10-10 21:15:29 -07:00
scsi_priv.h Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done"" 2008-01-06 10:17:12 -08:00
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c SCSI: add asynchronous event notification API 2007-11-03 22:23:02 -04:00
scsi_sysctl.c [SCSI] small cleanups 2007-07-18 11:16:32 -05:00
scsi_sysfs.c [SCSI] scsi_sysfs: restore prep_fn when ULD is removed 2008-01-02 13:08:00 -06:00
scsi_tgt_if.c [SCSI] tgt: add I_T nexus support 2007-10-12 14:37:50 -04:00
scsi_tgt_lib.c scsi: simplify scsi_free_sgtable() 2007-10-16 11:12:37 +02:00
scsi_tgt_priv.h [SCSI] tgt: add I_T nexus support 2007-10-12 14:37:50 -04:00
scsi_transport_api.h
scsi_transport_fc_internal.h [SCSI] fc_transport: add target driver support 2007-10-12 14:46:58 -04:00
scsi_transport_fc.c [SCSI] Fix signness of parameters in scsi module 2007-10-12 14:49:11 -04:00
scsi_transport_iscsi.c [NET]: make netlink user -> kernel interface synchronious 2007-10-10 21:15:29 -07:00
scsi_transport_sas.c [SCSI] bsg: make class backlinks 2007-07-21 08:58:23 -05:00
scsi_transport_spi.c [SCSI] scsi_transport_spi: fix domain validation failure from incorrect width setting 2007-09-22 08:52:12 -05:00
scsi_transport_srp_internal.h [SCSI] scsi_transport_srp: remove tgt dependencies 2007-10-12 14:38:09 -04:00
scsi_transport_srp.c [SCSI] SRP transport: only remove our own entries 2008-01-04 14:15:51 -06:00
scsi_typedefs.h
scsi_wait_scan.c
scsi.c Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done"" 2008-01-06 10:17:12 -08:00
scsi.h
scsicam.c
sd.c Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done"" 2008-01-06 10:17:12 -08:00
seagate.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
sg.c Initialise scatter/gather list in sg driver 2007-10-29 09:18:03 +01:00
sgiwd93.c Convert SGI IP22 and specific drivers to platform_device. 2007-05-11 17:00:29 +01:00
sim710.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-22 11:36:49 -07:00
sni_53c710.c [SCSI] sni_53c710: Cleanup 2007-07-14 19:12:15 -05:00
sr_ioctl.c
sr_vendor.c
sr.c Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done"" 2008-01-06 10:17:12 -08:00
sr.h
st_options.h
st.c [SCSI] st: fix kernel BUG at include/linux/scatterlist.h:59! 2007-12-18 16:04:13 -06:00
st.h [SCSI] st: Use mutex instead of semaphore 2007-07-31 10:44:01 -05:00
stex.c [SCSI] add use_sg_chaining option to scsi_host_template 2007-10-16 11:24:32 +02:00
sun3_NCR5380.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
sun3_scsi_vme.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
sun3_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
sun3_scsi.h
sun3x_esp.c m68k: sg fallout 2007-10-24 08:55:40 +02:00
sun_esp.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
sym53c416.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
sym53c416.h
t128.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
t128.h
tmscsim.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
tmscsim.h [SCSI] tmscsim: Further clean-up of the driver 2007-07-14 18:56:33 -05:00
u14-34f.c Fixup u14-34f ENABLE_SG_CHAINING 2007-10-16 11:24:44 +02:00
ultrastor.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
ultrastor.h
wd33c93.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
wd33c93.h Spelling fix: explicitly 2007-10-19 23:22:55 +02:00
wd7000.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
zalon.c
zorro7xx.c m68k: zorro7xx needs <asm/amigahw.h> 2007-11-29 09:24:52 -08:00