Bug 23676

Summary: Unproper LOCKFILE name in init script
Product: Sisyphus Reporter: Nikolay A. Fetisov <naf>
Component: open-iscsiAssignee: Alexey Shabalin <shaba>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: evg, mav, mike, shaba
Version: unstable   
Hardware: all   
OS: Linux   

Description Nikolay A. Fetisov 2010-06-27 10:54:21 MSD
Для open-iscsi-2.0.871-alt3 (в Sisyphus, M51) имя lock-файла отличается от имени init-скрипта.
Т.е., в /etc/rc.d/init.d/open-iscsi указано 
LOCKFILE=/var/lock/subsys/iscsi

В то же время, в /etc/rc.d/rc из пакета startup для остановки сервиса используется следущий код (строки 56-73):
---------
# First, run the KILL scripts.                                                                                                                                                                            
for i in "/etc/rc.d/rc$runlevel.d"/K*; do                                                                                                                                                                 
.....                                                                                                                                                                                                          
        # Check if the subsystem is already up.                                                                                                                                                           
        [ -f "/var/lock/subsys/$subsys" -o -f "/var/lock/subsys/$subsys.init" ] || continue                                                                                                               
....
done 
------------------

Т.е., для open-iscsi и соответствующих ссылкок K87open-iscsi проверяется наличие lock-файла 
LOCKFILE=/var/lock/subsys/open-iscsi. И ввиду отсутствия последнего остановка сервиса при, например, выключении машины не производится. 

Как следствие, подмонтированные тома ISCSI остаются активными на момент остановки сети и вызывают зависание процесса остановки системы на этапе окончательного размонтирования локальных файловых систем.

Т.е., требуется изменить название LOCKFILE'а на /var/lock/subsys/open-iscsi
Comment 1 Slava Dubrovskiy 2010-06-29 22:57:05 MSD
Я думаю вы ошибаетесь.
     60         subsys=${i#/etc/rc.d/rc$runlevel.d/K??}                                                                                                                                 
     61                                                                                                                                                                                 
     62         splash_update "$subsys"                                                                                                                                                 
     63                                                                                                                                                                                 
     64         # Check if the subsystem is already up.                                                                                                                                 
     65         [ -f "/var/lock/subsys/$subsys" -o -f "/var/lock/subsys/$subsys.init" ] || continue                                                                                     

В данном случае проверяется $subsys.init, т.е. open-iscsi.init

Вы пробовали переименовать как вы предлагаете и проблема решается?
Comment 2 Nikolay A. Fetisov 2010-06-30 21:51:52 MSD
(In reply to comment #1)
>      60         subsys=${i#/etc/rc.d/rc$runlevel.d/K??}                         

Здесь subsys становится равным 'open-iscsi', после чего

>      65         [ -f "/var/lock/subsys/$subsys" -o -f  "/var/lock/subsys/$subsys.init" ] || continue                                   

развёртывается в 

[ -f "/var/lock/subsys/open-iscsi" -o -f "/var/lock/subsys/open-iscsi.init" ] || continue

LOCKFILE создаётся как  /var/lock/subsys/iscsi - т.е., оба условия не выполняются и идёт переход
на очередной шаг цикла, без остановки сервиса.


Эта проблема остановки сервиса именно в процессе выключения/перезагрузки машины, непосредственно вызов '/etc/init.d/open-iscsi stop', разумеется, отработает. А etc/rc.d/rc, для определения, что нужно останавливать, проверяет список K* в соответствующем rcN.d/ (который есть для всех установленных в систему сервисов, в т.ч. и выключенных), и по
их именам определяет имена соответствующего lock-файлов. И останавливает только те, для которых lock-файлы присутствуют - т.е. те, которые можно считать работающими.

Как я понимаю, имя LOCKFILE'а осталось после переименования скрипта из iscsi.init. 
С текущим именем LOCKFILE'а при выключении/перезагрузке машины вызова 
'service open-iscsi stop' не выполняется. Замена вида
------------------------------
--- a/rc.d/init.d/open-iscsi
+++ b/rc.d/init.d/open-iscsi
@@ -26,7 +26,7 @@ ISCSID=iscsid
 ISCSIADM=iscsiadm
 
 PIDFILE=/var/run/iscsid.pid
-LOCKFILE=/var/lock/subsys/iscsi
+LOCKFILE=/var/lock/subsys/open-iscsi
 RETVAL=0
 
 attach_nodes()
------------------------------
проблему решает.
Comment 3 Nikolay A. Fetisov 2011-08-24 17:47:21 MSK
open-iscsi-2.0.871-alt4 (текущий Sisyphus, t6/p6) - без изменений.

С текущим значением LOCKFILE=/var/lock/subsys/iscsi в init-скрипте при перезапуске/выключении системы остановка сервиса не происходит, в итоге при наличии смонтированных томов ISCSI они остаются до выключения сети, и система виснет на этапе размонтирования локальных файловых систем.
Comment 4 Evgenii Terechkov 2012-01-03 18:59:48 MSK
Установил open-iscsi-2.0.871-alt4, поднял соединение с SAN, настроил на автозагрузку.

После этого машина стала сильно (минуты две) задумываться при перезагрузке (выключать не пробовал) между "Stopping kernel logger service: [OK]" и "Stopping syslog-ng service: [OK]". Заметил, что в списке останавливаемых сервисов не присутствует ничего связаного с iscsi. Попробовал до перезагрузки сказать service open-iscsi stop - помогло.

Попробовал применить указанный патч. Помогло. Теперь система не тупит при перезапуске И в списке останавливаемых сервисов есть open-iscsi и мой IQN.
Comment 5 Evgenii Terechkov 2012-01-04 10:56:35 MSK
Fixed in 2.0.871-alt5
Comment 6 Alex Moskalenko 2012-07-12 23:54:32 MSK
А можно alt5 в t6 положить? Для исправления проблемы с остановкой сервиса при выключении/перезагрузке...