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

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

    <bug>
          <bug_id>20197</bug_id>
          
          <creation_ts>2009-05-27 16:44:15 +0400</creation_ts>
          <short_desc>/etc/rc.d/scripts/idetune не настраивает sda</short_desc>
          <delta_ts>2011-12-01 08:21:34 +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>startup</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Slava Dubrovskiy">dubrsl</reporter>
          <assigned_to name="Alexey Gladkov">legion</assigned_to>
          <cc>dd1email</cc>
    
    <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>grizlik78</cc>
    
    <cc>ildar</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>mike</cc>
    
    <cc>vsu</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91934</commentid>
    <comment_count>0</comment_count>
    <who name="Slava Dubrovskiy">dubrsl</who>
    <bug_when>2009-05-27 16:44:15 +0400</bug_when>
    <thetext>Очень часто нужно указывать hdparm -B 254 (особенно для нетбуков актуально)
Но idetune настраивает только hd.

Хорошо бы не делать такое исключение.

&gt; On 26.05.2009 23:19, Anton Farygin wrote:
&gt;&gt; Michael Shigorin пишет:
&gt;&gt;&gt; On Tue, May 26, 2009 at 12:04:21AM +0700, Anton Chaykin wrote:
&gt;&gt;&gt;&gt; Не могу найти скрипт, который при загрузке, суспенде и слипе
&gt;&gt;&gt;&gt; выставляет параметры hdparm
&gt;&gt;&gt;&gt; Ps.: Мне надо hdparm -B 254, а то моему sda через год придёт
&gt;&gt;&gt;&gt; ппц.  Хотя это чисто моё субьективное мнение.
&gt;&gt;&gt;
&gt;&gt;&gt; Найдёте -- и мне свистните, pls.  Запакуем его.
&gt;&gt;
&gt;&gt; # rpm -qf /etc/rc.d/scripts/idetune
&gt;&gt; startup-0.9.8.21-alt1
&gt; idetune не настраивает sda
&gt;
&gt; Кстати повод для FR.

Безусловно, с учётом того, что сейчас нет разделения ide/sata/scsi у s* или h* дисков.

Занесите в bugzilla, пожалуйста.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111819</commentid>
    <comment_count>1</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-01 17:09:51 +0400</bug_when>
    <thetext>Может быть есть смысл к UUID/LABEL каким-то привязываться, если нет разделения ide/sata/scsi? Или это не проблема? Что мешает сделать такое?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111821</commentid>
    <comment_count>2</comment_count>
    <who name="Sir Raorn">raorn</who>
    <bug_when>2010-09-01 17:14:45 +0400</bug_when>
    <thetext>Подозреваю, что банальная лень.  Кстати, у _дисков_ не бывает UUID/LABEL.

Плюс - надо запускать то же самое после resume.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111833</commentid>
    <comment_count>3</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-01 19:13:15 +0400</bug_when>
    <thetext>Знаю, что не бывает. Не знаю, как правильно идентифицировать (достаточно ли /dev/sd?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111835</commentid>
    <comment_count>4</comment_count>
    <who name="Sir Raorn">raorn</who>
    <bug_when>2010-09-01 19:19:52 +0400</bug_when>
    <thetext>В особо клинических случаях их бывает /dev/sd[a-z]+, когда после sdz идёт sdaa, sdab, sdac и т.д.  Но в таких случаях (multipath на внешних стораджах) смысла в hdparm уже мало.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112287</commentid>
    <comment_count>5</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-19 13:02:53 +0400</bug_when>
    <thetext>*** Bug 23864 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112290</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2010-09-19 15:18:58 +0400</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; Кстати, у _дисков_ не бывает UUID/LABEL.

Зато бывает /dev/disk/by-id/* (привязка к серийному номеру диска, в последних версиях udev ещё и к другой вариации на эту тему - WWN) и /dev/disk/by-path/* (тут получается привязка к порту контроллера, куда подключен диск, но номера шин PCI иногда могут меняться при добавлении/удалении других PCI-устройств).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112291</commentid>
    <comment_count>7</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-19 15:28:10 +0400</bug_when>
    <thetext>Про UUID/LABEL я имел ввиду что хочется чтобы настройки применялись к тому чему надо вне зависимости от того, как при загрузке разложится пасьянс буковок sdXX :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112381</commentid>
    <comment_count>8</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-20 18:04:56 +0400</bug_when>
    <thetext>Можно например так:
http://git.altlinux.org/people/evg/packages/?p=startup.git;a=commitdiff;h=74625622028c31265445293bd1f5b52d10b2103b (требуется review).

P.S.: откуда FIXED то?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112392</commentid>
    <comment_count>9</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2010-09-20 19:28:20 +0400</bug_when>
    <thetext>(В ответ на комментарий №8)
&gt; Можно например так:

Поддержка только WWN оставляет за бортом не только PATA-диски, но и многие SATA-диски не самых последних серий. Вероятно, лучше брать просто имя ссылки из /dev/disk/by-id/*, чтобы можно было использовать любой доступный вариант.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112393</commentid>
    <comment_count>10</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-20 19:56:06 +0400</bug_when>
    <thetext>Там не только WWN, но и /dev/FOO можно указать (см. код). И даже нужно для всяких *-ROM. Всё подряд из /dev/disk/by-*/* не стал брать, потому что а) Было лень фильтровать оттуда лишь целые диски (без партиций и т.п.) и б) потому что не вижу смысла в привязке к месте на шине.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112394</commentid>
    <comment_count>11</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2010-09-20 21:10:22 +0400</bug_when>
    <thetext>(В ответ на комментарий №10)
