[SCSI] scsi_dh_alua: backoff alua rtpg retry linearly vs. geometrically
Currently the backoff algorithm for when to retry alua rtpg requests progresses geometrically as so: 2, 4, 8, 16, 32, 64... seconds. This progression can lead to un-needed delay in retrying alua rtpg requests when the rtpgs are delayed. A less aggressive backoff algorithm that is additive would not lead to such large jumps when delays start getting long, but would backoff linearly: 2, 4, 6, 8, 10... seconds. Signed-off-by: Martin George <marting@netapp.com> Signed-off-by: Rob Evers <revers@redhat.com> Reviewed-by: Babu Moger <babu.moger@netapp.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
8e67ce6072
commit
bc97f4bb44
@ -527,7 +527,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h)
|
||||
unsigned char *ucp;
|
||||
unsigned err;
|
||||
bool rtpg_ext_hdr_req = 1;
|
||||
unsigned long expiry, interval = 1000;
|
||||
unsigned long expiry, interval = 0;
|
||||
unsigned int tpg_desc_tbl_off;
|
||||
unsigned char orig_transition_tmo;
|
||||
|
||||
@ -632,7 +632,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h)
|
||||
case TPGS_STATE_TRANSITIONING:
|
||||
if (time_before(jiffies, expiry)) {
|
||||
/* State transition, retry */
|
||||
interval *= 2;
|
||||
interval += 2000;
|
||||
msleep(interval);
|
||||
goto retry;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user