[PATCH] ub: random cleanups
Remove some silly messages and cast in stone "temporary" messages which we keep around. Also, I am hesitant to remove the initialization retries without having the hardware to test (anyone who was at KS04 has a spare?) Signed-off-by: Pete Zaitcev <zaitcev@yahoo.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Родитель
688e9fb1bb
Коммит
b5600339cd
|
@ -10,17 +10,13 @@
|
||||||
* TODO (sorted by decreasing priority)
|
* TODO (sorted by decreasing priority)
|
||||||
* -- set readonly flag for CDs, set removable flag for CF readers
|
* -- set readonly flag for CDs, set removable flag for CF readers
|
||||||
* -- do inquiry and verify we got a disk and not a tape (for LUN mismatch)
|
* -- do inquiry and verify we got a disk and not a tape (for LUN mismatch)
|
||||||
* -- special case some senses, e.g. 3a/0 -> no media present, reduce retries
|
|
||||||
* -- verify the 13 conditions and do bulk resets
|
* -- verify the 13 conditions and do bulk resets
|
||||||
* -- kill last_pipe and simply do two-state clearing on both pipes
|
|
||||||
* -- highmem
|
* -- highmem
|
||||||
* -- move top_sense and work_bcs into separate allocations (if they survive)
|
* -- move top_sense and work_bcs into separate allocations (if they survive)
|
||||||
* for cache purists and esoteric architectures.
|
* for cache purists and esoteric architectures.
|
||||||
* -- Allocate structure for LUN 0 before the first ub_sync_tur, avoid NULL. ?
|
* -- Allocate structure for LUN 0 before the first ub_sync_tur, avoid NULL. ?
|
||||||
* -- prune comments, they are too volumnous
|
* -- prune comments, they are too volumnous
|
||||||
* -- Exterminate P3 printks
|
|
||||||
* -- Resove XXX's
|
* -- Resove XXX's
|
||||||
* -- Redo "benh's retries", perhaps have spin-up code to handle them. V:D=?
|
|
||||||
* -- CLEAR, CLR2STS, CLRRS seem to be ripe for refactoring.
|
* -- CLEAR, CLR2STS, CLRRS seem to be ripe for refactoring.
|
||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
@ -180,7 +176,6 @@ struct ub_dev;
|
||||||
#define UB_DIR_ILLEGAL2 2
|
#define UB_DIR_ILLEGAL2 2
|
||||||
#define UB_DIR_WRITE 3
|
#define UB_DIR_WRITE 3
|
||||||
|
|
||||||
/* P3 */
|
|
||||||
#define UB_DIR_CHAR(c) (((c)==UB_DIR_WRITE)? 'w': \
|
#define UB_DIR_CHAR(c) (((c)==UB_DIR_WRITE)? 'w': \
|
||||||
(((c)==UB_DIR_READ)? 'r': 'n'))
|
(((c)==UB_DIR_READ)? 'r': 'n'))
|
||||||
|
|
||||||
|
@ -669,8 +664,9 @@ static int ub_request_fn_1(struct ub_lun *lun, struct request *rq)
|
||||||
*/
|
*/
|
||||||
n_elem = blk_rq_map_sg(lun->disk->queue, rq, &urq->sgv[0]);
|
n_elem = blk_rq_map_sg(lun->disk->queue, rq, &urq->sgv[0]);
|
||||||
if (n_elem < 0) {
|
if (n_elem < 0) {
|
||||||
|
/* Impossible, because blk_rq_map_sg should not hit ENOMEM. */
|
||||||
printk(KERN_INFO "%s: failed request map (%d)\n",
|
printk(KERN_INFO "%s: failed request map (%d)\n",
|
||||||
lun->name, n_elem); /* P3 */
|
lun->name, n_elem);
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
}
|
||||||
if (n_elem > UB_MAX_REQ_SG) { /* Paranoia */
|
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,
|
||||||
if (urq->current_try >= 3)
|
if (urq->current_try >= 3)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
urq->current_try++;
|
urq->current_try++;
|
||||||
/* P3 */ printk("%s: dir %c len/act %d/%d "
|
|
||||||
|
/* Remove this if anyone complains of flooding. */
|
||||||
|
printk(KERN_DEBUG "%s: dir %c len/act %d/%d "
|
||||||
"[sense %x %02x %02x] retry %d\n",
|
"[sense %x %02x %02x] retry %d\n",
|
||||||
sc->name, UB_DIR_CHAR(cmd->dir), cmd->len, cmd->act_len,
|
sc->name, UB_DIR_CHAR(cmd->dir), cmd->len, cmd->act_len,
|
||||||
cmd->key, cmd->asc, cmd->ascq, urq->current_try);
|
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)
|
||||||
* to check. But it's not all right if the device
|
* to check. But it's not all right if the device
|
||||||
* counts disagree with our counts.
|
* counts disagree with our counts.
|
||||||
*/
|
*/
|
||||||
/* P3 */ printk("%s: resid %d len %d act %d\n",
|
|
||||||
sc->name, len, cmd->len, cmd->act_len);
|
|
||||||
goto Bad_End;
|
goto Bad_End;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1253,7 +1249,6 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
|
||||||
ub_state_sense(sc, cmd);
|
ub_state_sense(sc, cmd);
|
||||||
return;
|
return;
|
||||||
case US_BULK_STAT_PHASE:
|
case US_BULK_STAT_PHASE:
|
||||||
/* P3 */ printk("%s: status PHASE\n", sc->name);
|
|
||||||
goto Bad_End;
|
goto Bad_End;
|
||||||
default:
|
default:
|
||||||
printk(KERN_INFO "%s: unknown CSW status 0x%x\n",
|
printk(KERN_INFO "%s: unknown CSW status 0x%x\n",
|
||||||
|
@ -1568,16 +1563,14 @@ static void ub_reset_task(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atomic_read(&sc->poison)) {
|
if (atomic_read(&sc->poison)) {
|
||||||
printk(KERN_NOTICE "%s: Not resetting disconnected device\n",
|
;
|
||||||
sc->name); /* P3 This floods. Remove soon. XXX */
|
|
||||||
} else if ((sc->reset & 1) == 0) {
|
} else if ((sc->reset & 1) == 0) {
|
||||||
ub_sync_reset(sc);
|
ub_sync_reset(sc);
|
||||||
msleep(700); /* usb-storage sleeps 6s (!) */
|
msleep(700); /* usb-storage sleeps 6s (!) */
|
||||||
ub_probe_clear_stall(sc, sc->recv_bulk_pipe);
|
ub_probe_clear_stall(sc, sc->recv_bulk_pipe);
|
||||||
ub_probe_clear_stall(sc, sc->send_bulk_pipe);
|
ub_probe_clear_stall(sc, sc->send_bulk_pipe);
|
||||||
} else if (sc->dev->actconfig->desc.bNumInterfaces != 1) {
|
} else if (sc->dev->actconfig->desc.bNumInterfaces != 1) {
|
||||||
printk(KERN_NOTICE "%s: Not resetting multi-interface device\n",
|
;
|
||||||
sc->name); /* P3 This floods. Remove soon. XXX */
|
|
||||||
} else {
|
} else {
|
||||||
if ((lkr = usb_lock_device_for_reset(sc->dev, sc->intf)) < 0) {
|
if ((lkr = usb_lock_device_for_reset(sc->dev, sc->intf)) < 0) {
|
||||||
printk(KERN_NOTICE
|
printk(KERN_NOTICE
|
||||||
|
@ -1819,10 +1812,8 @@ static int ub_sync_tur(struct ub_dev *sc, struct ub_lun *lun)
|
||||||
rc = ub_submit_scsi(sc, cmd);
|
rc = ub_submit_scsi(sc, cmd);
|
||||||
spin_unlock_irqrestore(sc->lock, flags);
|
spin_unlock_irqrestore(sc->lock, flags);
|
||||||
|
|
||||||
if (rc != 0) {
|
if (rc != 0)
|
||||||
printk("ub: testing ready: submit error (%d)\n", rc); /* P3 */
|
|
||||||
goto err_submit;
|
goto err_submit;
|
||||||
}
|
|
||||||
|
|
||||||
wait_for_completion(&compl);
|
wait_for_completion(&compl);
|
||||||
|
|
||||||
|
@ -1880,20 +1871,16 @@ static int ub_sync_read_cap(struct ub_dev *sc, struct ub_lun *lun,
|
||||||
rc = ub_submit_scsi(sc, cmd);
|
rc = ub_submit_scsi(sc, cmd);
|
||||||
spin_unlock_irqrestore(sc->lock, flags);
|
spin_unlock_irqrestore(sc->lock, flags);
|
||||||
|
|
||||||
if (rc != 0) {
|
if (rc != 0)
|
||||||
printk("ub: reading capacity: submit error (%d)\n", rc); /* P3 */
|
|
||||||
goto err_submit;
|
goto err_submit;
|
||||||
}
|
|
||||||
|
|
||||||
wait_for_completion(&compl);
|
wait_for_completion(&compl);
|
||||||
|
|
||||||
if (cmd->error != 0) {
|
if (cmd->error != 0) {
|
||||||
printk("ub: reading capacity: error %d\n", cmd->error); /* P3 */
|
|
||||||
rc = -EIO;
|
rc = -EIO;
|
||||||
goto err_read;
|
goto err_read;
|
||||||
}
|
}
|
||||||
if (cmd->act_len != 8) {
|
if (cmd->act_len != 8) {
|
||||||
printk("ub: reading capacity: size %d\n", cmd->act_len); /* P3 */
|
|
||||||
rc = -EIO;
|
rc = -EIO;
|
||||||
goto err_read;
|
goto err_read;
|
||||||
}
|
}
|
||||||
|
@ -1907,7 +1894,6 @@ static int ub_sync_read_cap(struct ub_dev *sc, struct ub_lun *lun,
|
||||||
case 2048: shift = 2; break;
|
case 2048: shift = 2; break;
|
||||||
case 4096: shift = 3; break;
|
case 4096: shift = 3; break;
|
||||||
default:
|
default:
|
||||||
printk("ub: Bad sector size %u\n", bsize); /* P3 */
|
|
||||||
rc = -EDOM;
|
rc = -EDOM;
|
||||||
goto err_inv_bsize;
|
goto err_inv_bsize;
|
||||||
}
|
}
|
||||||
|
@ -2019,17 +2005,8 @@ static int ub_sync_getmaxlun(struct ub_dev *sc)
|
||||||
sc->work_urb.error_count = 0;
|
sc->work_urb.error_count = 0;
|
||||||
sc->work_urb.status = 0;
|
sc->work_urb.status = 0;
|
||||||
|
|
||||||
if ((rc = usb_submit_urb(&sc->work_urb, GFP_KERNEL)) != 0) {
|
if ((rc = usb_submit_urb(&sc->work_urb, GFP_KERNEL)) != 0)
|
||||||
if (rc == -EPIPE) {
|
|
||||||
printk("%s: Stall submitting GetMaxLUN, using 1 LUN\n",
|
|
||||||
sc->name); /* P3 */
|
|
||||||
} else {
|
|
||||||
printk(KERN_NOTICE
|
|
||||||
"%s: Unable to submit GetMaxLUN (%d)\n",
|
|
||||||
sc->name, rc);
|
|
||||||
}
|
|
||||||
goto err_submit;
|
goto err_submit;
|
||||||
}
|
|
||||||
|
|
||||||
init_timer(&timer);
|
init_timer(&timer);
|
||||||
timer.function = ub_probe_timeout;
|
timer.function = ub_probe_timeout;
|
||||||
|
@ -2042,21 +2019,10 @@ static int ub_sync_getmaxlun(struct ub_dev *sc)
|
||||||
del_timer_sync(&timer);
|
del_timer_sync(&timer);
|
||||||
usb_kill_urb(&sc->work_urb);
|
usb_kill_urb(&sc->work_urb);
|
||||||
|
|
||||||
if ((rc = sc->work_urb.status) < 0) {
|
if ((rc = sc->work_urb.status) < 0)
|
||||||
if (rc == -EPIPE) {
|
|
||||||
printk("%s: Stall at GetMaxLUN, using 1 LUN\n",
|
|
||||||
sc->name); /* P3 */
|
|
||||||
} else {
|
|
||||||
printk(KERN_NOTICE
|
|
||||||
"%s: Error at GetMaxLUN (%d)\n",
|
|
||||||
sc->name, rc);
|
|
||||||
}
|
|
||||||
goto err_io;
|
goto err_io;
|
||||||
}
|
|
||||||
|
|
||||||
if (sc->work_urb.actual_length != 1) {
|
if (sc->work_urb.actual_length != 1) {
|
||||||
printk("%s: GetMaxLUN returned %d bytes\n", sc->name,
|
|
||||||
sc->work_urb.actual_length); /* P3 */
|
|
||||||
nluns = 0;
|
nluns = 0;
|
||||||
} else {
|
} else {
|
||||||
if ((nluns = *p) == 55) {
|
if ((nluns = *p) == 55) {
|
||||||
|
@ -2067,8 +2033,6 @@ static int ub_sync_getmaxlun(struct ub_dev *sc)
|
||||||
if (nluns > UB_MAX_LUNS)
|
if (nluns > UB_MAX_LUNS)
|
||||||
nluns = UB_MAX_LUNS;
|
nluns = UB_MAX_LUNS;
|
||||||
}
|
}
|
||||||
printk("%s: GetMaxLUN returned %d, using %d LUNs\n", sc->name,
|
|
||||||
*p, nluns); /* P3 */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kfree(p);
|
kfree(p);
|
||||||
|
@ -2266,7 +2230,7 @@ static int ub_probe(struct usb_interface *intf,
|
||||||
* has to succeed, so we clear checks with an additional one here.
|
* has to succeed, so we clear checks with an additional one here.
|
||||||
* In any case it's not our business how revaliadation is implemented.
|
* In any case it's not our business how revaliadation is implemented.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < 3; i++) { /* Retries for benh's key */
|
for (i = 0; i < 3; i++) { /* Retries for the schwag key from KS'04 */
|
||||||
if ((rc = ub_sync_tur(sc, NULL)) <= 0) break;
|
if ((rc = ub_sync_tur(sc, NULL)) <= 0) break;
|
||||||
if (rc != 0x6) break;
|
if (rc != 0x6) break;
|
||||||
msleep(10);
|
msleep(10);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче