Message ID | 56ABF33C.9030509@sandisk.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
TG9va3MgZ29vZC4NClJldmlld2VkLWJ5OiBBbGV4IEVzdHJpbiA8YWxleC5lc3RyaW5AaW50ZWwu Y29tPg0KDQo+IElmIGFuIGluaXRpYXRvciBvYnNlcnZlcyBMVU4gZGVsZXRpb24gZHVyaW5nIHNo dXRkb3duIG9mIHRoZQ0KPiB0YXJnZXQgc3RhY2sgdGhlbiB0aGF0IHdpbGwgdHJpZ2dlciBhbiBJ L08gZXJyb3IgZXZlbiB3aGVuIHVzaW5nDQo+IG11bHRpcGF0aGQuIFVzZXJzIG5lZWQgYSB3YXkg dG8gYXZvaWQgdGhhdCBzaHV0dGluZyBkb3duIHRoZQ0KPiB0YXJnZXQgc3RhY2sgY2F1c2VzIEkv TyBlcnJvcnMsIGUuZy4gYnkgcHJvdmlkaW5nIGEgd2F5IHRvIGZvcmNlDQo+IGluaXRpYXRvciBs b2dvdXQuIEhlbmNlIGNsb3NlIGFsbCBzZXNzaW9ucyBpZiBhIHRhcmdldCBwb3J0IGlzDQo+IGRp c2FibGVkLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQmFydCBWYW4gQXNzY2hlIDxiYXJ0LnZhbmFz c2NoZUBzYW5kaXNrLmNvbT4NCj4gQ2M6IENocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRlPg0K PiBDYzogU2FnaSBHcmltYmVyZyA8c2FnaWdAbWVsbGFub3guY29tPg0KPiAtLS0NCj4gIGRyaXZl cnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgfCAyMyArKysrKysrKysrKysrKysrKysr LS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L2liX3NycHQu Yw0KPiBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMNCj4gaW5kZXggYTdj OTY2Zi4uZDViOTMyYyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0 L2liX3NycHQuYw0KPiArKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5j DQo+IEBAIC0zMTU3LDYgKzMxNTcsOCBAQCBzdGF0aWMgc3NpemVfdCBzcnB0X3RwZ19lbmFibGVf c3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtDQo+ICppdGVtLA0KPiAgew0KPiAgCXN0cnVjdCBzZV9w b3J0YWxfZ3JvdXAgKnNlX3RwZyA9IHRvX3RwZyhpdGVtKTsNCj4gIAlzdHJ1Y3Qgc3JwdF9wb3J0 ICpzcG9ydCA9IGNvbnRhaW5lcl9vZihzZV90cGcsIHN0cnVjdCBzcnB0X3BvcnQsDQo+IHBvcnRf dHBnXzEpOw0KPiArCXN0cnVjdCBzcnB0X2RldmljZSAqc2RldiA9IHNwb3J0LT5zZGV2Ow0KPiAr CXN0cnVjdCBzcnB0X3JkbWFfY2ggKmNoOw0KPiAgCXVuc2lnbmVkIGxvbmcgdG1wOw0KPiAgICAg ICAgICBpbnQgcmV0Ow0KPiANCj4gQEAgLTMxNzAsMTEgKzMxNzIsMjQgQEAgc3RhdGljIHNzaXpl X3Qgc3JwdF90cGdfZW5hYmxlX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbQ0KPiAqaXRlbSwNCj4g IAkJcHJfZXJyKCJJbGxlZ2FsIHZhbHVlIGZvciBzcnB0X3RwZ19zdG9yZV9lbmFibGU6ICVsdVxu IiwgdG1wKTsNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJfQ0KPiAtCWlmICh0bXAgPT0gMSkN Cj4gLQkJc3BvcnQtPmVuYWJsZWQgPSB0cnVlOw0KPiAtCWVsc2UNCj4gLQkJc3BvcnQtPmVuYWJs ZWQgPSBmYWxzZTsNCj4gKwlpZiAoc3BvcnQtPmVuYWJsZWQgPT0gdG1wKQ0KPiArCQlnb3RvIG91 dDsNCj4gKwlzcG9ydC0+ZW5hYmxlZCA9IHRtcDsNCj4gKwlpZiAoc3BvcnQtPmVuYWJsZWQpDQo+ ICsJCWdvdG8gb3V0Ow0KPiANCj4gKwltdXRleF9sb2NrKCZzZGV2LT5tdXRleCk7DQo+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeShjaCwgJnNkZXYtPnJjaF9saXN0LCBsaXN0KSB7DQo+ICsJCWlmIChj aC0+c3BvcnQgPT0gc3BvcnQpIHsNCj4gKwkJCXByX2RlYnVnKCIlczogY2ggJXAgJXMtJWRcbiIs IF9fZnVuY19fLCBjaCwNCj4gKwkJCQkgY2gtPnNlc3NfbmFtZSwgY2gtPnFwLT5xcF9udW0pOw0K PiArCQkJc3JwdF9kaXNjb25uZWN0X2NoKGNoKTsNCj4gKwkJCXNycHRfY2xvc2VfY2goY2gpOw0K PiArCQl9DQo+ICsJfQ0KPiArCW11dGV4X3VubG9jaygmc2Rldi0+bXV0ZXgpOw0KPiArDQo+ICtv dXQ6DQo+ICAJcmV0dXJuIGNvdW50Ow0KPiAgfQ0KPiANCj4gLS0NCj4gMi43LjANCg0K -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c index a7c966f..d5b932c 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -3157,6 +3157,8 @@ static ssize_t srpt_tpg_enable_store(struct config_item *item, { struct se_portal_group *se_tpg = to_tpg(item); struct srpt_port *sport = container_of(se_tpg, struct srpt_port, port_tpg_1); + struct srpt_device *sdev = sport->sdev; + struct srpt_rdma_ch *ch; unsigned long tmp; int ret; @@ -3170,11 +3172,24 @@ static ssize_t srpt_tpg_enable_store(struct config_item *item, pr_err("Illegal value for srpt_tpg_store_enable: %lu\n", tmp); return -EINVAL; } - if (tmp == 1) - sport->enabled = true; - else - sport->enabled = false; + if (sport->enabled == tmp) + goto out; + sport->enabled = tmp; + if (sport->enabled) + goto out; + mutex_lock(&sdev->mutex); + list_for_each_entry(ch, &sdev->rch_list, list) { + if (ch->sport == sport) { + pr_debug("%s: ch %p %s-%d\n", __func__, ch, + ch->sess_name, ch->qp->qp_num); + srpt_disconnect_ch(ch); + srpt_close_ch(ch); + } + } + mutex_unlock(&sdev->mutex); + +out: return count; }
If an initiator observes LUN deletion during shutdown of the target stack then that will trigger an I/O error even when using multipathd. Users need a way to avoid that shutting down the target stack causes I/O errors, e.g. by providing a way to force initiator logout. Hence close all sessions if a target port is disabled. Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Sagi Grimberg <sagig@mellanox.com> --- drivers/infiniband/ulp/srpt/ib_srpt.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-)