&gt; Там не только WWN, но и /dev/FOO можно указать (см. код). И даже нужно для
&gt; всяких *-ROM.

Однако имя в подкаталоге указать уже не получится (для некоторых других задач это тоже может быть проблемой - например, из-за /dev/cciss/cXdY и других устройств со &quot;странными&quot; именами).

&gt; Всё подряд из /dev/disk/by-*/* не стал брать, потому что а) Было
&gt; лень фильтровать оттуда лишь целые диски (без партиций и т.п.)

Для WWN там разделы тоже есть (wwn-0x${WWN}-part${NUM}), поэтому при наличии желания фильтровать делать это придётся и для WWN.

&gt; и б) потому что не вижу смысла в привязке к месте на шине.

Вот как раз /dev/disk/by-id/* привязывается к свойствам самого диска - чаще всего к serial.  Привязка к месту на шине - это /dev/disk/by-path/*.

Короче говоря, предлагаю как минимум заменить &quot;/dev/disk/by-id/wwn-0x$i&quot; на &quot;/dev/disk/by-id/$i&quot;. Ещё можно ввести в сам файл переменную DEVICE, позволяющую явно указать любое имя устройства (в таком варианте неплохо было бы перейти на чтение файлов по маске вида *.conf, либо как минимум явно игнорировать имена вида *~, *.rpm*).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112395</commentid>
    <comment_count>12</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-20 21:33:37 +0400</bug_when>
    <thetext>&gt; &gt; Там не только WWN, но и /dev/FOO можно указать (см. код). И даже нужно для
&gt; &gt; всяких *-ROM.
&gt; Однако имя в подкаталоге указать уже не получится (для некоторых других задач
&gt; это тоже может быть проблемой - например, из-за /dev/cciss/cXdY и других
&gt; устройств со &quot;странными&quot; именами).

Виноват, не подумал об этом.
 
&gt; &gt; Всё подряд из /dev/disk/by-*/* не стал брать, потому что а) Было
&gt; &gt; лень фильтровать оттуда лишь целые диски (без партиций и т.п.)
&gt; Для WWN там разделы тоже есть (wwn-0x${WWN}-part${NUM}), поэтому при наличии
&gt; желания фильтровать делать это придётся и для WWN.

Наверно, я неясно выразился. Под &quot;фильтровать&quot; я имел ввиду как раз исключение из рассмотрения всех wwn-0x${WWN}-part${NUM} и т.п., т.к. hdparm ведь требует имя целого диска, как я понимаю, и партиции ему ни к чему.

