projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[powerpc.git]
/
drivers
/
scsi
/
scsi.c
diff --git
a/drivers/scsi/scsi.c
b/drivers/scsi/scsi.c
index
3784392
..
c59f315
100644
(file)
--- a/
drivers/scsi/scsi.c
+++ b/
drivers/scsi/scsi.c
@@
-96,22
+96,26
@@
unsigned int scsi_logging_level;
EXPORT_SYMBOL(scsi_logging_level);
#endif
EXPORT_SYMBOL(scsi_logging_level);
#endif
+/* NB: These are exposed through /proc/scsi/scsi and form part of the ABI.
+ * You may not alter any existing entry (although adding new ones is
+ * encouraged once assigned by ANSI/INCITS T10
+ */
static const char *const scsi_device_types[] = {
static const char *const scsi_device_types[] = {
- "Direct
a
ccess ",
- "Sequential
a
ccess",
+ "Direct
-A
ccess ",
+ "Sequential
-A
ccess",
"Printer ",
"Processor ",
"WORM ",
"Printer ",
"Processor ",
"WORM ",
- "CD
/DVD
",
+ "CD
-ROM
",
"Scanner ",
"Scanner ",
- "Optical
memory
",
- "Medi
a changer
",
+ "Optical
Device
",
+ "Medi
um Changer
",
"Communications ",
"ASC IT8 ",
"ASC IT8 ",
"RAID ",
"Enclosure ",
"Communications ",
"ASC IT8 ",
"ASC IT8 ",
"RAID ",
"Enclosure ",
- "Direct
access
RBC",
+ "Direct
-Access-
RBC",
"Optical card ",
"Bridge controller",
"Object storage ",
"Optical card ",
"Bridge controller",
"Object storage ",
@@
-124,7
+128,7
@@
const char * scsi_device_type(unsigned type)
return "Well-known LUN ";
if (type == 0x1f)
return "No Device ";
return "Well-known LUN ";
if (type == 0x1f)
return "No Device ";
- if (type > ARRAY_SIZE(scsi_device_types))
+ if (type >
=
ARRAY_SIZE(scsi_device_types))
return "Unknown ";
return scsi_device_types[type];
}
return "Unknown ";
return scsi_device_types[type];
}
@@
-588,12
+592,6
@@
int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
return rtn;
}
return rtn;
}
-
-/*
- * Per-CPU I/O completion queue.
- */
-static DEFINE_PER_CPU(struct list_head, scsi_done_q);
-
/**
* scsi_req_abort_cmd -- Request command recovery for the specified command
* cmd: pointer to the SCSI command of interest
/**
* scsi_req_abort_cmd -- Request command recovery for the specified command
* cmd: pointer to the SCSI command of interest
@@
-873,10
+871,14
@@
EXPORT_SYMBOL(scsi_device_get);
*/
void scsi_device_put(struct scsi_device *sdev)
{
*/
void scsi_device_put(struct scsi_device *sdev)
{
+ struct module *module = sdev->host->hostt->module;
+
+#ifdef CONFIG_MODULE_UNLOAD
/* The module refcount will be zero if scsi_device_get()
* was called from a module removal routine */
/* The module refcount will be zero if scsi_device_get()
* was called from a module removal routine */
- if (likely(module_refcount(sdev->host->hostt->module) != 0))
- module_put(sdev->host->hostt->module);
+ if (module && module_refcount(module) != 0)
+ module_put(module);
+#endif
put_device(&sdev->sdev_gendev);
}
EXPORT_SYMBOL(scsi_device_put);
put_device(&sdev->sdev_gendev);
}
EXPORT_SYMBOL(scsi_device_put);
@@
-1057,7
+1059,7
@@
int scsi_device_cancel(struct scsi_device *sdev, int recovery)
spin_lock_irqsave(&sdev->list_lock, flags);
list_for_each_entry(scmd, &sdev->cmd_list, list) {
spin_lock_irqsave(&sdev->list_lock, flags);
list_for_each_entry(scmd, &sdev->cmd_list, list) {
- if (scmd->request
&& scmd->request->rq_status != RQ_INACTIVE
) {
+ if (scmd->request) {
/*
* If we are unable to remove the timer, it means
* that the command has already timed out or
/*
* If we are unable to remove the timer, it means
* that the command has already timed out or
@@
-1094,7
+1096,7
@@
MODULE_PARM_DESC(scsi_logging_level, "a bit mask of logging levels");
static int __init init_scsi(void)
{
static int __init init_scsi(void)
{
- int error
, i
;
+ int error;
error = scsi_init_queue();
if (error)
error = scsi_init_queue();
if (error)
@@
-1115,8
+1117,7
@@
static int __init init_scsi(void)
if (error)
goto cleanup_sysctl;
if (error)
goto cleanup_sysctl;
- for_each_possible_cpu(i)
- INIT_LIST_HEAD(&per_cpu(scsi_done_q, i));
+ scsi_netlink_init();
printk(KERN_NOTICE "SCSI subsystem initialized\n");
return 0;
printk(KERN_NOTICE "SCSI subsystem initialized\n");
return 0;
@@
-1138,6
+1139,7
@@
cleanup_queue:
static void __exit exit_scsi(void)
{
static void __exit exit_scsi(void)
{
+ scsi_netlink_exit();
scsi_sysfs_unregister();
scsi_exit_sysctl();
scsi_exit_hosts();
scsi_sysfs_unregister();
scsi_exit_sysctl();
scsi_exit_hosts();