Commit 02114f71 authored by Martin Dalecki's avatar Martin Dalecki Committed by Linus Torvalds

[PATCH] IDE-101

Here is a quick fix.  I would like to synchronize with the irq handler
changes as well.  Becouse right now I know that preemption is killing
the disk subsystem when moving data between disks using different
request queues...  In esp.  It get's me in to do_request() with a queue
in unplugged state.  (Not everything is my fault, after all :-).
parent 10f024fd
...@@ -194,22 +194,16 @@ int ide_raw_taskfile(struct ata_device *drive, struct ata_taskfile *ar, char *bu ...@@ -194,22 +194,16 @@ int ide_raw_taskfile(struct ata_device *drive, struct ata_taskfile *ar, char *bu
request_queue_t *q = &drive->queue; request_queue_t *q = &drive->queue;
struct list_head *queue_head = &q->queue_head; struct list_head *queue_head = &q->queue_head;
DECLARE_COMPLETION(wait); DECLARE_COMPLETION(wait);
struct request req;
#ifdef CONFIG_BLK_DEV_PDC4030 #ifdef CONFIG_BLK_DEV_PDC4030
if (ch->chipset == ide_pdc4030 && buf) if (ch->chipset == ide_pdc4030 && buf)
return -ENOSYS; /* special drive cmds not supported */ return -ENOSYS; /* special drive cmds not supported */
#endif #endif
rq = __blk_get_request(&drive->queue, READ); memset(&req, 0, sizeof(req));
if (!rq) rq = &req;
rq = __blk_get_request(&drive->queue, WRITE);
/*
* FIXME: Make sure there is a free slot on the list!
*/
BUG_ON(!rq);
rq->flags = REQ_SPECIAL; rq->flags = REQ_SPECIAL;
rq->buffer = buf; rq->buffer = buf;
rq->special = ar; rq->special = ar;
......
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