&gt; &gt; и б) потому что не вижу смысла в привязке к месте на шине.
&gt; Вот как раз /dev/disk/by-id/* привязывается к свойствам самого диска - чаще
&gt; всего к serial.  Привязка к месту на шине - это /dev/disk/by-path/*.

Я знаю про by-path. Про привязку с шине имею ввиду и by-path/* и by-id/{ata,scci}* (может, конечно, ошибаюсь).
 
&gt; Короче говоря, предлагаю как минимум заменить &quot;/dev/disk/by-id/wwn-0x$i&quot; на
&gt; &quot;/dev/disk/by-id/$i&quot;.

сделаю

&gt; Ещё можно ввести в сам файл переменную DEVICE, позволяющую
&gt; явно указать любое имя устройства (в таком варианте неплохо было бы
&gt; перейти на чтение файлов по маске вида *.conf, либо как минимум явно
&gt; игнорировать имена вида *~, *.rpm*).

Я так и делал в первых вариантах коммита, но у меня не было DEVICE, поэтому я счёл это бессмысленным. Сделаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112407</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2010-09-20 23:49:56 +0400</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; Про привязку с шине имею ввиду и by-path/* и
&gt; by-id/{ata,scci}* (может, конечно, ошибаюсь).

У by-id есть некоторая привязка к типу драйвера - но, например, ссылки ata-* должны создаваться при использовании и старых драйверов IDE, и новых libata (работающих через scsi), причём на современных ядрах они для этих режимов должны совпадать (хотя со старыми версиями ядер и udev в этом месте были проблемы, связанные с обрезанием модели до длины, поддерживаемой SCSI). Вот ссылки scsi-* будут действительно создаваться только при использовании libata.

Хотя случай перетыкания диска в USB-SATA box действительно обработан не будет, поскольку для USB используются другие имена (но для hdparm это всё равно неактуально).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112414</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2010-09-21 01:05:40 +0400</bug_when>
    <thetext>(In reply to comment #11)
&gt; Однако имя в подкаталоге указать уже не получится (для некоторых других задач
&gt; это тоже может быть проблемой - например, из-за /dev/cciss/cXdY и других
&gt; устройств со &quot;странными&quot; именами).
А этим hdparm и не припарка:

# hdparm -d 1 /dev/ida/c0d0
/dev/ida/c0d0:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Invalid argument</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112417</commentid>
    <comment_count>15</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-21 03:08:46 +0400</bug_when>
    <thetext>&gt; &gt; устройств со &quot;странными&quot; именами).
&gt; А этим hdparm и не припарка:

Тем не менее, лучше сделать чтобы припарку можно было накладывать в любом месте.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112754</commentid>
    <comment_count>16</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-27 20:16:11 +0400</bug_when>
    <thetext>Новый вариант:

http://git.altlinux.org/people/evg/packages/startup.git?p=startup.git;a=commitdiff;h=04c6bb085434add7b310a5289615d2d14693fd61 (требуется review).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112797</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2010-09-28 14:05:57 +0400</bug_when>
    <thetext>Пробел упустил и ещё кой-чего, см.:
http://git.altlinux.org/people/mike/packages/?p=startup.git;a=commitdiff;h=c1598db4ef28e95e6bd4c744cd67ec47808fb151

Проверил на домашней SATA-only системе -- пришлось переименовать один из /etc/sysconfig/harddisk/hd* в sdd.conf и выкинуть MULTIPLE_IO с EIDE_32BIT, осталось:

home:~&gt; cat /etc/sysconfig/harddisk/sdd.conf
LOOKAHEAD=1
EXTRA_PARAMS=-qq

и на ноуте с IDE и

pad:~&gt; cat /etc/sysconfig/harddisk/sda.conf
LOOKAHEAD=1
EXTRA_PARAMS=-B255

Вердикт: живое, но про необходимость переименования файлов хорошо бы нарисовать отдельную предупреждалку в %post и упомянуть в %changelog.  Могу дописать когда-нибудь после субботней конференции (сейчас жду человека).

Возможно, сюда же будет смысл подкинуть sdparm (тоже потом).

PS: если мержить, то предлагаю следом сделать
git mv startup/rc.d/scripts/{idetune,hdparm}
subst &apos;s,idetune,hdparm,&apos; rc.d/rc.sysinit
git commit -am &apos;renamed scripts/idetune to scripts/hdparm&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112804</commentid>
    <comment_count>18</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-09-28 14:36:20 +0400</bug_when>
    <thetext>%post/%changelog это уже к маинтайнеру. Упомянуть необходимость переименования в .conf надо.

vsu, ldv?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113126</commentid>
    <comment_count>19</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2010-10-05 12:57:18 +0400</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117324</commentid>
    <comment_count>20</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-01-19 23:46:21 +0300</bug_when>
    <thetext>http://lists.altlinux.org/pipermail/sisyphus/2010-December/351320.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117328</commentid>
    <comment_count>21</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2011-01-20 03:19:31 +0300</bug_when>
    <thetext>2ldv: Так чего же, всё таки, хочется?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123172</commentid>
    <comment_count>22</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-07-14 20:24:19 +0400</bug_when>
    <thetext>Вопрос: если каталог /etc/sysconfig/harddisk/ пуст, а файл /etc/sysconfig/harddisks не пуст, применять содержимое последнего ко всем дискам?  Раньше, в старом scripts/idetune, было именно так.  В вашей версии /etc/sysconfig/harddisks применяется только для дисков, указанных в /etc/sysconfig/harddisk/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123184</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2011-07-14 23:06:06 +0400</bug_when>
    <thetext>Пожалуй, при прочих равных лучше бы оставить старую семантику.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123199</commentid>
    <comment_count>24</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2011-07-15 02:59:54 +0400</bug_when>
    <thetext>Да.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123200</commentid>
    <comment_count>25</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-07-15 03:05:21 +0400</bug_when>
    <thetext>(In reply to comment #23)
&gt; Пожалуй, при прочих равных лучше бы оставить старую семантику.

Тогда вопрос, для каких блочных устройств применять /etc/sysconfig/harddisks?
Для всех /sys/block/*/device?  Если не для всех, то для каких?

