Bug 35491
| Summary: | инит-скрипт tgt выдаёт ошибку при остановке тагета с подключенным инициатором | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Стас <stas.grumbler> |
| Component: | scsitarget-utils | Assignee: | Andrew Vasilyev <andy> |
| Status: | RESOLVED FIXED | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P3 | CC: | andy, lav, mike, piastry, piastryyy, rider |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
Кажется, 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 года его; репортёр пакет так и не забрал. |

Description
Стас 2018-10-08 23:33:04 MSKСитуация: дисковый том, раздаваемый через 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=$?