2009-04-02 09:32:03

by Jeff Garzik

[permalink] [raw]
Subject: IDE, packet commands and REQ_TYPE_SENSE?

Looking at REQ_TYPE_*, I see that REQ_TYPE_SENSE is only used once in an
assignment, and appears to never be tested anywhere.

Furthermore, the use of REQ_TYPE_SENSE immediately follows a previous
assignment rq->cmd_type assignment:

cdrom_queue_request_sense():
[...]
/* stuff the sense request in front of our current request */
blk_rq_init(NULL, rq);
rq->cmd_type = REQ_TYPE_ATA_PC;
rq->rq_disk = info->disk;

rq->data = sense;
rq->cmd[0] = GPCMD_REQUEST_SENSE;
rq->cmd[4] = 18;
rq->data_len = 18;

rq->cmd_type = REQ_TYPE_SENSE;
rq->cmd_flags |= REQ_PREEMPT;
[...]

First, the code assigns REQ_TYPE_ATA_PC, then without any intervening
tests or branches, it assigns REQ_TYPE_SENSE.

So, some questions...

Is REQ_TYPE_ATA_PC sufficient (i.e. the first assignment)?

Can we get rid of REQ_TYPE_SENSE?

What are the differences between REQ_TYPE_ATA_PC and REQ_TYPE_BLOCK_PC?
Would it be possible to eliminate REQ_TYPE_ATA_PC after some work, as
well?

Jeff



2009-04-02 09:36:56

by Jeff Garzik

[permalink] [raw]
Subject: Re: IDE, packet commands and REQ_TYPE_SENSE?

Jeff Garzik wrote:
> Can we get rid of REQ_TYPE_SENSE?

Strike that, I forgot about blk_sense_request()

2009-04-02 12:45:50

by Borislav Petkov

[permalink] [raw]
Subject: Re: IDE, packet commands and REQ_TYPE_SENSE?

Hi,

> What are the differences between REQ_TYPE_ATA_PC and REQ_TYPE_BLOCK_PC?
> ?Would it be possible to eliminate REQ_TYPE_ATA_PC after some work, as well?

That's the plan. However, I'd like to wait for Tejun's block patches
to get settled first,
especially the convert-to-bio from rq->data bits.

--
Regards/Gruss,
Boris