* [PATCH 0/3] scsi: target: se_cmd cleanups and race fix
@ 2021-07-28 11:53 David Disseldorp
2021-07-28 11:53 ` [PATCH 1/3] scsi: target: avoid using lun_tg_pt_gp after unlock David Disseldorp
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: David Disseldorp @ 2021-07-28 11:53 UTC (permalink / raw)
To: target-devel; +Cc: martin.petersen, michael.christie
While looking into XCOPY sense propagation issues (see Sergey's
patchset), I came across some se_cmd members which are unneeded. This
series also carries a fix for a theoretical lun_tg_pt_gp race condition.
Cheers, David
drivers/target/sbp/sbp_target.c | 4 +-
drivers/target/target_core_alua.c | 94 ++++++++++----------------
drivers/target/target_core_transport.c | 33 ++++++---
include/target/target_core_base.h | 8 ++-
4 files changed, 66 insertions(+), 73 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] scsi: target: avoid using lun_tg_pt_gp after unlock
2021-07-28 11:53 [PATCH 0/3] scsi: target: se_cmd cleanups and race fix David Disseldorp
@ 2021-07-28 11:53 ` David Disseldorp
2021-07-28 11:53 ` [PATCH 2/3] scsi: target: sbp: drop incorrect asc/ascq usage David Disseldorp
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: David Disseldorp @ 2021-07-28 11:53 UTC (permalink / raw)
To: target-devel
Cc: martin.petersen, michael.christie, David Disseldorp, Hannes Reinecke
core_alua_state_lba_dependent() currently uses lun->lun_tg_pt_gp without
holding the lun_tg_pt_gp_lock. The lock is taken in the caller, so
obtain the needed tg_pt_gp_id there instead.
Signed-off-by: David Disseldorp <ddiss@suse.de>
Cc: Hannes Reinecke <hare@suse.de>
---
drivers/target/target_core_alua.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
index 3bb921345bce..e0036e72b351 100644
--- a/drivers/target/target_core_alua.c
+++ b/drivers/target/target_core_alua.c
@@ -460,7 +460,7 @@ static inline void core_alua_state_nonoptimized(
static inline int core_alua_state_lba_dependent(
struct se_cmd *cmd,
- struct t10_alua_tg_pt_gp *tg_pt_gp)
+ u16 tg_pt_gp_id)
{
struct se_device *dev = cmd->se_dev;
u64 segment_size, segment_mult, sectors, lba;
@@ -511,8 +511,7 @@ static inline int core_alua_state_lba_dependent(
}
list_for_each_entry(map_mem, &cur_map->lba_map_mem_list,
lba_map_mem_list) {
- if (map_mem->lba_map_mem_alua_pg_id !=
- tg_pt_gp->tg_pt_gp_id)
+ if (map_mem->lba_map_mem_alua_pg_id != tg_pt_gp_id)
continue;
switch(map_mem->lba_map_mem_alua_state) {
case ALUA_ACCESS_STATE_STANDBY:
@@ -674,6 +673,7 @@ target_alua_state_check(struct se_cmd *cmd)
struct se_lun *lun = cmd->se_lun;
struct t10_alua_tg_pt_gp *tg_pt_gp;
int out_alua_state, nonop_delay_msecs;
+ u16 tg_pt_gp_id;
if (dev->se_hba->hba_flags & HBA_FLAGS_INTERNAL_USE)
return 0;
@@ -698,8 +698,8 @@ target_alua_state_check(struct se_cmd *cmd)
tg_pt_gp = lun->lun_tg_pt_gp;
out_alua_state = tg_pt_gp->tg_pt_gp_alua_access_state;
nonop_delay_msecs = tg_pt_gp->tg_pt_gp_nonop_delay_msecs;
+ tg_pt_gp_id = tg_pt_gp->tg_pt_gp_id;
- // XXX: keeps using tg_pt_gp witout reference after unlock
spin_unlock(&lun->lun_tg_pt_gp_lock);
/*
* Process ALUA_ACCESS_STATE_ACTIVE_OPTIMIZED in a separate conditional
@@ -727,7 +727,7 @@ target_alua_state_check(struct se_cmd *cmd)
return TCM_CHECK_CONDITION_NOT_READY;
break;
case ALUA_ACCESS_STATE_LBA_DEPENDENT:
- if (core_alua_state_lba_dependent(cmd, tg_pt_gp))
+ if (core_alua_state_lba_dependent(cmd, tg_pt_gp_id))
return TCM_CHECK_CONDITION_NOT_READY;
break;
/*
--
2.26.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] scsi: target: sbp: drop incorrect asc/ascq usage
2021-07-28 11:53 [PATCH 0/3] scsi: target: se_cmd cleanups and race fix David Disseldorp
2021-07-28 11:53 ` [PATCH 1/3] scsi: target: avoid using lun_tg_pt_gp after unlock David Disseldorp
@ 2021-07-28 11:53 ` David Disseldorp
2021-07-28 11:53 ` [PATCH 3/3] scsi: target: drop unnecessary se_cmd asc/ascq members David Disseldorp
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: David Disseldorp @ 2021-07-28 11:53 UTC (permalink / raw)
To: target-devel
Cc: martin.petersen, michael.christie, David Disseldorp, Chris Boot
The se_cmd scsi_asc and scsi_ascq members are only used for tracking
ALUA SCSI sense detail between target_core_alua and
translate_sense_reason(), so they're effectively always zero here.
Signed-off-by: David Disseldorp <ddiss@suse.de>
Cc: Chris Boot <bootc@bootc.net>
---
drivers/target/sbp/sbp_target.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c
index 4d3ceee23622..b9f9fb5d7e63 100644
--- a/drivers/target/sbp/sbp_target.c
+++ b/drivers/target/sbp/sbp_target.c
@@ -1389,8 +1389,8 @@ static void sbp_sense_mangle(struct sbp_target_request *req)
(sense[0] & 0x80) | /* valid */
((sense[2] & 0xe0) >> 1) | /* mark, eom, ili */
(sense[2] & 0x0f); /* sense_key */
- status[2] = se_cmd->scsi_asc; /* sense_code */
- status[3] = se_cmd->scsi_ascq; /* sense_qualifier */
+ status[2] = 0; /* XXX sense_code */
+ status[3] = 0; /* XXX sense_qualifier */
/* information */
status[4] = sense[3];
--
2.26.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] scsi: target: drop unnecessary se_cmd asc/ascq members
2021-07-28 11:53 [PATCH 0/3] scsi: target: se_cmd cleanups and race fix David Disseldorp
2021-07-28 11:53 ` [PATCH 1/3] scsi: target: avoid using lun_tg_pt_gp after unlock David Disseldorp
2021-07-28 11:53 ` [PATCH 2/3] scsi: target: sbp: drop incorrect asc/ascq usage David Disseldorp
@ 2021-07-28 11:53 ` David Disseldorp
2021-08-01 18:55 ` [PATCH 0/3] scsi: target: se_cmd cleanups and race fix Mike Christie
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: David Disseldorp @ 2021-07-28 11:53 UTC (permalink / raw)
To: target-devel; +Cc: martin.petersen, michael.christie, David Disseldorp
These members are only used for ALUA sense detail propagation, which
can just as easily be done via sense_reason_t.
Signed-off-by: David Disseldorp <ddiss@suse.de>
---
drivers/target/target_core_alua.c | 86 +++++++++-----------------
drivers/target/target_core_transport.c | 33 +++++++---
include/target/target_core_base.h | 8 ++-
3 files changed, 60 insertions(+), 67 deletions(-)
diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
index e0036e72b351..cb1de1ecaaa6 100644
--- a/drivers/target/target_core_alua.c
+++ b/drivers/target/target_core_alua.c
@@ -428,22 +428,6 @@ target_emulate_set_target_port_groups(struct se_cmd *cmd)
return rc;
}
-static inline void set_ascq(struct se_cmd *cmd, u8 alua_ascq)
-{
- /*
- * Set SCSI additional sense code (ASC) to 'LUN Not Accessible';
- * The ALUA additional sense code qualifier (ASCQ) is determined
- * by the ALUA primary or secondary access state..
- */
- pr_debug("[%s]: ALUA TG Port not available, "
- "SenseKey: NOT_READY, ASC/ASCQ: "
- "0x04/0x%02x\n",
- cmd->se_tfo->fabric_name, alua_ascq);
-
- cmd->scsi_asc = 0x04;
- cmd->scsi_ascq = alua_ascq;
-}
-
static inline void core_alua_state_nonoptimized(
struct se_cmd *cmd,
unsigned char *cdb,
@@ -458,7 +442,7 @@ static inline void core_alua_state_nonoptimized(
cmd->alua_nonop_delay = nonop_delay_msecs;
}
-static inline int core_alua_state_lba_dependent(
+static inline sense_reason_t core_alua_state_lba_dependent(
struct se_cmd *cmd,
u16 tg_pt_gp_id)
{
@@ -506,8 +490,7 @@ static inline int core_alua_state_lba_dependent(
}
if (!cur_map) {
spin_unlock(&dev->t10_alua.lba_map_lock);
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_UNAVAILABLE);
- return 1;
+ return TCM_ALUA_TG_PT_UNAVAILABLE;
}
list_for_each_entry(map_mem, &cur_map->lba_map_mem_list,
lba_map_mem_list) {
@@ -516,12 +499,10 @@ static inline int core_alua_state_lba_dependent(
switch(map_mem->lba_map_mem_alua_state) {
case ALUA_ACCESS_STATE_STANDBY:
spin_unlock(&dev->t10_alua.lba_map_lock);
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_STANDBY);
- return 1;
+ return TCM_ALUA_TG_PT_STANDBY;
case ALUA_ACCESS_STATE_UNAVAILABLE:
spin_unlock(&dev->t10_alua.lba_map_lock);
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_UNAVAILABLE);
- return 1;
+ return TCM_ALUA_TG_PT_UNAVAILABLE;
default:
break;
}
@@ -531,7 +512,7 @@ static inline int core_alua_state_lba_dependent(
return 0;
}
-static inline int core_alua_state_standby(
+static inline sense_reason_t core_alua_state_standby(
struct se_cmd *cmd,
unsigned char *cdb)
{
@@ -555,24 +536,21 @@ static inline int core_alua_state_standby(
case SAI_READ_CAPACITY_16:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_STANDBY);
- return 1;
+ return TCM_ALUA_TG_PT_STANDBY;
}
case MAINTENANCE_IN:
switch (cdb[1] & 0x1f) {
case MI_REPORT_TARGET_PGS:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_STANDBY);
- return 1;
+ return TCM_ALUA_TG_PT_STANDBY;
}
case MAINTENANCE_OUT:
switch (cdb[1]) {
case MO_SET_TARGET_PGS:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_STANDBY);
- return 1;
+ return TCM_ALUA_TG_PT_STANDBY;
}
case REQUEST_SENSE:
case PERSISTENT_RESERVE_IN:
@@ -581,14 +559,13 @@ static inline int core_alua_state_standby(
case WRITE_BUFFER:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_STANDBY);
- return 1;
+ return TCM_ALUA_TG_PT_STANDBY;
}
return 0;
}
-static inline int core_alua_state_unavailable(
+static inline sense_reason_t core_alua_state_unavailable(
struct se_cmd *cmd,
unsigned char *cdb)
{
@@ -605,30 +582,27 @@ static inline int core_alua_state_unavailable(
case MI_REPORT_TARGET_PGS:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_UNAVAILABLE);
- return 1;
+ return TCM_ALUA_TG_PT_UNAVAILABLE;
}
case MAINTENANCE_OUT:
switch (cdb[1]) {
case MO_SET_TARGET_PGS:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_UNAVAILABLE);
- return 1;
+ return TCM_ALUA_TG_PT_UNAVAILABLE;
}
case REQUEST_SENSE:
case READ_BUFFER:
case WRITE_BUFFER:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_TG_PT_UNAVAILABLE);
- return 1;
+ return TCM_ALUA_TG_PT_UNAVAILABLE;
}
return 0;
}
-static inline int core_alua_state_transition(
+static inline sense_reason_t core_alua_state_transition(
struct se_cmd *cmd,
unsigned char *cdb)
{
@@ -645,16 +619,14 @@ static inline int core_alua_state_transition(
case MI_REPORT_TARGET_PGS:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_STATE_TRANSITION);
- return 1;
+ return TCM_ALUA_STATE_TRANSITION;
}
case REQUEST_SENSE:
case READ_BUFFER:
case WRITE_BUFFER:
return 0;
default:
- set_ascq(cmd, ASCQ_04H_ALUA_STATE_TRANSITION);
- return 1;
+ return TCM_ALUA_STATE_TRANSITION;
}
return 0;
@@ -674,6 +646,7 @@ target_alua_state_check(struct se_cmd *cmd)
struct t10_alua_tg_pt_gp *tg_pt_gp;
int out_alua_state, nonop_delay_msecs;
u16 tg_pt_gp_id;
+ sense_reason_t rc = TCM_NO_SENSE;
if (dev->se_hba->hba_flags & HBA_FLAGS_INTERNAL_USE)
return 0;
@@ -687,8 +660,7 @@ target_alua_state_check(struct se_cmd *cmd)
if (atomic_read(&lun->lun_tg_pt_secondary_offline)) {
pr_debug("ALUA: Got secondary offline status for local"
" target port\n");
- set_ascq(cmd, ASCQ_04H_ALUA_OFFLINE);
- return TCM_CHECK_CONDITION_NOT_READY;
+ return TCM_ALUA_OFFLINE;
}
if (!lun->lun_tg_pt_gp)
@@ -715,20 +687,16 @@ target_alua_state_check(struct se_cmd *cmd)
core_alua_state_nonoptimized(cmd, cdb, nonop_delay_msecs);
break;
case ALUA_ACCESS_STATE_STANDBY:
- if (core_alua_state_standby(cmd, cdb))
- return TCM_CHECK_CONDITION_NOT_READY;
+ rc = core_alua_state_standby(cmd, cdb);
break;
case ALUA_ACCESS_STATE_UNAVAILABLE:
- if (core_alua_state_unavailable(cmd, cdb))
- return TCM_CHECK_CONDITION_NOT_READY;
+ rc = core_alua_state_unavailable(cmd, cdb);
break;
case ALUA_ACCESS_STATE_TRANSITION:
- if (core_alua_state_transition(cmd, cdb))
- return TCM_CHECK_CONDITION_NOT_READY;
+ rc = core_alua_state_transition(cmd, cdb);
break;
case ALUA_ACCESS_STATE_LBA_DEPENDENT:
- if (core_alua_state_lba_dependent(cmd, tg_pt_gp_id))
- return TCM_CHECK_CONDITION_NOT_READY;
+ rc = core_alua_state_lba_dependent(cmd, tg_pt_gp_id);
break;
/*
* OFFLINE is a secondary ALUA target port group access state, that is
@@ -738,10 +706,16 @@ target_alua_state_check(struct se_cmd *cmd)
default:
pr_err("Unknown ALUA access state: 0x%02x\n",
out_alua_state);
- return TCM_INVALID_CDB_FIELD;
+ rc = TCM_INVALID_CDB_FIELD;
}
- return 0;
+ if (rc && rc != TCM_INVALID_CDB_FIELD) {
+ pr_debug("[%s]: ALUA TG Port not available, "
+ "SenseKey: NOT_READY, ASC/rc: 0x04/%d\n",
+ cmd->se_tfo->fabric_name, rc);
+ }
+
+ return rc;
}
/*
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index 26ceabe34de5..c26b3afc4575 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -2003,7 +2003,6 @@ void transport_generic_request_failure(struct se_cmd *cmd,
case TCM_ADDRESS_OUT_OF_RANGE:
case TCM_CHECK_CONDITION_ABORT_CMD:
case TCM_CHECK_CONDITION_UNIT_ATTENTION:
- case TCM_CHECK_CONDITION_NOT_READY:
case TCM_LOGICAL_BLOCK_GUARD_CHECK_FAILED:
case TCM_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED:
case TCM_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED:
@@ -2013,6 +2012,10 @@ void transport_generic_request_failure(struct se_cmd *cmd,
case TCM_TOO_MANY_SEGMENT_DESCS:
case TCM_UNSUPPORTED_SEGMENT_DESC_TYPE_CODE:
case TCM_INVALID_FIELD_IN_COMMAND_IU:
+ case TCM_ALUA_TG_PT_STANDBY:
+ case TCM_ALUA_TG_PT_UNAVAILABLE:
+ case TCM_ALUA_STATE_TRANSITION:
+ case TCM_ALUA_OFFLINE:
break;
case TCM_OUT_OF_RESOURCES:
cmd->scsi_status = SAM_STAT_TASK_SET_FULL;
@@ -3277,9 +3280,6 @@ static const struct sense_detail sense_detail_table[] = {
[TCM_CHECK_CONDITION_UNIT_ATTENTION] = {
.key = UNIT_ATTENTION,
},
- [TCM_CHECK_CONDITION_NOT_READY] = {
- .key = NOT_READY,
- },
[TCM_MISCOMPARE_VERIFY] = {
.key = MISCOMPARE,
.asc = 0x1d, /* MISCOMPARE DURING VERIFY OPERATION */
@@ -3340,6 +3340,26 @@ static const struct sense_detail sense_detail_table[] = {
.asc = 0x0e,
.ascq = 0x03, /* INVALID FIELD IN COMMAND INFORMATION UNIT */
},
+ [TCM_ALUA_TG_PT_STANDBY] = {
+ .key = NOT_READY,
+ .asc = 0x04,
+ .ascq = ASCQ_04H_ALUA_TG_PT_STANDBY,
+ },
+ [TCM_ALUA_TG_PT_UNAVAILABLE] = {
+ .key = NOT_READY,
+ .asc = 0x04,
+ .ascq = ASCQ_04H_ALUA_TG_PT_UNAVAILABLE,
+ },
+ [TCM_ALUA_STATE_TRANSITION] = {
+ .key = NOT_READY,
+ .asc = 0x04,
+ .ascq = ASCQ_04H_ALUA_STATE_TRANSITION,
+ },
+ [TCM_ALUA_OFFLINE] = {
+ .key = NOT_READY,
+ .asc = 0x04,
+ .ascq = ASCQ_04H_ALUA_OFFLINE,
+ },
};
/**
@@ -3374,11 +3394,8 @@ static void translate_sense_reason(struct se_cmd *cmd, sense_reason_t reason)
cmd->scsi_status = SAM_STAT_BUSY;
return;
}
- } else if (sd->asc == 0) {
- WARN_ON_ONCE(cmd->scsi_asc == 0);
- asc = cmd->scsi_asc;
- ascq = cmd->scsi_ascq;
} else {
+ WARN_ON_ONCE(sd->asc == 0);
asc = sd->asc;
ascq = sd->ascq;
}
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index 85c16c266eac..f53e0f160695 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -171,7 +171,7 @@ enum tcm_sense_reason_table {
TCM_WRITE_PROTECTED = R(0x0c),
TCM_CHECK_CONDITION_ABORT_CMD = R(0x0d),
TCM_CHECK_CONDITION_UNIT_ATTENTION = R(0x0e),
- TCM_CHECK_CONDITION_NOT_READY = R(0x0f),
+
TCM_RESERVATION_CONFLICT = R(0x10),
TCM_ADDRESS_OUT_OF_RANGE = R(0x11),
TCM_OUT_OF_RESOURCES = R(0x12),
@@ -188,6 +188,10 @@ enum tcm_sense_reason_table {
TCM_INSUFFICIENT_REGISTRATION_RESOURCES = R(0x1d),
TCM_LUN_BUSY = R(0x1e),
TCM_INVALID_FIELD_IN_COMMAND_IU = R(0x1f),
+ TCM_ALUA_TG_PT_STANDBY = R(0x20),
+ TCM_ALUA_TG_PT_UNAVAILABLE = R(0x21),
+ TCM_ALUA_STATE_TRANSITION = R(0x22),
+ TCM_ALUA_OFFLINE = R(0x23),
#undef R
};
@@ -455,8 +459,6 @@ enum target_core_dif_check {
struct se_cmd {
/* SAM response code being sent to initiator */
u8 scsi_status;
- u8 scsi_asc;
- u8 scsi_ascq;
u16 scsi_sense_length;
unsigned unknown_data_length:1;
bool state_active:1;
--
2.26.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] scsi: target: se_cmd cleanups and race fix
2021-07-28 11:53 [PATCH 0/3] scsi: target: se_cmd cleanups and race fix David Disseldorp
` (2 preceding siblings ...)
2021-07-28 11:53 ` [PATCH 3/3] scsi: target: drop unnecessary se_cmd asc/ascq members David Disseldorp
@ 2021-08-01 18:55 ` Mike Christie
2021-08-03 2:57 ` Martin K. Petersen
2021-08-10 5:20 ` Martin K. Petersen
5 siblings, 0 replies; 7+ messages in thread
From: Mike Christie @ 2021-08-01 18:55 UTC (permalink / raw)
To: David Disseldorp, target-devel; +Cc: martin.petersen
On 7/28/21 6:53 AM, David Disseldorp wrote:
> While looking into XCOPY sense propagation issues (see Sergey's
> patchset), I came across some se_cmd members which are unneeded. This
> series also carries a fix for a theoretical lun_tg_pt_gp race condition.
>
> Cheers, David
>
>
> drivers/target/sbp/sbp_target.c | 4 +-
> drivers/target/target_core_alua.c | 94 ++++++++++----------------
> drivers/target/target_core_transport.c | 33 ++++++---
> include/target/target_core_base.h | 8 ++-
> 4 files changed, 66 insertions(+), 73 deletions(-)
>
Reviewed-by: Mike Christie <michael.christie@oracle.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] scsi: target: se_cmd cleanups and race fix
2021-07-28 11:53 [PATCH 0/3] scsi: target: se_cmd cleanups and race fix David Disseldorp
` (3 preceding siblings ...)
2021-08-01 18:55 ` [PATCH 0/3] scsi: target: se_cmd cleanups and race fix Mike Christie
@ 2021-08-03 2:57 ` Martin K. Petersen
2021-08-10 5:20 ` Martin K. Petersen
5 siblings, 0 replies; 7+ messages in thread
From: Martin K. Petersen @ 2021-08-03 2:57 UTC (permalink / raw)
To: David Disseldorp; +Cc: target-devel, martin.petersen, michael.christie
David,
> While looking into XCOPY sense propagation issues (see Sergey's
> patchset), I came across some se_cmd members which are unneeded. This
> series also carries a fix for a theoretical lun_tg_pt_gp race condition.
Applied to 5.15/scsi-staging, thanks!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] scsi: target: se_cmd cleanups and race fix
2021-07-28 11:53 [PATCH 0/3] scsi: target: se_cmd cleanups and race fix David Disseldorp
` (4 preceding siblings ...)
2021-08-03 2:57 ` Martin K. Petersen
@ 2021-08-10 5:20 ` Martin K. Petersen
5 siblings, 0 replies; 7+ messages in thread
From: Martin K. Petersen @ 2021-08-10 5:20 UTC (permalink / raw)
To: David Disseldorp, target-devel; +Cc: Martin K . Petersen, michael.christie
On Wed, 28 Jul 2021 13:53:51 +0200, David Disseldorp wrote:
> While looking into XCOPY sense propagation issues (see Sergey's
> patchset), I came across some se_cmd members which are unneeded. This
> series also carries a fix for a theoretical lun_tg_pt_gp race condition.
>
> Cheers, David
>
>
> [...]
Applied to 5.15/scsi-queue, thanks!
[1/3] scsi: target: avoid using lun_tg_pt_gp after unlock
https://git.kernel.org/mkp/scsi/c/7e457e5efc28
[2/3] scsi: target: sbp: drop incorrect asc/ascq usage
https://git.kernel.org/mkp/scsi/c/35410f862426
[3/3] scsi: target: drop unnecessary se_cmd asc/ascq members
https://git.kernel.org/mkp/scsi/c/40fd8845c025
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-08-10 5:20 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-28 11:53 [PATCH 0/3] scsi: target: se_cmd cleanups and race fix David Disseldorp
2021-07-28 11:53 ` [PATCH 1/3] scsi: target: avoid using lun_tg_pt_gp after unlock David Disseldorp
2021-07-28 11:53 ` [PATCH 2/3] scsi: target: sbp: drop incorrect asc/ascq usage David Disseldorp
2021-07-28 11:53 ` [PATCH 3/3] scsi: target: drop unnecessary se_cmd asc/ascq members David Disseldorp
2021-08-01 18:55 ` [PATCH 0/3] scsi: target: se_cmd cleanups and race fix Mike Christie
2021-08-03 2:57 ` Martin K. Petersen
2021-08-10 5:20 ` Martin K. Petersen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.