add iscsi_force_reconnect()
If a connection attempt is hung, then iscsi_reconnect() won't do anything. This makes sense if we'd just re-try to connect to the same target, but if (for example) login redirect might point us to a different, healthy, target, it should be possible to restart the full connection process on request. Signed-off-by: John Levon <john.levon@nutanix.com>
This commit is contained in:
committed by
Bart Van Assche
parent
314aa26576
commit
30dd7c6429
@@ -378,7 +378,7 @@ void iscsi_reconnect_cb(struct iscsi_context *iscsi, int status,
|
||||
iscsi->pending_reconnect = 0;
|
||||
}
|
||||
|
||||
int iscsi_reconnect(struct iscsi_context *iscsi)
|
||||
static int reconnect(struct iscsi_context *iscsi, int force)
|
||||
{
|
||||
struct iscsi_context *tmp_iscsi;
|
||||
|
||||
@@ -397,7 +397,7 @@ int iscsi_reconnect(struct iscsi_context *iscsi)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (iscsi->old_iscsi && !iscsi->pending_reconnect) {
|
||||
if (iscsi->old_iscsi && !iscsi->pending_reconnect && !force) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -477,3 +477,13 @@ int iscsi_reconnect(struct iscsi_context *iscsi)
|
||||
return iscsi_full_connect_async(iscsi, iscsi->portal,
|
||||
iscsi->lun, iscsi_reconnect_cb, NULL);
|
||||
}
|
||||
|
||||
int iscsi_reconnect(struct iscsi_context *iscsi)
|
||||
{
|
||||
return reconnect(iscsi, 0);
|
||||
}
|
||||
|
||||
int iscsi_force_reconnect(struct iscsi_context *iscsi)
|
||||
{
|
||||
return reconnect(iscsi, 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user