Bug 59483 - Перезаписывается пользовательский LABEL и не очищаются устройства/файлы
Summary: Перезаписывается пользовательский LABEL и не очищаются устройства/файлы
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: swap_cleaner (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Антон Мидюков
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-06-09 12:33 MSK by Vladislav Glinkin
Modified: 2026-06-09 15:16 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladislav Glinkin 2026-06-09 12:33:24 MSK
Версия пакета:
swap_cleaner-0.1.2-alt1

Скрипт содержит опечатки:
1) Пользовательский $LABEL перезаписывается на LABEL
2) При обработке устройств с TYPE="swap" в цикле вместо конкретной строки передаётся вывод `cat /proc/swaps |grep \/ | cut -d ' ' -f1` целиком, из-за чего при наличии нескольких SWAP файлов или разделов, эти файлы и разделы не очищаются.
```
+ MON_KEY='/dev/sda1: TYPE="swap"
/dev/loop0: TYPE="swap"'
+ '[' '"swap"
/dev/loop0: TYPE="swap"' == '"swap"' ']'
+ echo '/dev/sda1 не является разделом подкачки, проигнорировано'
/dev/sda1 не является разделом подкачки, проигнорировано
+ for i in $1
+ '[' -f /dev/loop0 ']'
+ '[' -b /dev/loop0 ']'
++ blkid -s TYPE /dev/sda1 /dev/loop0
+ MON_KEY='/dev/sda1: TYPE="swap"
/dev/loop0: TYPE="swap"'
+ '[' '"swap"
/dev/loop0: TYPE="swap"' == '"swap"' ']'
+ echo '/dev/loop0 не является разделом подкачки, проигнорировано'
```


Необходимые правки:
```
--- a/usr/sbin/swap_cleaner
+++ b/usr/sbin/swap_cleaner
@@ -58,7 +58,7 @@ sclean()
        LABEL=`blkid -s LABEL -o value $1`
        swapoff $1 2> /dev/null
        dd if=/dev/zero of=$1 bs=$BS count=1 2>/dev/null
-       mkswap -U $UUID -L LABEL $1 1>/dev/null
+       mkswap -U $UUID -L $LABEL $1 1>/dev/null
        dd if=/dev/zero of=$1 bs=$BS seek=1 2>/dev/null
     else
        BS=4096
@@ -83,7 +83,7 @@ mclean()
        if [ -f $i  ] ; then
            sclean $i "file" &
        elif [ -b $i  ] ; then
-           MON_KEY=`blkid -s TYPE $1`
+           MON_KEY=`blkid -s TYPE $i`
            if [ "${MON_KEY#*=}" == '"swap"' ] ; then
                sclean $i "device" &
            else
```
Comment 1 Repository Robot 2026-06-09 15:16:07 MSK
swap_cleaner-0.1.2-alt2 -> sisyphus:

Tue Jun 09 2026 Anton Midyukov <antohami@altlinux> 0.1.2-alt2
- sbin/swap_cleaner: fix for multiple swap partitions support (Closes: 59483).
- Fix URL.