Commit e654bc43 authored by Boaz Harrosh's avatar Boaz Harrosh Committed by Jens Axboe

[PATCH] fix request->cmd == INT cases

 - I have unearthed very old bugs in stale drivers that still
   used request->cmd as a READ|WRITE int
 - This patch is maybe a proof that these drivers have not been
   used for a long time. Should they be removed completely?

Drivers that currently do not work for sure:
 drivers/acorn/block/fd1772.c |    2 +-
 drivers/acorn/block/mfmhd.c  |    8 ++++----
 drivers/cdrom/aztcd.c        |    2 +-
 drivers/cdrom/cm206.c        |    2 +-
 drivers/cdrom/gscd.c         |    2 +-
 drivers/cdrom/mcdx.c         |    2 +-
 drivers/cdrom/optcd.c        |    2 +-
 drivers/cdrom/sjcd.c         |    2 +-

Drivers with cosmetic fixes only:
  b/drivers/block/amiflop.c
  b/drivers/block/nbd.c
  b/drivers/ide/legacy/hd.c
Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 9cff3b38
...@@ -1246,7 +1246,7 @@ static void redo_fd_request(void) ...@@ -1246,7 +1246,7 @@ static void redo_fd_request(void)
del_timer(&motor_off_timer); del_timer(&motor_off_timer);
ReqCnt = 0; ReqCnt = 0;
ReqCmd = CURRENT->cmd; ReqCmd = rq_data_dir(CURRENT);
ReqBlock = CURRENT->sector; ReqBlock = CURRENT->sector;
ReqBuffer = CURRENT->buffer; ReqBuffer = CURRENT->buffer;
setup_req_params(drive); setup_req_params(drive);
......
...@@ -439,7 +439,7 @@ static void mfm_rw_intr(void) ...@@ -439,7 +439,7 @@ static void mfm_rw_intr(void)
a choice of command end or some data which is ready to be collected */ a choice of command end or some data which is ready to be collected */
/* I think we have to transfer data while the interrupt line is on and its /* I think we have to transfer data while the interrupt line is on and its
not any other type of interrupt */ not any other type of interrupt */
if (CURRENT->cmd == WRITE) { if (rq_data_dir(CURRENT) == WRITE) {
extern void hdc63463_writedma(void); extern void hdc63463_writedma(void);
if ((hdc63463_dataleft <= 0) && (!(mfm_status & STAT_CED))) { if ((hdc63463_dataleft <= 0) && (!(mfm_status & STAT_CED))) {
printk("mfm_rw_intr: Apparent DMA write request when no more to DMA\n"); printk("mfm_rw_intr: Apparent DMA write request when no more to DMA\n");
...@@ -799,7 +799,7 @@ static void issue_request(unsigned int block, unsigned int nsect, ...@@ -799,7 +799,7 @@ static void issue_request(unsigned int block, unsigned int nsect,
raw_cmd.head = start_head; raw_cmd.head = start_head;
raw_cmd.cylinder = track / p->heads; raw_cmd.cylinder = track / p->heads;
raw_cmd.cmdtype = CURRENT->cmd; raw_cmd.cmdtype = CURRENT->cmd;
raw_cmd.cmdcode = CURRENT->cmd == WRITE ? CMD_WD : CMD_RD; raw_cmd.cmdcode = rq_data_dir(CURRENT) == WRITE ? CMD_WD : CMD_RD;
raw_cmd.cmddata[0] = dev + 1; /* DAG: +1 to get US */ raw_cmd.cmddata[0] = dev + 1; /* DAG: +1 to get US */
raw_cmd.cmddata[1] = raw_cmd.head; raw_cmd.cmddata[1] = raw_cmd.head;
raw_cmd.cmddata[2] = raw_cmd.cylinder >> 8; raw_cmd.cmddata[2] = raw_cmd.cylinder >> 8;
...@@ -830,7 +830,7 @@ static void issue_request(unsigned int block, unsigned int nsect, ...@@ -830,7 +830,7 @@ static void issue_request(unsigned int block, unsigned int nsect,
hdc63463_dataleft = nsect * 256; /* Better way? */ hdc63463_dataleft = nsect * 256; /* Better way? */
DBG("mfm%c: %sing: CHS=%d/%d/%d, sectors=%d, buffer=0x%08lx (%p)\n", DBG("mfm%c: %sing: CHS=%d/%d/%d, sectors=%d, buffer=0x%08lx (%p)\n",
raw_cmd.dev + 'a', (CURRENT->cmd == READ) ? "read" : "writ", raw_cmd.dev + 'a', rq_data_dir(CURRENT) == READ ? "read" : "writ",
raw_cmd.cylinder, raw_cmd.cylinder,
raw_cmd.head, raw_cmd.head,
raw_cmd.sector, nsect, (unsigned long) Copy_buffer, CURRENT); raw_cmd.sector, nsect, (unsigned long) Copy_buffer, CURRENT);
...@@ -917,13 +917,6 @@ static void mfm_request(void) ...@@ -917,13 +917,6 @@ static void mfm_request(void)
DBG("mfm_request: block after offset=%d\n", block); DBG("mfm_request: block after offset=%d\n", block);
if (CURRENT->cmd != READ && CURRENT->cmd != WRITE) {
printk("unknown mfm-command %d\n", CURRENT->cmd);
end_request(CURRENT, 0);
Busy = 0;
printk("mfm: continue 4\n");
continue;
}
issue_request(block, nsect, CURRENT); issue_request(block, nsect, CURRENT);
break; break;
......
...@@ -1363,7 +1363,7 @@ static void redo_fd_request(void) ...@@ -1363,7 +1363,7 @@ static void redo_fd_request(void)
#ifdef DEBUG #ifdef DEBUG
printk("fd: sector %ld + %d requested for %s\n", printk("fd: sector %ld + %d requested for %s\n",
CURRENT->sector,cnt, CURRENT->sector,cnt,
(CURRENT->cmd==READ)?"read":"write"); (rq_data_dir(CURRENT) == READ) ? "read" : "write");
#endif #endif
block = CURRENT->sector + cnt; block = CURRENT->sector + cnt;
if ((int)block > floppy->blocks) { if ((int)block > floppy->blocks) {
......
...@@ -416,7 +416,7 @@ static void nbd_clear_que(struct nbd_device *lo) ...@@ -416,7 +416,7 @@ static void nbd_clear_que(struct nbd_device *lo)
/* /*
* We always wait for result of write, for now. It would be nice to make it optional * We always wait for result of write, for now. It would be nice to make it optional
* in future * in future
* if ((req->cmd == WRITE) && (lo->flags & NBD_WRITE_NOCHK)) * if ((rq_data_dir(req) == WRITE) && (lo->flags & NBD_WRITE_NOCHK))
* { printk( "Warning: Ignoring result!\n"); nbd_end_request( req ); } * { printk( "Warning: Ignoring result!\n"); nbd_end_request( req ); }
*/ */
......
...@@ -229,7 +229,7 @@ static struct request_queue *azt_queue; ...@@ -229,7 +229,7 @@ static struct request_queue *azt_queue;
static int current_valid(void) static int current_valid(void)
{ {
return CURRENT && return CURRENT &&
CURRENT->cmd == READ && rq_data_dir(CURRENT) == READ &&
CURRENT->sector != -1; CURRENT->sector != -1;
} }
......
...@@ -851,7 +851,7 @@ static void do_cm206_request(request_queue_t * q) ...@@ -851,7 +851,7 @@ static void do_cm206_request(request_queue_t * q)
if (!req) if (!req)
return; return;
if (req->cmd != READ) { if (rq_data_dir(req) != READ) {
debug(("Non-read command %d on cdrom\n", req->cmd)); debug(("Non-read command %d on cdrom\n", req->cmd));
end_request(req, 0); end_request(req, 0);
continue; continue;
......
...@@ -264,7 +264,7 @@ static void __do_gscd_request(unsigned long dummy) ...@@ -264,7 +264,7 @@ static void __do_gscd_request(unsigned long dummy)
if (req->sector == -1) if (req->sector == -1)
goto out; goto out;
if (req->cmd != READ) { if (rq_data_dir(req) != READ) {
printk("GSCD: bad cmd %u\n", rq_data_dir(req)); printk("GSCD: bad cmd %u\n", rq_data_dir(req));
end_request(req, 0); end_request(req, 0);
goto repeat; goto repeat;
......
...@@ -596,7 +596,7 @@ static void do_mcdx_request(request_queue_t * q) ...@@ -596,7 +596,7 @@ static void do_mcdx_request(request_queue_t * q)
xtrace(REQUEST, "do_request() (%lu + %lu)\n", xtrace(REQUEST, "do_request() (%lu + %lu)\n",
req->sector, req->nr_sectors); req->sector, req->nr_sectors);
if (req->cmd != READ) { if (rq_data_dir(req) != READ) {
xwarn("do_request(): non-read command to cd!!\n"); xwarn("do_request(): non-read command to cd!!\n");
xtrace(REQUEST, "end_request(0): write\n"); xtrace(REQUEST, "end_request(0): write\n");
end_request(req, 0); end_request(req, 0);
......
...@@ -977,7 +977,7 @@ static int update_toc(void) ...@@ -977,7 +977,7 @@ static int update_toc(void)
static int current_valid(void) static int current_valid(void)
{ {
return CURRENT && return CURRENT &&
CURRENT->cmd == READ && rq_data_dir(CURRENT) == READ &&
CURRENT->sector != -1; CURRENT->sector != -1;
} }
......
...@@ -1064,7 +1064,7 @@ static void sjcd_invalidate_buffers(void) ...@@ -1064,7 +1064,7 @@ static void sjcd_invalidate_buffers(void)
static int current_valid(void) static int current_valid(void)
{ {
return CURRENT && return CURRENT &&
CURRENT->cmd == READ && rq_data_dir(CURRENT) == READ &&
CURRENT->sector != -1; CURRENT->sector != -1;
} }
......
...@@ -623,7 +623,8 @@ static void hd_request(void) ...@@ -623,7 +623,8 @@ static void hd_request(void)
cyl = track / disk->head; cyl = track / disk->head;
#ifdef DEBUG #ifdef DEBUG
printk("%s: %sing: CHS=%d/%d/%d, sectors=%d, buffer=%p\n", printk("%s: %sing: CHS=%d/%d/%d, sectors=%d, buffer=%p\n",
req->rq_disk->disk_name, (req->cmd == READ)?"read":"writ", req->rq_disk->disk_name,
req_data_dir(req) == READ ? "read" : "writ",
cyl, head, sec, nsect, req->buffer); cyl, head, sec, nsect, req->buffer);
#endif #endif
if (blk_fs_request(req)) { if (blk_fs_request(req)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment