Commit e35ad7ae authored by Linus Torvalds's avatar Linus Torvalds

Merge http://linux-scsi.bkbits.net/scsi-for-linus-2.5

into home.transmeta.com:/home/torvalds/v2.5/linux
parents 9a11cf9e 4075c99a
...@@ -1297,7 +1297,6 @@ Scsi_Host_Template aic7xxx_driver_template = { ...@@ -1297,7 +1297,6 @@ Scsi_Host_Template aic7xxx_driver_template = {
*/ */
.max_sectors = 8192, .max_sectors = 8192,
#endif #endif
#if defined CONFIG_HIGHIO
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,18) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,18)
/* Assume RedHat Distribution with its different HIGHIO conventions. */ /* Assume RedHat Distribution with its different HIGHIO conventions. */
.can_dma_32 = 1, .can_dma_32 = 1,
...@@ -1305,7 +1304,6 @@ Scsi_Host_Template aic7xxx_driver_template = { ...@@ -1305,7 +1304,6 @@ Scsi_Host_Template aic7xxx_driver_template = {
#else #else
.highmem_io = 1, .highmem_io = 1,
#endif #endif
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
.name = "aic7xxx", .name = "aic7xxx",
.slave_alloc = ahc_linux_slave_alloc, .slave_alloc = ahc_linux_slave_alloc,
......
...@@ -166,6 +166,9 @@ ahc_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -166,6 +166,9 @@ ahc_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
ahc->flags |= AHC_39BIT_ADDRESSING; ahc->flags |= AHC_39BIT_ADDRESSING;
ahc->platform_data->hw_dma_mask = ahc->platform_data->hw_dma_mask =
(bus_addr_t)(0x7FFFFFFFFFULL & (bus_addr_t)~0); (bus_addr_t)(0x7FFFFFFFFFULL & (bus_addr_t)~0);
} else {
ahc_pci_set_dma_mask(pdev, 0xffffffffULL);
ahc->platform_data->hw_dma_mask = 0xffffffffULL;
} }
#endif #endif
ahc->dev_softc = pci; ahc->dev_softc = pci;
......
This diff is collapsed.
...@@ -172,8 +172,7 @@ void scsi_times_out(Scsi_Cmnd *scmd) ...@@ -172,8 +172,7 @@ void scsi_times_out(Scsi_Cmnd *scmd)
* see whether the host or the device is offline. * see whether the host or the device is offline.
* *
* Return value: * Return value:
* FALSE when dev was taken offline by error recovery. TRUE OK to * 0 when dev was taken offline by error recovery. 1 OK to proceed.
* proceed.
**/ **/
int scsi_block_when_processing_errors(Scsi_Device *sdev) int scsi_block_when_processing_errors(Scsi_Device *sdev)
{ {
...@@ -1157,7 +1156,7 @@ static void scsi_eh_offline_sdevs(Scsi_Cmnd *sc_todo, struct Scsi_Host *shost) ...@@ -1157,7 +1156,7 @@ static void scsi_eh_offline_sdevs(Scsi_Cmnd *sc_todo, struct Scsi_Host *shost)
if (scsi_eh_eflags_chk(scmd, SCSI_EH_CMD_TIMEOUT)) if (scsi_eh_eflags_chk(scmd, SCSI_EH_CMD_TIMEOUT))
scmd->result |= (DRIVER_TIMEOUT << 24); scmd->result |= (DRIVER_TIMEOUT << 24);
scmd->device->online = FALSE; scmd->device->online = 0;
scsi_eh_finish_cmd(scmd, shost); scsi_eh_finish_cmd(scmd, shost);
} }
return; return;
...@@ -1222,7 +1221,7 @@ int scsi_decide_disposition(Scsi_Cmnd *scmd) ...@@ -1222,7 +1221,7 @@ int scsi_decide_disposition(Scsi_Cmnd *scmd)
* if the device is offline, then we clearly just pass the result back * if the device is offline, then we clearly just pass the result back
* up to the top level. * up to the top level.
*/ */
if (scmd->device->online == FALSE) { if (!scmd->device->online) {
SCSI_LOG_ERROR_RECOVERY(5, printk("%s: device offline - report" SCSI_LOG_ERROR_RECOVERY(5, printk("%s: device offline - report"
" as SUCCESS\n", " as SUCCESS\n",
__FUNCTION__)); __FUNCTION__));
......
...@@ -1060,7 +1060,7 @@ void scsi_request_fn(request_queue_t * q) ...@@ -1060,7 +1060,7 @@ void scsi_request_fn(request_queue_t * q)
*/ */
void scsi_block_requests(struct Scsi_Host * SHpnt) void scsi_block_requests(struct Scsi_Host * SHpnt)
{ {
SHpnt->host_self_blocked = TRUE; SHpnt->host_self_blocked = 1;
} }
/* /*
...@@ -1087,7 +1087,7 @@ void scsi_unblock_requests(struct Scsi_Host * SHpnt) ...@@ -1087,7 +1087,7 @@ void scsi_unblock_requests(struct Scsi_Host * SHpnt)
{ {
Scsi_Device *SDloop; Scsi_Device *SDloop;
SHpnt->host_self_blocked = FALSE; SHpnt->host_self_blocked = 0;
/* Now that we are unblocked, try to start the queues. */ /* Now that we are unblocked, try to start the queues. */
list_for_each_entry(SDloop, &SHpnt->my_devices, siblings) list_for_each_entry(SDloop, &SHpnt->my_devices, siblings)
scsi_queue_next_request(SDloop->request_queue, NULL); scsi_queue_next_request(SDloop->request_queue, NULL);
......
...@@ -537,9 +537,20 @@ static int sd_ioctl(struct inode * inode, struct file * filp, ...@@ -537,9 +537,20 @@ static int sd_ioctl(struct inode * inode, struct file * filp,
return sd_hdio_getgeo(bdev, (struct hd_geometry *)arg); return sd_hdio_getgeo(bdev, (struct hd_geometry *)arg);
} }
error = scsi_cmd_ioctl(bdev, cmd, arg); /*
if (error != -ENOTTY) * Send SCSI addressing ioctls directly to mid level, send other
return error; * ioctls to block level and then onto mid level if they can't be
* resolved.
*/
switch (cmd) {
case SCSI_IOCTL_GET_IDLUN:
case SCSI_IOCTL_GET_BUS_NUMBER:
return scsi_ioctl(sdp, cmd, (void *)arg);
default:
error = scsi_cmd_ioctl(bdev, cmd, arg);
if (error != -ENOTTY)
return error;
}
return scsi_ioctl(sdp, cmd, (void *)arg); return scsi_ioctl(sdp, cmd, (void *)arg);
} }
......
...@@ -434,6 +434,17 @@ static int sr_block_ioctl(struct inode *inode, struct file *file, unsigned cmd, ...@@ -434,6 +434,17 @@ static int sr_block_ioctl(struct inode *inode, struct file *file, unsigned cmd,
unsigned long arg) unsigned long arg)
{ {
struct scsi_cd *cd = scsi_cd(inode->i_bdev->bd_disk); struct scsi_cd *cd = scsi_cd(inode->i_bdev->bd_disk);
struct scsi_device *sdev = cd->device;
/*
* Send SCSI addressing ioctls directly to mid level, send other
* ioctls to cdrom/block level.
*/
switch (cmd) {
case SCSI_IOCTL_GET_IDLUN:
case SCSI_IOCTL_GET_BUS_NUMBER:
return scsi_ioctl(sdev, cmd, (void *)arg);
}
return cdrom_ioctl(&cd->cdi, inode, cmd, arg); return cdrom_ioctl(&cd->cdi, inode, cmd, arg);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment