From 7deb68ab2cb341ac1378440397e89129c9c43f4a Mon Sep 17 00:00:00 2001 From: Edward Tomasz Napierala Date: Sat, 21 May 2016 11:10:48 +0000 Subject: [PATCH] Provide a way for ICL modules to declare they support PIM_UNMAPPED. MFC after: 1 month Sponsored by: The FreeBSD Foundation --- sys/dev/cxgbe/cxgbei/icl_cxgbei.c | 1 + sys/dev/iscsi/icl.h | 1 + sys/dev/iscsi/icl_soft.c | 1 + sys/dev/iscsi/iscsi.c | 8 ++++++++ 4 files changed, 11 insertions(+) diff --git a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c index 6332747553f..07a1f229d07 100644 --- a/sys/dev/cxgbe/cxgbei/icl_cxgbei.c +++ b/sys/dev/cxgbe/cxgbei/icl_cxgbei.c @@ -429,6 +429,7 @@ icl_cxgbei_new_conn(const char *name, struct mtx *lock) ic->ic_max_data_segment_length = CXGBEI_MAX_DSL; ic->ic_name = name; ic->ic_offload = "cxgbei"; + ic->ic_unmapped = false; CTR2(KTR_CXGBE, "%s: icc %p", __func__, icc); diff --git a/sys/dev/iscsi/icl.h b/sys/dev/iscsi/icl.h index d0f822d640a..29d115301de 100644 --- a/sys/dev/iscsi/icl.h +++ b/sys/dev/iscsi/icl.h @@ -113,6 +113,7 @@ struct icl_conn { size_t ic_maxtags; bool ic_disconnecting; bool ic_iser; + bool ic_unmapped; const char *ic_name; const char *ic_offload; diff --git a/sys/dev/iscsi/icl_soft.c b/sys/dev/iscsi/icl_soft.c index 84fecb65f52..c38493f05ab 100644 --- a/sys/dev/iscsi/icl_soft.c +++ b/sys/dev/iscsi/icl_soft.c @@ -1190,6 +1190,7 @@ icl_soft_new_conn(const char *name, struct mtx *lock) ic->ic_max_data_segment_length = ICL_MAX_DATA_SEGMENT_LENGTH; ic->ic_name = name; ic->ic_offload = "None"; + ic->ic_unmapped = false; return (ic); } diff --git a/sys/dev/iscsi/iscsi.c b/sys/dev/iscsi/iscsi.c index d408bec8b88..d72768ffc3f 100644 --- a/sys/dev/iscsi/iscsi.c +++ b/sys/dev/iscsi/iscsi.c @@ -2266,6 +2266,14 @@ iscsi_action(struct cam_sim *sim, union ccb *ccb) cpi->hba_inquiry = PI_TAG_ABLE; cpi->target_sprt = 0; cpi->hba_misc = PIM_EXTLUNS; + /* + * XXX: It shouldn't ever be NULL; this could be turned + * into a KASSERT eventually. + */ + if (is->is_conn == NULL) + ISCSI_WARN("NULL conn"); + else if (is->is_conn->ic_unmapped) + cpi->hba_misc |= PIM_UNMAPPED; cpi->hba_eng_cnt = 0; cpi->max_target = 0; /*