From ad3509bf3bb5dfa79af634c841d584408068fb0a Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 28 Apr 2023 14:55:09 +0200 Subject: [PATCH] luci-base: rpcd: handle swap entries in getBlockDevices Add entries from `/proc/swaps` to the result array as well in order to let the ui properly deal with swap files. Fixes: #6350 Signed-off-by: Jo-Philipp Wich --- .../luci-base/root/usr/share/rpcd/ucode/luci | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/luci-base/root/usr/share/rpcd/ucode/luci b/modules/luci-base/root/usr/share/rpcd/ucode/luci index f4d204cf2284..35f592578b3a 100644 --- a/modules/luci-base/root/usr/share/rpcd/ucode/luci +++ b/modules/luci-base/root/usr/share/rpcd/ucode/luci @@ -419,13 +419,33 @@ const methods = { size: +readfile(`/sys/class/block/${dev}/size`) * 512 }; - for (m in match(line, / (\w+)="([^"]+)"/g)) + for (let m in match(line, / (\w+)="([^"]+)"/g)) e[lc(m[1])] = m[2]; } } block.close(); + const swaps = open('/proc/swaps', 'r'); + + if (swaps) { + for (let line = swaps.read('line'); length(line); line = swaps.read('line')) { + let m = match(line, /^(\/\S+)\s+\S+\s+(\d+)/); + + if (m) { + let dev = replace(m[1], /\\(\d\d\d)/g, (_, n) => chr(int(n, 8))); + + result[`swap:${m[1]}`] = { + dev, + type: 'swap', + size: +m[2] * 1024 + }; + } + } + + swaps.close(); + } + return result; } else {