SCSI Bugfixes for 2.6.0-test9
Subsystems (2)
PATCH 1/1 SCSI Bugfixes for 2.6.0-test9
This contains the current slew of bug fixes harvested from the scsi mailing lists. I think we could still do with getting our slave_alloc/destroy bug sorted out, and finally getting our mid layer refcounting up to the level where were robust against surprise ejection, but those could also wait for 2.6.1
You can pull the changes from:
bk://linux-scsi.bkbits.net/scsi-bugfixes-2.6
The short changelogs are:
Alan Stern:
o Off-by-one bug in user page calculations for Direct I/O
Andrew Morton:
o fix scsi_report_lun_scan bug
Christoph Hellwig:
o scsi_device refcounting and list lockdown
James Bottomley:
o Add missing .module initialisation to lasi700 and sim710
o lasi700: Fix missed variable name change causing module load error
James
Quoted 18 lines · James Bottomley
This contains the current slew of bug fixes harvested from the scsi mailing lists. I think we could still do with getting our slave_alloc/destroy bug sorted out, and finally getting our mid layer refcounting up to the level where were robust against surprise ejection, but those could also wait for 2.6.1
You can pull the changes from:
bk://linux-scsi.bkbits.net/scsi-bugfixes-2.6
The short changelogs are:
Alan Stern:
o Off-by-one bug in user page calculations for Direct I/OAndrew Morton:
o fixscsi_report_lun_scanbug
Quoted 6 lines
Christoph Hellwig:
oscsi_devicerefcounting and list lockdownJames Bottomley:
o Add missing .module initialisation to lasi700 and sim710
o lasi700: Fix missed variable name change causing module load error
James,
You might like to add this one that OSDL found
(if they haven't already submitted a fix):
Changelog:
When detecting a locked sg device (O_EXCL) return -EBUSY (rather than 0) from sg_open()
Doug Gilbert
drivers/scsi/sg.c260t9ma renamed from drivers/scsi/sg.c +7 -3
@@ -243,7 +243,7 @@ Sg_device *sdp; Sg_fd *sfp; int res; - int retval = -EBUSY; + int retval; SCSI_LOG_TIMEOUT(3, printk("sg_open: dev=%d, flags=0x%x\n", dev, flags)); sdp = sg_get_dev(dev);
@@ -270,8 +270,10 @@ retval = -EPERM; /* Can't lock it with read only access */ goto error_out; } - if (sdp->headfp && (flags & O_NONBLOCK)) + if (sdp->headfp && (flags & O_NONBLOCK)) { + retval = -EBUSY; goto error_out; + } res = 0; __wait_event_interruptible(sdp->o_excl_wait, ((sdp->headfp || sdp->exclude) ? 0 : (sdp->exclude = 1)), res);
@@ -280,8 +282,10 @@ goto error_out; } } else if (sdp->exclude) { /* some other fd has an exclusive lock on dev */ - if (flags & O_NONBLOCK) + if (flags & O_NONBLOCK) { + retval = -EBUSY; goto error_out; + } res = 0; __wait_event_interruptible(sdp->o_excl_wait, (!sdp->exclude), res);