Commit fb597392 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: megaraid: Stop using the SCSI pointer

Set .cmd_size in the SCSI host template instead of using the SCSI pointer
from struct scsi_cmnd. This patch prepares for removal of the SCSI pointer
from struct scsi_cmnd.

Link: https://lore.kernel.org/r/20220218195117.25689-33-bvanassche@acm.orgReviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent cb2b6208
...@@ -1644,16 +1644,10 @@ mega_cmd_done(adapter_t *adapter, u8 completed[], int nstatus, int status) ...@@ -1644,16 +1644,10 @@ mega_cmd_done(adapter_t *adapter, u8 completed[], int nstatus, int status)
static void static void
mega_rundoneq (adapter_t *adapter) mega_rundoneq (adapter_t *adapter)
{ {
struct scsi_cmnd *cmd; struct megaraid_cmd_priv *cmd_priv;
struct list_head *pos;
list_for_each(pos, &adapter->completed_list) {
struct scsi_pointer* spos = (struct scsi_pointer *)pos; list_for_each_entry(cmd_priv, &adapter->completed_list, entry)
scsi_done(megaraid_to_scsi_cmd(cmd_priv));
cmd = list_entry(spos, struct scsi_cmnd, SCp);
scsi_done(cmd);
}
INIT_LIST_HEAD(&adapter->completed_list); INIT_LIST_HEAD(&adapter->completed_list);
} }
...@@ -4123,6 +4117,7 @@ static struct scsi_host_template megaraid_template = { ...@@ -4123,6 +4117,7 @@ static struct scsi_host_template megaraid_template = {
.eh_bus_reset_handler = megaraid_reset, .eh_bus_reset_handler = megaraid_reset,
.eh_host_reset_handler = megaraid_reset, .eh_host_reset_handler = megaraid_reset,
.no_write_same = 1, .no_write_same = 1,
.cmd_size = sizeof(struct megaraid_cmd_priv),
}; };
static int static int
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <scsi/scsi_cmnd.h>
#define MEGARAID_VERSION \ #define MEGARAID_VERSION \
"v2.00.4 (Release Date: Thu Feb 9 08:51:30 EST 2006)\n" "v2.00.4 (Release Date: Thu Feb 9 08:51:30 EST 2006)\n"
...@@ -756,8 +757,28 @@ struct private_bios_data { ...@@ -756,8 +757,28 @@ struct private_bios_data {
#define CACHED_IO 0 #define CACHED_IO 0
#define DIRECT_IO 1 #define DIRECT_IO 1
struct megaraid_cmd_priv {
struct list_head entry;
};
#define SCSI_LIST(scp) \
(&((struct megaraid_cmd_priv *)scsi_cmd_priv(scp))->entry)
struct scsi_cmd_and_priv {
struct scsi_cmnd cmd;
struct megaraid_cmd_priv priv;
};
static inline struct scsi_cmnd *
megaraid_to_scsi_cmd(struct megaraid_cmd_priv *cmd_priv)
{
/* See also scsi_mq_setup_tags() */
BUILD_BUG_ON(sizeof(struct scsi_cmd_and_priv) !=
sizeof(struct scsi_cmnd) +
sizeof(struct megaraid_cmd_priv));
#define SCSI_LIST(scp) ((struct list_head *)(&(scp)->SCp)) return &container_of(cmd_priv, struct scsi_cmd_and_priv, priv)->cmd;
}
/* /*
* Each controller's soft state * Each controller's soft state
......
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