IB/srp: Allow SRP disconnect through sysfs
Make it possible to disconnect the IB RC connection used by the SRP protocol to communicate with a target. Have the SRP transport layer create a sysfs "delete" attribute for initiator drivers that support this functionality. Signed-off-by: Bart Van Assche <bvanassche@acm.org> Acked-by: David Dillow <dillowda@ornl.gov> Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: Robert Jennings <rcj@linux.vnet.ibm.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:

committed by
Roland Dreier

parent
7e1265bfe7
commit
dc1bdbd9b8
@@ -549,6 +549,13 @@ static void srp_remove_work(struct work_struct *work)
|
||||
srp_remove_target(target);
|
||||
}
|
||||
|
||||
static void srp_rport_delete(struct srp_rport *rport)
|
||||
{
|
||||
struct srp_target_port *target = rport->lld_data;
|
||||
|
||||
srp_queue_remove_work(target);
|
||||
}
|
||||
|
||||
static int srp_connect_target(struct srp_target_port *target)
|
||||
{
|
||||
int retries = 3;
|
||||
@@ -1958,6 +1965,8 @@ static int srp_add_target(struct srp_host *host, struct srp_target_port *target)
|
||||
return PTR_ERR(rport);
|
||||
}
|
||||
|
||||
rport->lld_data = target;
|
||||
|
||||
spin_lock(&host->target_lock);
|
||||
list_add_tail(&target->list, &host->target_list);
|
||||
spin_unlock(&host->target_lock);
|
||||
@@ -2524,6 +2533,7 @@ static void srp_remove_one(struct ib_device *device)
|
||||
}
|
||||
|
||||
static struct srp_function_template ib_srp_transport_functions = {
|
||||
.rport_delete = srp_rport_delete,
|
||||
};
|
||||
|
||||
static int __init srp_init_module(void)
|
||||
|
Reference in New Issue
Block a user