summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2019-08-16 22:23:55 +0200
committerMichael Brown2019-08-16 23:19:50 +0200
commit02b26de9634dcf793f4edef0b33ea71e34fceee6 (patch)
treeb032c8682fc77878be5fd488d1c9d8c36096316d
parent[process] Add PROC_INIT() for initialising static processes (diff)
downloadipxe-02b26de9634dcf793f4edef0b33ea71e34fceee6.tar.gz
ipxe-02b26de9634dcf793f4edef0b33ea71e34fceee6.tar.xz
ipxe-02b26de9634dcf793f4edef0b33ea71e34fceee6.zip
[peerdist] Start block download timers from within opener methods
Move the responsibility for starting the block download timers from peerblk_expired() to peerblk_raw_open() and peerblk_retrieval_open(), in preparation for adding the ability to defer calls to peerblk_raw_open() via a block download queue. Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/net/peerblk.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/net/peerblk.c b/src/net/peerblk.c
index 78888d2d..27184e2d 100644
--- a/src/net/peerblk.c
+++ b/src/net/peerblk.c
@@ -358,6 +358,10 @@ static int peerblk_raw_open ( struct peerdist_block *peerblk ) {
if ( inject_fault ( PEERBLK_ANNUL_RATE ) )
intf_restart ( &peerblk->raw, 0 );
+ /* Start download attempt timer */
+ peerblk->rc = -ETIMEDOUT;
+ start_timer_fixed ( &peerblk->timer, PEERBLK_RAW_OPEN_TIMEOUT );
+
return 0;
}
@@ -522,6 +526,10 @@ static int peerblk_retrieval_open ( struct peerdist_block *peerblk,
if ( inject_fault ( PEERBLK_ANNUL_RATE ) )
intf_restart ( &peerblk->retrieval, 0 );
+ /* Start download attempt timer */
+ peerblk->rc = -ETIMEDOUT;
+ start_timer_fixed ( &peerblk->timer, PEERBLK_RETRIEVAL_OPEN_TIMEOUT );
+
err_open:
uri_put ( uri );
err_uri:
@@ -1201,10 +1209,7 @@ static void peerblk_expired ( struct retry_timer *timer, int over __unused ) {
continue;
}
- /* Start download attempt timer */
- peerblk->rc = -ETIMEDOUT;
- start_timer_fixed ( &peerblk->timer,
- PEERBLK_RETRIEVAL_OPEN_TIMEOUT );
+ /* Peer download started */
return;
}
@@ -1212,9 +1217,6 @@ static void peerblk_expired ( struct retry_timer *timer, int over __unused ) {
if ( ( rc = peerblk_raw_open ( peerblk ) ) != 0 )
goto err;
- /* Start download attempt timer */
- peerblk->rc = -ETIMEDOUT;
- start_timer_fixed ( &peerblk->timer, PEERBLK_RAW_OPEN_TIMEOUT );
return;
err: