Skip to contentSkip to conversation

IDE, packet commands and REQ_TYPE_SENSE?

DISCUSSION Jeff Garzik 2 participants 3 messages Apr 2, 2009 libata

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
Quoted 1 line · Jeff Garzik

Can we get rid of REQ_TYPE_SENSE?

Strike that, I forgot about blk_sense_request()

#2 lore raw
In reply to Jeff Garzik

Hi,

Quoted 2 lines

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.

Signature · 2 lines
Regards/Gruss,
Boris