mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 15:27:29 +00:00
ide: don't abuse cmd_type
Currently the legacy ide driver defines several request types of it's own, which is in the way of removing that field entirely. Instead add a type field to struct ide_request and use that to distinguish the different types of IDE-internal requests. It's a bit of a mess, but so is the surrounding code.. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
57292b58dd
commit
2f5a8e80f7
14 changed files with 117 additions and 51 deletions
|
@ -40,24 +40,58 @@
|
|||
|
||||
struct device;
|
||||
|
||||
/* IDE-specific values for req->cmd_type */
|
||||
enum ata_cmd_type_bits {
|
||||
REQ_TYPE_ATA_TASKFILE = REQ_TYPE_DRV_PRIV + 1,
|
||||
REQ_TYPE_ATA_PC,
|
||||
REQ_TYPE_ATA_SENSE, /* sense request */
|
||||
REQ_TYPE_ATA_PM_SUSPEND,/* suspend request */
|
||||
REQ_TYPE_ATA_PM_RESUME, /* resume request */
|
||||
/* values for ide_request.type */
|
||||
enum ata_priv_type {
|
||||
ATA_PRIV_MISC,
|
||||
ATA_PRIV_TASKFILE,
|
||||
ATA_PRIV_PC,
|
||||
ATA_PRIV_SENSE, /* sense request */
|
||||
ATA_PRIV_PM_SUSPEND, /* suspend request */
|
||||
ATA_PRIV_PM_RESUME, /* resume request */
|
||||
};
|
||||
|
||||
#define ata_pm_request(rq) \
|
||||
((rq)->cmd_type == REQ_TYPE_ATA_PM_SUSPEND || \
|
||||
(rq)->cmd_type == REQ_TYPE_ATA_PM_RESUME)
|
||||
|
||||
struct ide_request {
|
||||
struct scsi_request sreq;
|
||||
u8 sense[SCSI_SENSE_BUFFERSIZE];
|
||||
u8 type;
|
||||
};
|
||||
|
||||
static inline struct ide_request *ide_req(struct request *rq)
|
||||
{
|
||||
return blk_mq_rq_to_pdu(rq);
|
||||
}
|
||||
|
||||
static inline bool ata_misc_request(struct request *rq)
|
||||
{
|
||||
return rq->cmd_type == REQ_TYPE_DRV_PRIV &&
|
||||
ide_req(rq)->type == ATA_PRIV_MISC;
|
||||
}
|
||||
|
||||
static inline bool ata_taskfile_request(struct request *rq)
|
||||
{
|
||||
return rq->cmd_type == REQ_TYPE_DRV_PRIV &&
|
||||
ide_req(rq)->type == ATA_PRIV_TASKFILE;
|
||||
}
|
||||
|
||||
static inline bool ata_pc_request(struct request *rq)
|
||||
{
|
||||
return rq->cmd_type == REQ_TYPE_DRV_PRIV &&
|
||||
ide_req(rq)->type == ATA_PRIV_PC;
|
||||
}
|
||||
|
||||
static inline bool ata_sense_request(struct request *rq)
|
||||
{
|
||||
return rq->cmd_type == REQ_TYPE_DRV_PRIV &&
|
||||
ide_req(rq)->type == ATA_PRIV_SENSE;
|
||||
}
|
||||
|
||||
static inline bool ata_pm_request(struct request *rq)
|
||||
{
|
||||
return rq->cmd_type == REQ_TYPE_DRV_PRIV &&
|
||||
(ide_req(rq)->type == ATA_PRIV_PM_SUSPEND ||
|
||||
ide_req(rq)->type == ATA_PRIV_PM_RESUME);
|
||||
}
|
||||
|
||||
/* Error codes returned in rq->errors to the higher part of the driver. */
|
||||
enum {
|
||||
IDE_DRV_ERROR_GENERAL = 101,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue