Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 15678
b: refs/heads/master
c: 5d06b6b
h: refs/heads/master
v: v3
  • Loading branch information
Jeff Garzik committed Nov 12, 2005
1 parent a9d4415 commit fbd233e
Show file tree
Hide file tree
Showing 396 changed files with 7,056 additions and 8,680 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0192d69789582f02c015cba77cac514c7291c347
refs/heads/master: 5d06b6bef96ebb27ae9e36656df3c5ef0a2a93ca
29 changes: 29 additions & 0 deletions trunk/Documentation/cciss.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,32 @@ hardware and it is important to prevent the kernel from attempting to directly
access these devices too, as if the array controller were merely a SCSI
controller in the same way that we are allowing it to access SCSI tape drives.

SCSI error handling for tape drives and medium changers
-------------------------------------------------------

The linux SCSI mid layer provides an error handling protocol which
kicks into gear whenever a SCSI command fails to complete within a
certain amount of time (which can vary depending on the command).
The cciss driver participates in this protocol to some extent. The
normal protocol is a four step process. First the device is told
to abort the command. If that doesn't work, the device is reset.
If that doesn't work, the SCSI bus is reset. If that doesn't work
the host bus adapter is reset. Because the cciss driver is a block
driver as well as a SCSI driver and only the tape drives and medium
changers are presented to the SCSI mid layer, and unlike more
straightforward SCSI drivers, disk i/o continues through the block
side during the SCSI error recovery process, the cciss driver only
implements the first two of these actions, aborting the command, and
resetting the device. Additionally, most tape drives will not oblige
in aborting commands, and sometimes it appears they will not even
obey a reset coommand, though in most circumstances they will. In
the case that the command cannot be aborted and the device cannot be
reset, the device will be set offline.

In the event the error handling code is triggered and a tape drive is
successfully reset or the tardy command is successfully aborted, the
tape drive may still not allow i/o to continue until some command
is issued which positions the tape to a known position. Typically you
must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example)
before i/o can proceed again to a tape drive which was reset.

2 changes: 1 addition & 1 deletion trunk/Documentation/early-userspace/README
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ the image from specifications.
CPIO ARCHIVE method

You can create a cpio archive that contains the early userspace image.
Youre cpio archive should be specified in CONFIG_INITRAMFS_SOURCE and it
Your cpio archive should be specified in CONFIG_INITRAMFS_SOURCE and it
will be used directly. Only a single cpio file may be specified in
CONFIG_INITRAMFS_SOURCE and directory and file names are not allowed in
combination with a cpio archive.
Expand Down
2 changes: 0 additions & 2 deletions trunk/Documentation/scsi/00-INDEX
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ ppa.txt
- info on driver for IOmega zip drive
qlogicfas.txt
- info on driver for QLogic FASxxx based adapters
qlogicisp.txt
- info on driver for QLogic ISP 1020 based adapters
scsi-generic.txt
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
scsi.txt
Expand Down
3 changes: 1 addition & 2 deletions trunk/Documentation/scsi/qlogicfas.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ Qlogic boards:
* IQ-PCI-10
* IQ-PCI-D

is provided by the qlogicisp.c driver. Check README.qlogicisp for
details.
is provided by the qla1280 driver.

Nor does it support the PCI-Basic, which is supported by the
'am53c974' driver.
Expand Down
30 changes: 0 additions & 30 deletions trunk/Documentation/scsi/qlogicisp.txt

This file was deleted.

8 changes: 4 additions & 4 deletions trunk/Documentation/scsi/scsi_eh.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ with the command.
The timeout handler is scsi_times_out(). When a timeout occurs, this
function

1. invokes optional hostt->eh_timedout() callback. Return value can
1. invokes optional hostt->eh_timed_out() callback. Return value can
be one of

- EH_HANDLED
This indicates that eh_timedout() dealt with the timeout. The
This indicates that eh_timed_out() dealt with the timeout. The
scmd is passed to __scsi_done() and thus linked into per-cpu
scsi_done_q. Normal command completion described in [1-2-1]
follows.
Expand All @@ -105,7 +105,7 @@ function
command will time out again.

- EH_NOT_HANDLED
This is the same as when eh_timedout() callback doesn't exist.
This is the same as when eh_timed_out() callback doesn't exist.
Step #2 is taken.

2. scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD) is invoked for the
Expand Down Expand Up @@ -142,7 +142,7 @@ are linked on shost->eh_cmd_q.
Note that this does not mean lower layers are quiescent. If a LLDD
completed a scmd with error status, the LLDD and lower layers are
assumed to forget about the scmd at that point. However, if a scmd
has timed out, unless hostt->eh_timedout() made lower layers forget
has timed out, unless hostt->eh_timed_out() made lower layers forget
about the scmd, which currently no LLDD does, the command is still
active as long as lower layers are concerned and completion could
occur at any time. Of course, all such completions are ignored as the
Expand Down
4 changes: 2 additions & 2 deletions trunk/Documentation/scsi/scsi_mid_low_api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ Next, there is a movement to "outlaw" typedefs introducing synonyms for
struct tags. Both can be still found in the SCSI subsystem, but
the typedefs have been moved to a single file, scsi_typedefs.h to
make their future removal easier, for example:
"typedef struct scsi_host_template Scsi_Host_Template;"
"typedef struct scsi_cmnd Scsi_Cmnd;"

