On Mar 14, 2023, at 9:23 AM, Hannes Reinecke <hare@xxxxxxx> wrote: > > On 2/8/23 18:40, Lee Duncan wrote: >> From: Lee Duncan <lduncan@xxxxxxxx> >> Right now the iscsi_endpoint is only linked to a connection once that >> connection has been established. For net namespace filtering of the >> sysfs objects, associate an endpoint with the host that it was >> allocated for when it is created. >> Signed-off-by: Chris Leech <cleech@xxxxxxxxxx> >> Signed-off-by: Lee Duncan <lduncan@xxxxxxxx> >> --- >> drivers/infiniband/ulp/iser/iscsi_iser.c | 2 +- >> drivers/scsi/be2iscsi/be_iscsi.c | 2 +- >> drivers/scsi/bnx2i/bnx2i_iscsi.c | 2 +- >> drivers/scsi/cxgbi/libcxgbi.c | 2 +- >> drivers/scsi/qedi/qedi_iscsi.c | 2 +- >> drivers/scsi/qla4xxx/ql4_os.c | 2 +- >> drivers/scsi/scsi_transport_iscsi.c | 3 ++- >> include/scsi/scsi_transport_iscsi.h | 6 +++++- >> 8 files changed, 13 insertions(+), 8 deletions(-) >> diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c >> index 620ae5b2d80d..d38c909b462f 100644 >> --- a/drivers/infiniband/ulp/iser/iscsi_iser.c >> +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c >> @@ -802,7 +802,7 @@ static struct iscsi_endpoint *iscsi_iser_ep_connect(struct Scsi_Host *shost, >> struct iser_conn *iser_conn; >> struct iscsi_endpoint *ep; >> - ep = iscsi_create_endpoint(0); >> + ep = iscsi_create_endpoint(shost, 0); >> if (!ep) >> return ERR_PTR(-ENOMEM); >> diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c >> index 8aeaddc93b16..c893d193f5ef 100644 >> --- a/drivers/scsi/be2iscsi/be_iscsi.c >> +++ b/drivers/scsi/be2iscsi/be_iscsi.c >> @@ -1168,7 +1168,7 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, >> return ERR_PTR(ret); >> } >> - ep = iscsi_create_endpoint(sizeof(struct beiscsi_endpoint)); >> + ep = iscsi_create_endpoint(shost, sizeof(struct beiscsi_endpoint)); >> if (!ep) { >> ret = -ENOMEM; >> return ERR_PTR(ret); >> diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c >> index a3c800e04a2e..ac63e93e07c6 100644 >> --- a/drivers/scsi/bnx2i/bnx2i_iscsi.c >> +++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c >> @@ -384,7 +384,7 @@ static struct iscsi_endpoint *bnx2i_alloc_ep(struct bnx2i_hba *hba) >> struct bnx2i_endpoint *bnx2i_ep; >> u32 ec_div; >> - ep = iscsi_create_endpoint(sizeof(*bnx2i_ep)); >> + ep = iscsi_create_endpoint(hba->shost, sizeof(*bnx2i_ep)); >> if (!ep) { >> printk(KERN_ERR "bnx2i: Could not allocate ep\n"); >> return NULL; >> diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c >> index af281e271f88..94edf8e1fb0c 100644 >> --- a/drivers/scsi/cxgbi/libcxgbi.c >> +++ b/drivers/scsi/cxgbi/libcxgbi.c >> @@ -2926,7 +2926,7 @@ struct iscsi_endpoint *cxgbi_ep_connect(struct Scsi_Host *shost, >> goto release_conn; >> } >> - ep = iscsi_create_endpoint(sizeof(*cep)); >> + ep = iscsi_create_endpoint(shost, sizeof(*cep)); >> if (!ep) { >> err = -ENOMEM; >> pr_info("iscsi alloc ep, OOM.\n"); >> diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c >> index 31ec429104e2..4baf1dbb8e92 100644 >> --- a/drivers/scsi/qedi/qedi_iscsi.c >> +++ b/drivers/scsi/qedi/qedi_iscsi.c >> @@ -931,7 +931,7 @@ qedi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, >> return ERR_PTR(-ENXIO); >> } >> - ep = iscsi_create_endpoint(sizeof(struct qedi_endpoint)); >> + ep = iscsi_create_endpoint(shost, sizeof(struct qedi_endpoint)); >> if (!ep) { >> QEDI_ERR(&qedi->dbg_ctx, "endpoint create fail\n"); >> ret = -ENOMEM; >> diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c >> index 005502125b27..acebf9c92c04 100644 >> --- a/drivers/scsi/qla4xxx/ql4_os.c >> +++ b/drivers/scsi/qla4xxx/ql4_os.c >> @@ -1717,7 +1717,7 @@ qla4xxx_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, >> } >> ha = iscsi_host_priv(shost); >> - ep = iscsi_create_endpoint(sizeof(struct qla_endpoint)); >> + ep = iscsi_create_endpoint(shost, sizeof(struct qla_endpoint)); >> if (!ep) { >> ret = -ENOMEM; >> return ERR_PTR(ret); >> diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c >> index be69cea9c6f8..86bafdb862a5 100644 >> --- a/drivers/scsi/scsi_transport_iscsi.c >> +++ b/drivers/scsi/scsi_transport_iscsi.c >> @@ -204,7 +204,7 @@ static struct attribute_group iscsi_endpoint_group = { >> }; >> struct iscsi_endpoint * >> -iscsi_create_endpoint(int dd_size) >> +iscsi_create_endpoint(struct Scsi_Host *shost, int dd_size) >> { >> struct iscsi_endpoint *ep; >> int err, id; >> @@ -230,6 +230,7 @@ iscsi_create_endpoint(int dd_size) >> ep->id = id; >> ep->dev.class = &iscsi_endpoint_class; >> + ep->dev.parent = &shost->shost_gendev; >> dev_set_name(&ep->dev, "ep-%d", id); >> err = device_register(&ep->dev); >> if (err) > > Umm... doesn't this change the sysfs layout? > IE won't the endpoint node be moved under the Scsi_Host directory? > > But even if it does: do we care? > > > Cheers, > > Hannes > No, it’s still /sys/class/iscsi_endpoint, since the dev.class hasn’t changed. — Lee