Avoid that the following kernel warning is reported if the SRP
target system accepts fewer channels per connection than what
was requested by the initiator system:
WARNING: at drivers/infiniband/ulp/srp/ib_srp.c:617 srp_destroy_qp+0xb1/0x120 [ib_srp]()
Call Trace:
[<
ffffffff8105d67f>] warn_slowpath_common+0x7f/0xc0
[<
ffffffff8105d6da>] warn_slowpath_null+0x1a/0x20
[<
ffffffffa05419e1>] srp_destroy_qp+0xb1/0x120 [ib_srp]
[<
ffffffffa05445fb>] srp_create_ch_ib+0x19b/0x420 [ib_srp]
[<
ffffffffa0545257>] srp_create_target+0x7d7/0xa94 [ib_srp]
[<
ffffffff8138dac0>] dev_attr_store+0x20/0x30
[<
ffffffff812079ef>] sysfs_write_file+0xef/0x170
[<
ffffffff81191fc4>] vfs_write+0xb4/0x130
[<
ffffffff8119276f>] sys_write+0x5f/0xa0
[<
ffffffff815a0a59>] system_call_fastpath+0x16/0x1b
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: Sebastian Parschauer <sebastian.riemer@profitbricks.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: stable@vger.kernel.org
Signed-off-by: Doug Ledford <dledford@redhat.com>
srp_free_ch_ib(target, ch);
srp_free_req_data(target, ch);
target->ch_count = ch - target->ch;
- break;
+ goto connected;
}
}
node_idx++;
}
+connected:
target->scsi_host->nr_hw_queues = target->ch_count;
ret = srp_add_target(host, target);