Имеет ли смысл сейчас применять какой-то тюнинг единообразно ко всем блочным устройствам?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123213</commentid>
    <comment_count>26</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2011-07-15 17:04:13 +0400</bug_when>
    <thetext>Смотри:
- ноутбук: только sda (HDD)
- десктоп: fd0, sd[a-h], sr0 =&gt; флопик, 4HDD, card reader, писалка
- сервер: sd[a-i], sr0 =&gt; SSD, 8HDD, писалка

Из них во всех случаях можно спокойно исключить fd* и sr*; sd* для случая десктопа скорее можно тюнить однообразно; для случая сервера скорее можно полагаться на то, что уж если оказалась необходимость тюнинга и сисадмин в курсе про /etc/sysconfig/harddisk*, то в случае различных типов дисков он это учтёт.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123219</commentid>
    <comment_count>27</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-07-15 19:45:03 +0400</bug_when>
    <thetext>(In reply to comment #26)
&gt; Из них во всех случаях можно спокойно исключить fd* и sr*;

А как это лучше сделать?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123229</commentid>
    <comment_count>28</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2011-07-15 23:39:03 +0400</bug_when>
    <thetext>В любом случае hdparm имеет смысл применять только к /dev/disk/by-id/ata-* (там, правда, мешаются разделы, ну и могут быть конфликты из-за CD-приводов без серийного номера вида /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7173S).

Можно сделать что-то типа

  /sbin/udevadm trigger --dry-run --verbose --subsystem-match=block \
    --property-match=ID_ATA=1 --attr-nomatch=partition=\*

(но --attr-nomatch=partition=\* требует ядра &gt;= 2.6.28).

Либо фильтровать по именам устройств:

  /sbin/udevadm trigger --dry-run --verbose --subsystem-match=block \
    --property-match=ID_ATA=1 --sysname-match=&apos;*[a-z]&apos;

(но при этом отфильтруются и sr*). Впрочем, потом всё равно придётся переводить полученные таким образом пути sysfs в имена устройств (например, вызовами udevadm info).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123230</commentid>
    <comment_count>29</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2011-07-16 01:26:27 +0400</bug_when>
    <thetext>Тогда вообще напрашивается udev rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123231</commentid>
    <comment_count>30</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-07-16 01:55:29 +0400</bug_when>
    <thetext>(In reply to comment #29)
&gt; Тогда вообще напрашивается udev rule.

Да, это единственный разумный способ тюнить диски, подключаемые позже во время работы системы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123234</commentid>
    <comment_count>31</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2011-07-16 11:57:22 +0400</bug_when>
    <thetext>(В ответ на комментарий №29)
&gt; Тогда вообще напрашивается udev rule.

В Debian именно так и сделано:

ACTION==&quot;add&quot;, SUBSYSTEM==&quot;block&quot;, KERNEL==&quot;[sh]d[a-z]&quot;, RUN+=&quot;/etc/init.d/hdparm hotplug&quot;

Правильная версия скриптов:

  http://patch-tracker.debian.org/patch/debianonly/view/hdparm/9.32-1

(в том, что лежит в апстримном hdparm, имя устройства из hdparm.conf просто сравнивается с DEVNAME, без возможности использования /dev/disk/by-id/*).

Впрочем, формат конфигурации там всё равно не имеет ничего общего с нашим.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127330</commentid>
    <comment_count>32</comment_count>
    <who name="ildar">ildar</who>
    <bug_when>2011-12-01 08:21:34 +0400</bug_when>
    <thetext>на эту тему прошу сделать аудит этого:
/usr/lib/pm-utils/power.d/harddrive .

Прошу учесть, что пакет pm-utils стоит у большинства desktop-пользователей.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>