summaryrefslogtreecommitdiffstats
path: root/debian/patches/001_remove_lxc_special_handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/001_remove_lxc_special_handling.patch')
-rw-r--r--debian/patches/001_remove_lxc_special_handling.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/debian/patches/001_remove_lxc_special_handling.patch b/debian/patches/001_remove_lxc_special_handling.patch
new file mode 100644
index 0000000..40b6077
--- /dev/null
+++ b/debian/patches/001_remove_lxc_special_handling.patch
@@ -0,0 +1,70 @@
+commit 11318b5ef6de6b2f80186a888cd5477e0ff167bb
+Author: Daniel Lange <DLange@git.local>
+Date: Sat Feb 25 14:12:45 2023 +0100
+
+ Remove LXC special handling for the CPU count
+
+ LXC shows the real host CPU ids but can be limited in configuration
+ as to which cores are used. Still the sysfs files are visible and the
+ CPUs (stay) marked online. We will need to parse
+ /sys/devices/system/cpu/online to follow LXC's logic.
+ Revert for now until we can come up with a better handling of the LXC hacks.
+
+ Cf. issue #1195
+ Essentially reverting 33973f7e and 0d53245c (#993, #995)
+
+Index: debian_htop/linux/LinuxProcessList.c
+===================================================================
+--- debian_htop.orig/linux/LinuxProcessList.c
++++ debian_htop/linux/LinuxProcessList.c
+@@ -167,28 +167,6 @@ static void LinuxProcessList_initNetlink
+
+ #endif
+
+-static unsigned int scanAvailableCPUsFromCPUinfo(LinuxProcessList* this) {
+- FILE* file = fopen(PROCCPUINFOFILE, "r");
+- if (file == NULL)
+- return this->super.existingCPUs;
+-
+- unsigned int availableCPUs = 0;
+-
+- while (!feof(file)) {
+- char buffer[PROC_LINE_LENGTH];
+-
+- if (fgets(buffer, PROC_LINE_LENGTH, file) == NULL)
+- break;
+-
+- if (String_startsWith(buffer, "processor"))
+- availableCPUs++;
+- }
+-
+- fclose(file);
+-
+- return availableCPUs ? availableCPUs : 1;
+-}
+-
+ static void LinuxProcessList_updateCPUcount(ProcessList* super) {
+ /* Similar to get_nprocs_conf(3) / _SC_NPROCESSORS_CONF
+ * https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/getsysstats.c;hb=HEAD
+@@ -263,12 +241,6 @@ static void LinuxProcessList_updateCPUco
+ if (existing < 1)
+ return;
+
+- if (Running_containerized) {
+- /* LXC munges /proc/cpuinfo but not the /sys/devices/system/cpu/ files,
+- * so limit the visible CPUs to what the guest has been configured to see: */
+- currExisting = active = scanAvailableCPUsFromCPUinfo(this);
+- }
+-
+ #ifdef HAVE_SENSORS_SENSORS_H
+ /* When started with offline CPUs, libsensors does not monitor those,
+ * even when they become online. */
+@@ -277,7 +249,7 @@ static void LinuxProcessList_updateCPUco
+ #endif
+
+ super->activeCPUs = active;
+- assert(Running_containerized || (existing == currExisting));
++ assert(existing == currExisting);
+ super->existingCPUs = currExisting;
+ }
+