Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit 44170c8

Browse files
committed
Make storage timeout configurable
1 parent 221d3ee commit 44170c8

2 files changed

Lines changed: 34 additions & 4 deletions

File tree

  • packages
    • jumpstarter-driver-sdwire/jumpstarter_driver_sdwire

packages/jumpstarter-driver-dutlink/jumpstarter_driver_dutlink/driver.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
class DutlinkConfig:
2323
serial: str | None = field(default=None)
2424
timeout_s: int = field(default=20) # 20 seconds, power control sequences can block USB for a long time
25+
storage_timeout: int = field(default=10)
26+
storage_leeway: int = field(default=6)
27+
storage_fsync_timeout: int = field(default=900)
2528

2629
dev: usb.core.Device = field(init=False)
2730
itf: usb.core.Interface = field(init=False)
@@ -190,13 +193,25 @@ def off(self):
190193
async def write(self, src: str):
191194
self.host()
192195
async with self.resource(src) as res:
193-
await write_to_storage_device(self.storage_device, res, logger=self.logger)
196+
await write_to_storage_device(
197+
self.storage_device,
198+
res,
199+
timeout=self.storage_timeout,
200+
leeway=self.storage_leeway,
201+
fsync_timeout=self.storage_fsync_timeout,
202+
logger=self.logger,
203+
)
194204

195205
@export
196206
async def read(self, dst: str):
197207
self.host()
198208
async with self.resource(dst) as res:
199-
await read_from_storage_device(self.storage_device, res, logger=self.logger)
209+
await read_from_storage_device(
210+
self.storage_device,
211+
res,
212+
timeout=self.storage_timeout,
213+
logger=self.logger,
214+
)
200215

201216

202217
@dataclass(kw_only=True)

packages/jumpstarter-driver-sdwire/jumpstarter_driver_sdwire/driver.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ class SDWire(StorageMuxFlasherInterface, Driver):
1818
itf: usb.core.Interface = field(init=False)
1919

2020
storage_device: str | None = field(default=None)
21+
storage_timeout: int = field(default=10)
22+
storage_leeway: int = field(default=6)
23+
storage_fsync_timeout: int = field(default=900)
2124

2225
def effective_storage_device(self):
2326
if self.storage_device is None:
@@ -103,10 +106,22 @@ def off(self):
103106
async def write(self, src: str):
104107
self.host()
105108
async with self.resource(src) as res:
106-
await write_to_storage_device(self.effective_storage_device(), res, logger=self.logger)
109+
await write_to_storage_device(
110+
self.effective_storage_device(),
111+
res,
112+
timeout=self.storage_timeout,
113+
leeway=self.storage_leeway,
114+
fsync_timeout=self.storage_fsync_timeout,
115+
logger=self.logger,
116+
)
107117

108118
@export
109119
async def read(self, dst: str):
110120
self.host()
111121
async with self.resource(dst) as res:
112-
await read_from_storage_device(self.effective_storage_device(), res, logger=self.logger)
122+
await read_from_storage_device(
123+
self.effective_storage_device(),
124+
res,
125+
timeout=self.storage_timeout,
126+
logger=self.logger,
127+
)

0 commit comments

Comments
 (0)