meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-fix-incorrect-timeout-while-system-time-changed.patch
Wang Mingyu a6439a2179
python3-blivet: upgrade 3.8.2 -> 3.9.1
0002-run_program-support-timeout.patch
0003-support-infinit-timeout.patch
0005-fix-incorrect-timeout-while-system-time-changed.patch
0006-tweak-btrfs-packages.patch
0007-invoking-mount-with-infinite-timeout.patch
0008-use-oe-variable-to-replace-hardcoded-dir.patch
0010-invoking-mkfs-with-infinite-timeout.patch
0011-invoking-dd-with-infinite-timeout.patch
refreshed for 3.9.1

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2024-03-20 09:28:07 -07:00

46 lines
1.6 KiB
Diff

From c645c83628b2290855cbd225e13c038ab75a7f74 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 26 Aug 2016 02:02:49 -0400
Subject: [PATCH 05/11] fix incorrect timeout while system time changed
While system time changed by NTP, invoking timeout_command
breaks with incorrect timeout.
--------
|05:40:55,872 INFO program: Running... mount -t ext2 -o
defaults,ro /dev/sda2 /mnt/sysimage
|01:40:55,086 DEBUG program: 10 seconds timeout
--------
Use numbert count to replace current time count could workaround
the issue.
Upstream-Status: Pending
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
blivet/util.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/blivet/util.py b/blivet/util.py
index 58117ae..5bc5804 100644
--- a/blivet/util.py
+++ b/blivet/util.py
@@ -176,14 +176,14 @@ def timeout_command(argv, timeout, *args, **kwargs):
"""call shell-command and either return its output or kill it
if it doesn't normally exit within timeout seconds and return None"""
import subprocess, datetime, os, time, signal
- start = datetime.datetime.now()
+ count = 0
try:
proc = subprocess.Popen(argv, *args, **kwargs)
while proc.poll() is None:
time.sleep(0.1)
- now = datetime.datetime.now()
- if timeout != -1 and (now - start).seconds> timeout:
+ count += 1
+ if timeout != -1 and count > timeout*10:
os.kill(proc.pid, signal.SIGKILL)
os.waitpid(-1, os.WNOHANG)
program_log.debug("%d seconds timeout" % timeout)