Commit 9ba7806f authored by Harald Sitter's avatar Harald Sitter 💣

bump smartctl timeout in helper

bad firmwares may cause ioctl calls to time out which takes notably
longer than the standard 30 second timeout of qprocess. instead opt for
a 65 second timeout which should be sufficient to allow for internal
smartctl timeouts.

the only downside to a longer timeout is that potentially malfunctioning
firmwares will slow down the refresh checks of other devices from
finishing as well (since queries are sequential because kauth itself
isn't re-entrant). on the plus side we'll then cover devices so long as
they have data

BUG: 428844
FIXED-IN: 5.20.4
parent 15734829
......@@ -70,7 +70,13 @@ ActionReply SMARTHelper::smartctl(const QVariantMap &args)
p.start(QStringLiteral("smartctl"),
{ QStringLiteral("--all"), QStringLiteral("--json=c"), devicePath },
QProcess::ReadOnly);
p.waitForFinished();
// Wait for 120 seconds + 5 seconds leeway.
// This allows us to ideally let smartctl time out internally and still
// construct a json blob if possible. The kernel ioctl timeout for nvme
// apparently is 60 seconds and internal smartctl timeouts also largely
// appear to be in that range but there may be more than one :|
// https://bugs.kde.org/show_bug.cgi?id=428844
p.waitForFinished(125000);
ActionReply reply;
reply.addData(QStringLiteral("exitCode"), p.exitCode());
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment