aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/DAC960.c13
-rw-r--r--drivers/block/Kconfig1
-rw-r--r--drivers/block/cciss.c1
-rw-r--r--drivers/block/cciss_scsi.c6
-rw-r--r--drivers/block/loop.c2
-rw-r--r--drivers/block/ub.c78
-rw-r--r--drivers/block/viodasd.c2
7 files changed, 31 insertions, 72 deletions
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
index 45bcda544880..dd8a1501142f 100644
--- a/drivers/block/DAC960.c
+++ b/drivers/block/DAC960.c
@@ -17,8 +17,8 @@
17*/ 17*/
18 18
19 19
20#define DAC960_DriverVersion "2.5.47" 20#define DAC960_DriverVersion "2.5.48"
21#define DAC960_DriverDate "14 November 2002" 21#define DAC960_DriverDate "14 May 2006"
22 22
23 23
24#include <linux/module.h> 24#include <linux/module.h>
@@ -4780,15 +4780,16 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)
4780 (NewPhysicalDeviceInfo->LogicalUnit != 4780 (NewPhysicalDeviceInfo->LogicalUnit !=
4781 PhysicalDeviceInfo->LogicalUnit)) 4781 PhysicalDeviceInfo->LogicalUnit))
4782 { 4782 {
4783 PhysicalDeviceInfo = (DAC960_V2_PhysicalDeviceInfo_T *) 4783 PhysicalDeviceInfo =
4784 kmalloc(sizeof(DAC960_V2_PhysicalDeviceInfo_T), GFP_ATOMIC); 4784 kmalloc(sizeof(DAC960_V2_PhysicalDeviceInfo_T), GFP_ATOMIC);
4785 InquiryUnitSerialNumber = 4785 InquiryUnitSerialNumber =
4786 (DAC960_SCSI_Inquiry_UnitSerialNumber_T *)
4787 kmalloc(sizeof(DAC960_SCSI_Inquiry_UnitSerialNumber_T), 4786 kmalloc(sizeof(DAC960_SCSI_Inquiry_UnitSerialNumber_T),
4788 GFP_ATOMIC); 4787 GFP_ATOMIC);
4789 if (InquiryUnitSerialNumber == NULL && 4788 if (InquiryUnitSerialNumber == NULL ||
4790 PhysicalDeviceInfo != NULL) 4789 PhysicalDeviceInfo == NULL)
4791 { 4790 {
4791 kfree(InquiryUnitSerialNumber);
4792 InquiryUnitSerialNumber = NULL;
4792 kfree(PhysicalDeviceInfo); 4793 kfree(PhysicalDeviceInfo);
4793 PhysicalDeviceInfo = NULL; 4794 PhysicalDeviceInfo = NULL;
4794 } 4795 }
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index ae0949b3394f..93d94749310b 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -402,6 +402,7 @@ config BLK_DEV_RAM_SIZE
402 402
403config BLK_DEV_INITRD 403config BLK_DEV_INITRD
404 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 404 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
405 depends on BROKEN || !FRV
405 help 406 help
406 The initial RAM filesystem is a ramfs which is loaded by the 407 The initial RAM filesystem is a ramfs which is loaded by the
407 boot loader (loadlin or lilo) and that is mounted as root 408 boot loader (loadlin or lilo) and that is mounted as root
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 1319d8f20640..25c3c4a5da81 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -3237,6 +3237,7 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
3237 disk->fops = &cciss_fops; 3237 disk->fops = &cciss_fops;
3238 disk->queue = q; 3238 disk->queue = q;
3239 disk->private_data = drv; 3239 disk->private_data = drv;
3240 disk->driverfs_dev = &pdev->dev;
3240 /* we must register the controller even if no disks exist */ 3241 /* we must register the controller even if no disks exist */
3241 /* this is for the online array utilities */ 3242 /* this is for the online array utilities */
3242 if(!drv->heads && j) 3243 if(!drv->heads && j)
diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
index 597c007fe81b..afdff32f6724 100644
--- a/drivers/block/cciss_scsi.c
+++ b/drivers/block/cciss_scsi.c
@@ -578,7 +578,7 @@ complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag)
578 578
579 if (cmd->use_sg) { 579 if (cmd->use_sg) {
580 pci_unmap_sg(ctlr->pdev, 580 pci_unmap_sg(ctlr->pdev,
581 cmd->buffer, cmd->use_sg, 581 cmd->request_buffer, cmd->use_sg,
582 cmd->sc_data_direction); 582 cmd->sc_data_direction);
583 } 583 }
584 else if (cmd->request_bufflen) { 584 else if (cmd->request_bufflen) {
@@ -1210,7 +1210,7 @@ cciss_scatter_gather(struct pci_dev *pdev,
1210 struct scsi_cmnd *cmd) 1210 struct scsi_cmnd *cmd)
1211{ 1211{
1212 unsigned int use_sg, nsegs=0, len; 1212 unsigned int use_sg, nsegs=0, len;
1213 struct scatterlist *scatter = (struct scatterlist *) cmd->buffer; 1213 struct scatterlist *scatter = (struct scatterlist *) cmd->request_buffer;
1214 __u64 addr64; 1214 __u64 addr64;
1215 1215
1216 /* is it just one virtual address? */ 1216 /* is it just one virtual address? */
@@ -1232,7 +1232,7 @@ cciss_scatter_gather(struct pci_dev *pdev,
1232 } /* else, must be a list of virtual addresses.... */ 1232 } /* else, must be a list of virtual addresses.... */
1233 else if (cmd->use_sg <= MAXSGENTRIES) { /* not too many addrs? */ 1233 else if (cmd->use_sg <= MAXSGENTRIES) { /* not too many addrs? */
1234 1234
1235 use_sg = pci_map_sg(pdev, cmd->buffer, cmd->use_sg, 1235 use_sg = pci_map_sg(pdev, cmd->request_buffer, cmd->use_sg,
1236 cmd->sc_data_direction); 1236 cmd->sc_data_direction);
1237 1237
1238 for (nsegs=0; nsegs < use_sg; nsegs++) { 1238 for (nsegs=0; nsegs < use_sg; nsegs++) {
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 9c3b94e8f03b..3c74ea729fc7 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -818,7 +818,7 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file,
818 lo->lo_device = bdev; 818 lo->lo_device = bdev;
819 lo->lo_flags = lo_flags; 819 lo->lo_flags = lo_flags;
820 lo->lo_backing_file = file; 820 lo->lo_backing_file = file;
821 lo->transfer = NULL; 821 lo->transfer = transfer_none;
822 lo->ioctl = NULL; 822 lo->ioctl = NULL;
823 lo->lo_sizelimit = 0; 823 lo->lo_sizelimit = 0;
824 lo->old_gfp_mask = mapping_gfp_mask(mapping); 824 lo->old_gfp_mask = mapping_gfp_mask(mapping);
diff --git a/drivers/block/ub.c b/drivers/block/ub.c
index c688c25992e4..60e9a9457c6b 100644
--- a/drivers/block/ub.c
+++ b/drivers/block/ub.c
@@ -10,17 +10,13 @@
10 * TODO (sorted by decreasing priority) 10 * TODO (sorted by decreasing priority)
11 * -- set readonly flag for CDs, set removable flag for CF readers 11 * -- set readonly flag for CDs, set removable flag for CF readers
12 * -- do inquiry and verify we got a disk and not a tape (for LUN mismatch) 12 * -- do inquiry and verify we got a disk and not a tape (for LUN mismatch)
13 * -- special case some senses, e.g. 3a/0 -> no media present, reduce retries
14 * -- verify the 13 conditions and do bulk resets 13 * -- verify the 13 conditions and do bulk resets
15 * -- kill last_pipe and simply do two-state clearing on both pipes
16 * -- highmem 14 * -- highmem
17 * -- move top_sense and work_bcs into separate allocations (if they survive) 15 * -- move top_sense and work_bcs into separate allocations (if they survive)
18 * for cache purists and esoteric architectures. 16 * for cache purists and esoteric architectures.
19 * -- Allocate structure for LUN 0 before the first ub_sync_tur, avoid NULL. ? 17 * -- Allocate structure for LUN 0 before the first ub_sync_tur, avoid NULL. ?
20 * -- prune comments, they are too volumnous 18 * -- prune comments, they are too volumnous
21 * -- Exterminate P3 printks
22 * -- Resove XXX's 19 * -- Resove XXX's
23 * -- Redo "benh's retries", perhaps have spin-up code to handle them. V:D=?
24 * -- CLEAR, CLR2STS, CLRRS seem to be ripe for refactoring. 20 * -- CLEAR, CLR2STS, CLRRS seem to be ripe for refactoring.
25 */ 21 */
26#include <linux/kernel.h> 22#include <linux/kernel.h>
@@ -180,7 +176,6 @@ struct ub_dev;
180#define UB_DIR_ILLEGAL2 2 176#define UB_DIR_ILLEGAL2 2
181#define UB_DIR_WRITE 3 177#define UB_DIR_WRITE 3
182 178
183/* P3 */
184#define UB_DIR_CHAR(c) (((c)==UB_DIR_WRITE)? 'w': \ 179#define UB_DIR_CHAR(c) (((c)==UB_DIR_WRITE)? 'w': \
185 (((c)==UB_DIR_READ)? 'r': 'n')) 180 (((c)==UB_DIR_READ)? 'r': 'n'))
186 181
@@ -669,8 +664,9 @@ static int ub_request_fn_1(struct ub_lun *lun, struct request *rq)
669 */ 664 */
670 n_elem = blk_rq_map_sg(lun->disk->queue, rq, &urq->sgv[0]); 665 n_elem = blk_rq_map_sg(lun->disk->queue, rq, &urq->sgv[0]);
671 if (n_elem < 0) { 666 if (n_elem < 0) {
667 /* Impossible, because blk_rq_map_sg should not hit ENOMEM. */
672 printk(KERN_INFO "%s: failed request map (%d)\n", 668 printk(KERN_INFO "%s: failed request map (%d)\n",
673 lun->name, n_elem); /* P3 */ 669 lun->name, n_elem);
674 goto drop; 670 goto drop;
675 } 671 }
676 if (n_elem > UB_MAX_REQ_SG) { /* Paranoia */ 672 if (n_elem > UB_MAX_REQ_SG) { /* Paranoia */
@@ -824,7 +820,9 @@ static int ub_rw_cmd_retry(struct ub_dev *sc, struct ub_lun *lun,
824 if (urq->current_try >= 3) 820 if (urq->current_try >= 3)
825 return -EIO; 821 return -EIO;
826 urq->current_try++; 822 urq->current_try++;
827 /* P3 */ printk("%s: dir %c len/act %d/%d " 823
824 /* Remove this if anyone complains of flooding. */
825 printk(KERN_DEBUG "%s: dir %c len/act %d/%d "
828 "[sense %x %02x %02x] retry %d\n", 826 "[sense %x %02x %02x] retry %d\n",
829 sc->name, UB_DIR_CHAR(cmd->dir), cmd->len, cmd->act_len, 827 sc->name, UB_DIR_CHAR(cmd->dir), cmd->len, cmd->act_len,
830 cmd->key, cmd->asc, cmd->ascq, urq->current_try); 828 cmd->key, cmd->asc, cmd->ascq, urq->current_try);
@@ -1241,8 +1239,6 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
1241 * to check. But it's not all right if the device 1239 * to check. But it's not all right if the device
1242 * counts disagree with our counts. 1240 * counts disagree with our counts.
1243 */ 1241 */
1244 /* P3 */ printk("%s: resid %d len %d act %d\n",
1245 sc->name, len, cmd->len, cmd->act_len);
1246 goto Bad_End; 1242 goto Bad_End;
1247 } 1243 }
1248 1244
@@ -1253,7 +1249,6 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
1253 ub_state_sense(sc, cmd); 1249 ub_state_sense(sc, cmd);
1254 return; 1250 return;
1255 case US_BULK_STAT_PHASE: 1251 case US_BULK_STAT_PHASE:
1256 /* P3 */ printk("%s: status PHASE\n", sc->name);
1257 goto Bad_End; 1252 goto Bad_End;
1258 default: 1253 default:
1259 printk(KERN_INFO "%s: unknown CSW status 0x%x\n", 1254 printk(KERN_INFO "%s: unknown CSW status 0x%x\n",
@@ -1568,16 +1563,14 @@ static void ub_reset_task(void *arg)
1568 } 1563 }
1569 1564
1570 if (atomic_read(&sc->poison)) { 1565 if (atomic_read(&sc->poison)) {
1571 printk(KERN_NOTICE "%s: Not resetting disconnected device\n", 1566 ;
1572 sc->name); /* P3 This floods. Remove soon. XXX */
1573 } else if ((sc->reset & 1) == 0) { 1567 } else if ((sc->reset & 1) == 0) {
1574 ub_sync_reset(sc); 1568 ub_sync_reset(sc);
1575 msleep(700); /* usb-storage sleeps 6s (!) */ 1569 msleep(700); /* usb-storage sleeps 6s (!) */
1576 ub_probe_clear_stall(sc, sc->recv_bulk_pipe); 1570 ub_probe_clear_stall(sc, sc->recv_bulk_pipe);
1577 ub_probe_clear_stall(sc, sc->send_bulk_pipe); 1571 ub_probe_clear_stall(sc, sc->send_bulk_pipe);
1578 } else if (sc->dev->actconfig->desc.bNumInterfaces != 1) { 1572 } else if (sc->dev->actconfig->desc.bNumInterfaces != 1) {
1579 printk(KERN_NOTICE "%s: Not resetting multi-interface device\n", 1573 ;
1580 sc->name); /* P3 This floods. Remove soon. XXX */
1581 } else { 1574 } else {
1582 if ((lkr = usb_lock_device_for_reset(sc->dev, sc->intf)) < 0) { 1575 if ((lkr = usb_lock_device_for_reset(sc->dev, sc->intf)) < 0) {
1583 printk(KERN_NOTICE 1576 printk(KERN_NOTICE
@@ -1651,15 +1644,11 @@ static void ub_revalidate(struct ub_dev *sc, struct ub_lun *lun)
1651static int ub_bd_open(struct inode *inode, struct file *filp) 1644static int ub_bd_open(struct inode *inode, struct file *filp)
1652{ 1645{
1653 struct gendisk *disk = inode->i_bdev->bd_disk; 1646 struct gendisk *disk = inode->i_bdev->bd_disk;
1654 struct ub_lun *lun; 1647 struct ub_lun *lun = disk->private_data;
1655 struct ub_dev *sc; 1648 struct ub_dev *sc = lun->udev;
1656 unsigned long flags; 1649 unsigned long flags;
1657 int rc; 1650 int rc;
1658 1651
1659 if ((lun = disk->private_data) == NULL)
1660 return -ENXIO;
1661 sc = lun->udev;
1662
1663 spin_lock_irqsave(&ub_lock, flags); 1652 spin_lock_irqsave(&ub_lock, flags);
1664 if (atomic_read(&sc->poison)) { 1653 if (atomic_read(&sc->poison)) {
1665 spin_unlock_irqrestore(&ub_lock, flags); 1654 spin_unlock_irqrestore(&ub_lock, flags);
@@ -1823,10 +1812,8 @@ static int ub_sync_tur(struct ub_dev *sc, struct ub_lun *lun)
1823 rc = ub_submit_scsi(sc, cmd); 1812 rc = ub_submit_scsi(sc, cmd);
1824 spin_unlock_irqrestore(sc->lock, flags); 1813 spin_unlock_irqrestore(sc->lock, flags);
1825 1814
1826 if (rc != 0) { 1815 if (rc != 0)
1827 printk("ub: testing ready: submit error (%d)\n", rc); /* P3 */
1828 goto err_submit; 1816 goto err_submit;
1829 }
1830 1817
1831 wait_for_completion(&compl); 1818 wait_for_completion(&compl);
1832 1819
@@ -1884,20 +1871,16 @@ static int ub_sync_read_cap(struct ub_dev *sc, struct ub_lun *lun,
1884 rc = ub_submit_scsi(sc, cmd); 1871 rc = ub_submit_scsi(sc, cmd);
1885 spin_unlock_irqrestore(sc->lock, flags); 1872 spin_unlock_irqrestore(sc->lock, flags);
1886 1873
1887 if (rc != 0) { 1874 if (rc != 0)
1888 printk("ub: reading capacity: submit error (%d)\n", rc); /* P3 */
1889 goto err_submit; 1875 goto err_submit;
1890 }
1891 1876
1892 wait_for_completion(&compl); 1877 wait_for_completion(&compl);
1893 1878
1894 if (cmd->error != 0) { 1879 if (cmd->error != 0) {
1895 printk("ub: reading capacity: error %d\n", cmd->error); /* P3 */
1896 rc = -EIO; 1880 rc = -EIO;
1897 goto err_read; 1881 goto err_read;
1898 } 1882 }
1899 if (cmd->act_len != 8) { 1883 if (cmd->act_len != 8) {
1900 printk("ub: reading capacity: size %d\n", cmd->act_len); /* P3 */
1901 rc = -EIO; 1884 rc = -EIO;
1902 goto err_read; 1885 goto err_read;
1903 } 1886 }
@@ -1911,7 +1894,6 @@ static int ub_sync_read_cap(struct ub_dev *sc, struct ub_lun *lun,
1911 case 2048: shift = 2; break; 1894 case 2048: shift = 2; break;
1912 case 4096: shift = 3; break; 1895 case 4096: shift = 3; break;
1913 default: 1896 default:
1914 printk("ub: Bad sector size %u\n", bsize); /* P3 */
1915 rc = -EDOM; 1897 rc = -EDOM;
1916 goto err_inv_bsize; 1898 goto err_inv_bsize;
1917 } 1899 }
@@ -2023,17 +2005,8 @@ static int ub_sync_getmaxlun(struct ub_dev *sc)
2023 sc->work_urb.error_count = 0; 2005 sc->work_urb.error_count = 0;
2024 sc->work_urb.status = 0; 2006 sc->work_urb.status = 0;
2025 2007
2026 if ((rc = usb_submit_urb(&sc->work_urb, GFP_KERNEL)) != 0) { 2008 if ((rc = usb_submit_urb(&sc->work_urb, GFP_KERNEL)) != 0)
2027 if (rc == -EPIPE) {
2028 printk("%s: Stall submitting GetMaxLUN, using 1 LUN\n",
2029 sc->name); /* P3 */
2030 } else {
2031 printk(KERN_NOTICE
2032 "%s: Unable to submit GetMaxLUN (%d)\n",
2033 sc->name, rc);
2034 }
2035 goto err_submit; 2009 goto err_submit;
2036 }
2037 2010
2038 init_timer(&timer); 2011 init_timer(&timer);
2039 timer.function = ub_probe_timeout; 2012 timer.function = ub_probe_timeout;
@@ -2046,21 +2019,10 @@ static int ub_sync_getmaxlun(struct ub_dev *sc)
2046 del_timer_sync(&timer); 2019 del_timer_sync(&timer);
2047 usb_kill_urb(&sc->work_urb); 2020 usb_kill_urb(&sc->work_urb);
2048 2021
2049 if ((rc = sc->work_urb.status) < 0) { 2022 if ((rc = sc->work_urb.status) < 0)
2050 if (rc == -EPIPE) {
2051 printk("%s: Stall at GetMaxLUN, using 1 LUN\n",
2052 sc->name); /* P3 */
2053 } else {
2054 printk(KERN_NOTICE
2055 "%s: Error at GetMaxLUN (%d)\n",
2056 sc->name, rc);
2057 }
2058 goto err_io; 2023 goto err_io;
2059 }
2060 2024
2061 if (sc->work_urb.actual_length != 1) { 2025 if (sc->work_urb.actual_length != 1) {
2062 printk("%s: GetMaxLUN returned %d bytes\n", sc->name,
2063 sc->work_urb.actual_length); /* P3 */
2064 nluns = 0; 2026 nluns = 0;
2065 } else { 2027 } else {
2066 if ((nluns = *p) == 55) { 2028 if ((nluns = *p) == 55) {
@@ -2071,8 +2033,6 @@ static int ub_sync_getmaxlun(struct ub_dev *sc)
2071 if (nluns > UB_MAX_LUNS) 2033 if (nluns > UB_MAX_LUNS)
2072 nluns = UB_MAX_LUNS; 2034 nluns = UB_MAX_LUNS;
2073 } 2035 }
2074 printk("%s: GetMaxLUN returned %d, using %d LUNs\n", sc->name,
2075 *p, nluns); /* P3 */
2076 } 2036 }
2077 2037
2078 kfree(p); 2038 kfree(p);
@@ -2270,7 +2230,7 @@ static int ub_probe(struct usb_interface *intf,
2270 * has to succeed, so we clear checks with an additional one here. 2230 * has to succeed, so we clear checks with an additional one here.
2271 * In any case it's not our business how revaliadation is implemented. 2231 * In any case it's not our business how revaliadation is implemented.
2272 */ 2232 */
2273 for (i = 0; i < 3; i++) { /* Retries for benh's key */ 2233 for (i = 0; i < 3; i++) { /* Retries for the schwag key from KS'04 */
2274 if ((rc = ub_sync_tur(sc, NULL)) <= 0) break; 2234 if ((rc = ub_sync_tur(sc, NULL)) <= 0) break;
2275 if (rc != 0x6) break; 2235 if (rc != 0x6) break;
2276 msleep(10); 2236 msleep(10);
@@ -2318,7 +2278,6 @@ static int ub_probe_lun(struct ub_dev *sc, int lnum)
2318 goto err_id; 2278 goto err_id;
2319 2279
2320 lun->udev = sc; 2280 lun->udev = sc;
2321 list_add(&lun->link, &sc->luns);
2322 2281
2323 snprintf(lun->name, 16, DRV_NAME "%c(%d.%d.%d)", 2282 snprintf(lun->name, 16, DRV_NAME "%c(%d.%d.%d)",
2324 lun->id + 'a', sc->dev->bus->busnum, sc->dev->devnum, lun->num); 2283 lun->id + 'a', sc->dev->bus->busnum, sc->dev->devnum, lun->num);
@@ -2331,7 +2290,6 @@ static int ub_probe_lun(struct ub_dev *sc, int lnum)
2331 if ((disk = alloc_disk(UB_PARTS_PER_LUN)) == NULL) 2290 if ((disk = alloc_disk(UB_PARTS_PER_LUN)) == NULL)
2332 goto err_diskalloc; 2291 goto err_diskalloc;
2333 2292
2334 lun->disk = disk;
2335 sprintf(disk->disk_name, DRV_NAME "%c", lun->id + 'a'); 2293 sprintf(disk->disk_name, DRV_NAME "%c", lun->id + 'a');
2336 sprintf(disk->devfs_name, DEVFS_NAME "/%c", lun->id + 'a'); 2294 sprintf(disk->devfs_name, DEVFS_NAME "/%c", lun->id + 'a');
2337 disk->major = UB_MAJOR; 2295 disk->major = UB_MAJOR;
@@ -2353,7 +2311,9 @@ static int ub_probe_lun(struct ub_dev *sc, int lnum)
2353 blk_queue_max_sectors(q, UB_MAX_SECTORS); 2311 blk_queue_max_sectors(q, UB_MAX_SECTORS);
2354 blk_queue_hardsect_size(q, lun->capacity.bsize); 2312 blk_queue_hardsect_size(q, lun->capacity.bsize);
2355 2313
2314 lun->disk = disk;
2356 q->queuedata = lun; 2315 q->queuedata = lun;
2316 list_add(&lun->link, &sc->luns);
2357 2317
2358 set_capacity(disk, lun->capacity.nsec); 2318 set_capacity(disk, lun->capacity.nsec);
2359 if (lun->removable) 2319 if (lun->removable)
@@ -2366,7 +2326,6 @@ static int ub_probe_lun(struct ub_dev *sc, int lnum)
2366err_blkqinit: 2326err_blkqinit:
2367 put_disk(disk); 2327 put_disk(disk);
2368err_diskalloc: 2328err_diskalloc:
2369 list_del(&lun->link);
2370 ub_id_put(lun->id); 2329 ub_id_put(lun->id);
2371err_id: 2330err_id:
2372 kfree(lun); 2331 kfree(lun);
@@ -2379,7 +2338,6 @@ static void ub_disconnect(struct usb_interface *intf)
2379 struct ub_dev *sc = usb_get_intfdata(intf); 2338 struct ub_dev *sc = usb_get_intfdata(intf);
2380 struct list_head *p; 2339 struct list_head *p;
2381 struct ub_lun *lun; 2340 struct ub_lun *lun;
2382 struct gendisk *disk;
2383 unsigned long flags; 2341 unsigned long flags;
2384 2342
2385 /* 2343 /*
@@ -2435,9 +2393,7 @@ static void ub_disconnect(struct usb_interface *intf)
2435 */ 2393 */
2436 list_for_each (p, &sc->luns) { 2394 list_for_each (p, &sc->luns) {
2437 lun = list_entry(p, struct ub_lun, link); 2395 lun = list_entry(p, struct ub_lun, link);
2438 disk = lun->disk; 2396 del_gendisk(lun->disk);
2439 if (disk->flags & GENHD_FL_UP)
2440 del_gendisk(disk);
2441 /* 2397 /*
2442 * I wish I could do: 2398 * I wish I could do:
2443 * set_bit(QUEUE_FLAG_DEAD, &q->queue_flags); 2399 * set_bit(QUEUE_FLAG_DEAD, &q->queue_flags);
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c
index f63e07bd9f9c..b0df4f5ab97a 100644
--- a/drivers/block/viodasd.c
+++ b/drivers/block/viodasd.c
@@ -747,7 +747,7 @@ static int viodasd_remove(struct vio_dev *vdev)
747 * support. 747 * support.
748 */ 748 */
749static struct vio_device_id viodasd_device_table[] __devinitdata = { 749static struct vio_device_id viodasd_device_table[] __devinitdata = {
750 { "viodasd", "" }, 750 { "block", "IBM,iSeries-viodasd" },
751 { "", "" } 751 { "", "" }
752}; 752};
753MODULE_DEVICE_TABLE(vio, viodasd_device_table); 753MODULE_DEVICE_TABLE(vio, viodasd_device_table);