Also, most C99 enhancements are encouraged to the extent they are supported
by the relevant gcc compilers. So C99 style structure and array
Expand Down Expand Up @@ -718,7 +718,7 @@ void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
*
* Defined in: drivers/scsi/scsi.c .
**/
int scsi_track_queue_full(Scsi_Device *sdev, int depth)
int scsi_track_queue_full(struct scsi_device *sdev, int depth)


/**
Expand Down
1 change: 0 additions & 1 deletion trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -1988,7 +1988,6 @@ PKTCDVD DRIVER
P: Peter Osterlund
M: petero2@telia.com
L: linux-kernel@vger.kernel.org
L: packet-writing@suse.com
S: Maintained

POSIX CLOCKS and TIMERS
Expand Down
7 changes: 4 additions & 3 deletions trunk/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 14
EXTRAVERSION =
SUBLEVEL = 15
EXTRAVERSION =-rc1
NAME=Affluent Albatross

# *DOCUMENTATION*
Expand Down Expand Up @@ -168,7 +168,8 @@ KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION)

SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ )
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc64/powerpc/ )

# Cross compiling and selecting different set of gcc/bin-utils
# ---------------------------------------------------------------------------
Expand Down
38 changes: 19 additions & 19 deletions trunk/arch/arm/common/locomo.c
Original file line number Diff line number Diff line change
Expand Up @@ -550,17 +550,17 @@ struct locomo_save_data {
u16 LCM_SPIMD;
};

static int locomo_suspend(struct device *dev, pm_message_t state)
static int locomo_suspend(struct platform_device *dev, pm_message_t state)
{
struct locomo *lchip = dev_get_drvdata(dev);
struct locomo *lchip = platform_get_drvdata(dev);
struct locomo_save_data *save;
unsigned long flags;

save = kmalloc(sizeof(struct locomo_save_data), GFP_KERNEL);
if (!save)
return -ENOMEM;

dev->power.saved_state = (void *) save;
dev->dev.power.saved_state = (void *) save;

spin_lock_irqsave(&lchip->lock, flags);

Expand Down Expand Up @@ -594,14 +594,14 @@ static int locomo_suspend(struct device *dev, pm_message_t state)
return 0;
}

static int locomo_resume(struct device *dev)
static int locomo_resume(struct platform_device *dev)
{
struct locomo *lchip = dev_get_drvdata(dev);
struct locomo *lchip = platform_get_drvdata(dev);
struct locomo_save_data *save;
unsigned long r;
unsigned long flags;

save = (struct locomo_save_data *) dev->power.saved_state;
save = (struct locomo_save_data *) dev->dev.power.saved_state;
if (!save)
return 0;

Expand Down Expand Up @@ -760,27 +760,26 @@ static void __locomo_remove(struct locomo *lchip)
kfree(lchip);
}

static int locomo_probe(struct device *dev)
static int locomo_probe(struct platform_device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct resource *mem;
int irq;

mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
mem = platform_get_resource(dev, IORESOURCE_MEM, 0);
if (!mem)
return -EINVAL;
irq = platform_get_irq(pdev, 0);
irq = platform_get_irq(dev, 0);

return __locomo_probe(dev, mem, irq);
return __locomo_probe(&dev->dev, mem, irq);
}

static int locomo_remove(struct device *dev)
static int locomo_remove(struct platform_device *dev)
{
struct locomo *lchip = dev_get_drvdata(dev);
struct locomo *lchip = platform__get_drvdata(dev);

if (lchip) {
__locomo_remove(lchip);
dev_set_drvdata(dev, NULL);
platform_set_drvdata(dev, NULL);
}

return 0;
Expand All @@ -792,15 +791,16 @@ static int locomo_remove(struct device *dev)
* the per-machine level, and then have this driver pick
* up the registered devices.
*/
static struct device_driver locomo_device_driver = {
.name = "locomo",
.bus = &platform_bus_type,
static struct platform_driver locomo_device_driver = {
.probe = locomo_probe,
.remove = locomo_remove,
#ifdef CONFIG_PM
.suspend = locomo_suspend,
.resume = locomo_resume,
#endif
.driver = {
.name = "locomo",
},
};

/*
Expand Down Expand Up @@ -1126,13 +1126,13 @@ static int __init locomo_init(void)
{
int ret = bus_register(&locomo_bus_type);
if (ret == 0)
driver_register(&locomo_device_driver);
platform_driver_register(&locomo_device_driver);
return ret;
}

static void __exit locomo_exit(void)
{
driver_unregister(&locomo_device_driver);
platform_driver_unregister(&locomo_device_driver);
bus_unregister(&locomo_bus_type);
}

Expand Down
Loading

0 comments on commit fbd233e

Please sign in to comment.