Contents of /trunk/kernel26-alx/patches-2.6.29-r1/0310-2.6.29-fix-scsi-issues.patch
Parent Directory | Revision Log
Revision 878 -
(show annotations)
(download)
Wed Aug 5 14:11:29 2009 UTC (15 years, 1 month ago) by niro
File size: 3405 byte(s)
Wed Aug 5 14:11:29 2009 UTC (15 years, 1 month ago) by niro
File size: 3405 byte(s)
-added a comment
1 | # |
2 | # see http://bugzilla.kernel.org/show_bug.cgi?id=9872 |
3 | # |
4 | |
5 | diff -Naur linux-2.6.29/drivers/scsi/scsi_lib.c linux-2.6.29-alx/drivers/scsi/scsi_lib.c |
6 | --- linux-2.6.29/drivers/scsi/scsi_lib.c 2009-03-24 00:12:14.000000000 +0100 |
7 | +++ linux-2.6.29-alx/drivers/scsi/scsi_lib.c 2009-08-05 16:03:06.000000000 +0200 |
8 | @@ -1411,6 +1411,7 @@ |
9 | ret = scsi_setup_blk_pc_cmnd(sdev, req); |
10 | return scsi_prep_return(q, req, ret); |
11 | } |
12 | +EXPORT_SYMBOL(scsi_prep_fn); |
13 | |
14 | /* |
15 | * scsi_dev_queue_ready: if we can send requests to sdev, return 1 else |
16 | diff -Naur linux-2.6.29/drivers/scsi/scsi_priv.h linux-2.6.29-alx/drivers/scsi/scsi_priv.h |
17 | --- linux-2.6.29/drivers/scsi/scsi_priv.h 2009-03-24 00:12:14.000000000 +0100 |
18 | +++ linux-2.6.29-alx/drivers/scsi/scsi_priv.h 2009-08-05 16:03:58.000000000 +0200 |
19 | @@ -74,7 +74,6 @@ |
20 | extern void scsi_exit_queue(void); |
21 | struct request_queue; |
22 | struct request; |
23 | -extern int scsi_prep_fn(struct request_queue *, struct request *); |
24 | extern struct kmem_cache *scsi_sdb_cache; |
25 | |
26 | /* scsi_proc.c */ |
27 | diff -Naur linux-2.6.29/drivers/scsi/scsi_sysfs.c linux-2.6.29-alx/drivers/scsi/scsi_sysfs.c |
28 | --- linux-2.6.29/drivers/scsi/scsi_sysfs.c 2009-03-24 00:12:14.000000000 +0100 |
29 | +++ linux-2.6.29-alx/drivers/scsi/scsi_sysfs.c 2009-08-05 16:04:41.000000000 +0200 |
30 | @@ -420,29 +420,12 @@ |
31 | return err; |
32 | } |
33 | |
34 | -static int scsi_bus_remove(struct device *dev) |
35 | -{ |
36 | - struct device_driver *drv = dev->driver; |
37 | - struct scsi_device *sdev = to_scsi_device(dev); |
38 | - int err = 0; |
39 | - |
40 | - /* reset the prep_fn back to the default since the |
41 | - * driver may have altered it and it's being removed */ |
42 | - blk_queue_prep_rq(sdev->request_queue, scsi_prep_fn); |
43 | - |
44 | - if (drv && drv->remove) |
45 | - err = drv->remove(dev); |
46 | - |
47 | - return 0; |
48 | -} |
49 | - |
50 | struct bus_type scsi_bus_type = { |
51 | .name = "scsi", |
52 | .match = scsi_bus_match, |
53 | .uevent = scsi_bus_uevent, |
54 | .suspend = scsi_bus_suspend, |
55 | .resume = scsi_bus_resume, |
56 | - .remove = scsi_bus_remove, |
57 | }; |
58 | EXPORT_SYMBOL_GPL(scsi_bus_type); |
59 | |
60 | diff -Naur linux-2.6.29/drivers/scsi/sd.c linux-2.6.29-alx/drivers/scsi/sd.c |
61 | --- linux-2.6.29/drivers/scsi/sd.c 2009-03-24 00:12:14.000000000 +0100 |
62 | +++ linux-2.6.29-alx/drivers/scsi/sd.c 2009-08-05 16:05:26.000000000 +0200 |
63 | @@ -1961,6 +1961,8 @@ |
64 | { |
65 | struct scsi_disk *sdkp = dev_get_drvdata(dev); |
66 | |
67 | + blk_queue_prep_rq(sdkp->device->request_queue, scsi_prep_fn); |
68 | + |
69 | device_del(&sdkp->dev); |
70 | del_gendisk(sdkp->disk); |
71 | sd_shutdown(dev); |
72 | diff -Naur linux-2.6.29/drivers/scsi/sr.c linux-2.6.29-alx/drivers/scsi/sr.c |
73 | --- linux-2.6.29/drivers/scsi/sr.c 2009-03-24 00:12:14.000000000 +0100 |
74 | +++ linux-2.6.29-alx/drivers/scsi/sr.c 2009-08-05 16:06:09.000000000 +0200 |
75 | @@ -889,6 +889,7 @@ |
76 | { |
77 | struct scsi_cd *cd = dev_get_drvdata(dev); |
78 | |
79 | + blk_queue_prep_rq(cd->device->request_queue, scsi_prep_fn); |
80 | del_gendisk(cd->disk); |
81 | |
82 | mutex_lock(&sr_ref_mutex); |
83 | diff -Naur linux-2.6.29/include/scsi/scsi_driver.h linux-2.6.29-alx/include/scsi/scsi_driver.h |
84 | --- linux-2.6.29/include/scsi/scsi_driver.h 2009-03-24 00:12:14.000000000 +0100 |
85 | +++ linux-2.6.29-alx/include/scsi/scsi_driver.h 2009-08-05 16:06:52.000000000 +0200 |
86 | @@ -32,5 +32,6 @@ |
87 | int scsi_setup_fs_cmnd(struct scsi_device *sdev, struct request *req); |
88 | int scsi_prep_state_check(struct scsi_device *sdev, struct request *req); |
89 | int scsi_prep_return(struct request_queue *q, struct request *req, int ret); |
90 | +int scsi_prep_fn(struct request_queue *, struct request *); |
91 | |
92 | #endif /* _SCSI_SCSI_DRIVER_H */ |