Magellan Linux

Contents of /trunk/kernel26-alx/patches-2.6.29-r1/0310-2.6.29-fix-scsi-issues.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 878 - (show annotations) (download)
Wed Aug 5 14:11:29 2009 UTC (14 years, 9 months 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 */