<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>23676</bug_id>
          
          <creation_ts>2010-06-27 10:54:21 +0400</creation_ts>
          <short_desc>Unproper LOCKFILE name in init script</short_desc>
          <delta_ts>2012-12-07 04:27:44 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>open-iscsi</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolay A. Fetisov">naf</reporter>
          <assigned_to name="Alexey Shabalin">shaba</assigned_to>
          <cc>evg</cc>
    
    <cc>mav</cc>
    
    <cc>mike</cc>
    
    <cc>shaba</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110140</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolay A. Fetisov">naf</who>
    <bug_when>2010-06-27 10:54:21 +0400</bug_when>
    <thetext>Для 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 &quot;/etc/rc.d/rc$runlevel.d&quot;/K*; do                                                                                                                                                                 
.....                                                                                                                                                                                                          
        # Check if the subsystem is already up.                                                                                                                                                           
        [ -f &quot;/var/lock/subsys/$subsys&quot; -o -f &quot;/var/lock/subsys/$subsys.init&quot; ] || continue                                                                                                               
....
done 
------------------

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

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

Т.е., требуется изменить название LOCKFILE&apos;а на /var/lock/subsys/open-iscsi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110204</commentid>
    <comment_count>1</comment_count>
    <who name="Slava Dubrovskiy">dubrsl</who>
    <bug_when>2010-06-29 22:57:05 +0400</bug_when>
    <thetext>Я думаю вы ошибаетесь.
     60         subsys=${i#/etc/rc.d/rc$runlevel.d/K??}                                                                                                                                 
     61                                                                                                                                                                                 
     62         splash_update &quot;$subsys&quot;                                                                                                                                                 
     63                                                                                                                                                                                 
     64         # Check if the subsystem is already up.                                                                                                                                 
     65         [ -f &quot;/var/lock/subsys/$subsys&quot; -o -f &quot;/var/lock/subsys/$subsys.init&quot; ] || continue                                                                                     

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

Вы пробовали переименовать как вы предлагаете и проблема решается?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110223</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolay A. Fetisov">naf</who>
    <bug_when>2010-06-30 21:51:52 +0400</bug_when>
    <thetext>(In reply to comment #1)
&gt;      60         subsys=${i#/etc/rc.d/rc$runlevel.d/K??}                         

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

&gt;      65         [ -f &quot;/var/lock/subsys/$subsys&quot; -o -f  &quot;/var/lock/subsys/$subsys.init&quot; ] || continue                                   

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

[ -f &quot;/var/lock/subsys/open-iscsi&quot; -o -f &quot;/var/lock/subsys/open-iscsi.init&quot; ] || continue

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


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

Как я понимаю, имя LOCKFILE&apos;а осталось после переименования скрипта из iscsi.init. 
С текущим именем LOCKFILE&apos;а при выключении/перезагрузке машины вызова 
&apos;service open-iscsi stop&apos; не выполняется. Замена вида
------------------------------
--- 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()
------------------------------
проблему решает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124433</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolay A. Fetisov">naf</who>
    <bug_when>2011-08-24 17:47:21 +0400</bug_when>
    <thetext>open-iscsi-2.0.871-alt4 (текущий Sisyphus, t6/p6) - без изменений.

С текущим значением LOCKFILE=/var/lock/subsys/iscsi в init-скрипте при перезапуске/выключении системы остановка сервиса не происходит, в итоге при наличии смонтированных томов ISCSI они остаются до выключения сети, и система виснет на этапе размонтирования локальных файловых систем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128070</commentid>
    <comment_count>4</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2012-01-03 18:59:48 +0400</bug_when>
    <thetext>Установил open-iscsi-2.0.871-alt4, поднял соединение с SAN, настроил на автозагрузку.

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

Попробовал применить указанный патч. Помогло. Теперь система не тупит при перезапуске И в списке останавливаемых сервисов есть open-iscsi и мой IQN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128073</commentid>
    <comment_count>5</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2012-01-04 10:56:35 +0400</bug_when>
    <thetext>Fixed in 2.0.871-alt5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132298</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Moskalenko">mav</who>
    <bug_when>2012-07-12 23:54:32 +0400</bug_when>
    <thetext>А можно alt5 в t6 положить? Для исправления проблемы с остановкой сервиса при выключении/перезагрузке...</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>