Ситуация: дисковый том, раздаваемый через iscsi, отсутствует при старте демона. после восстановления тома пытаюсь переинициализировать iscsi командой service tgt restart - получаю ошибку "tgtadm: invalid request": # service tgt restart Stopping iSCSI target service: tgtadm: invalid request [FAILED] Service iSCSI target is already running. [PASSED] Предлагаю сделать возможность указать в /etc/sysconfig/tgt переменную FORCE_STOP со значением "-f". патч: --- /etc/init.d/tgt~ 2016-01-11 13:05:39.000000000 +0500 +++ /etc/init.d/tgt 2018-10-09 01:19:37.281448517 +0500 @@ -68,7 +68,7 @@ stop() { STOP_OPTIONS1="--op update --mode sys --name State -v offline" - STOP_OPTIONS2="--update ALL -c /dev/null" + STOP_OPTIONS2="--update ALL -c /dev/null $FORCE_STOP" STOP_OPTIONS3="--op delete --mode system" daemon_status RETVAL=$?
Кажется, piastry@ давно уж ничего не собирает. (кстати, повесил по дороге bug 35495)
Тогда могу пакет забрать себе.
Воспроизведено на scsitarget-utils 1.0.97-alt1 (задание https://packages.altlinux.org/tasks/400616/) в контейнере Sisyphus: tgtd с одной целью на /tmp/disk.img, инициатор — iscsi-perf из libiscsi-utils (I_T nexus виден в tgtadm --op show), затем: $ /etc/rc.d/init.d/tgt stop Stopping iSCSI target service: tgtadm: invalid request [FAILED] rc=22, tgtd продолжает работать Механика: tgt.init:71 STOP_OPTIONS2="--update ALL -c /dev/null" без -f — tgt-admin молча пропускает занятую цель (tgt-admin, строки 1126/1153: "is in use… you have to add --force") и возвращает 0, после чего tgtadm --op delete --mode system падает с "invalid request" (22). tgt.init не менялся с 11.01.2016 (коммит 0c417fc); в tgt.service:27 та же команда без -f. Апстримный scripts/tgtd.service делает ExecStop=tgt-admin --offline ALL и затем tgt-admin --update ALL -c /dev/null -f. С -f в том же контейнере: tgt-admin --update ALL -c /dev/null -f → rc=0, tgtadm --op delete --mode system → rc=0, tgtd завершается. Без инициатора stop проходит и сейчас. Правка — добавить -f в tgt.init:71 и tgt.service:27 (по образцу апстрима можно и --offline ALL перед этим); вариант с $FORCE_STOP из sysconfig, предложенный в отчёте, тоже годится. Перевешиваю на andy@ — все сборки с 2020 года его; репортёр пакет так и не забрал.
scsitarget-utils-1.0.97-alt2 -> sisyphus: Tue Sep 15 2026 Andrew A. Vasilyev <andy@altlinux> 1.0.97-alt2 - update tgt.{service,init} to force stop target (Closes: #35491)