Summary: | udev не создаёт верные пути для dm-устройств | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Vitaly Kuznetsov <vitty> |
Component: | multipath-tools | Assignee: | Alexey Shabalin <shaba> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | major | ||
Priority: | P3 | CC: | evg, kas, ldv, mike, rider, shaba, shrek, vsu |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
URL: | http://cvs.fedoraproject.org/viewvc/devel/device-mapper-multipath/0012-RH-udev-sync-support.patch?view=co |
Description
Vitaly Kuznetsov
2010-02-27 16:25:20 MSK
почему-то не создаёт ссылки udev, есть мысли что не так в /etc/udev/rules.d/kpartx.rules ? kpartx замечательно создаёт /dev/dm-*, точную циферку которого можно увидеть при запуске kpartx -v -a и потом запустить скажем udevadm info --query=all --name=/dev/dm-4 (В ответ на комментарий №1)
> почему-то не создаёт ссылки udev, есть мысли что не так в
> /etc/udev/rules.d/kpartx.rules ?
Мне не нравится, что kpartx.rules и multipath.rules не имеют номеров. Но ручное переименование мне не помогло.
Решение этой проблемы: --- /lib/udev/rules.d/10-dm.rules 2010-02-16 20:29:08.000000000 +0300 +++ /home/thresh/10-dm.rules 2010-02-27 17:16:24.000000000 +0300 @@ -58,6 +58,8 @@ ENV{DM_SUSPENDED}=="Active", ENV{DM_SUSPENDED}="0" ENV{DM_SUSPENDED}=="Suspended", ENV{DM_SUSPENDED}="1" +ENV{DM_NAME}=="?*", NAME="mapper/$env{DM_NAME}", SYMLINK+="$kernel" + # This variable provides a reliable way to check that device-mapper # rules were installed. It means that all needed variables are set # by these rules directly so there's no need to acquire them again Может ли кто-нибудь из умеющих udev лучше меня прокомментировать, чем, кроме исправления этого бага, чревато это изменение? (В ответ на комментарий №3) > +ENV{DM_NAME}=="?*", NAME="mapper/$env{DM_NAME}", SYMLINK+="$kernel" Вообще разработчики udev крайне не рекомендуют менять NAME - можно только добавлять SYMLINK. (In reply to comment #4) > (В ответ на комментарий №3) > > +ENV{DM_NAME}=="?*", NAME="mapper/$env{DM_NAME}", SYMLINK+="$kernel" > Вообще разработчики udev крайне не рекомендуют менять NAME - можно только > добавлять SYMLINK. В udev/10-dm.rules.in уже есть изготовление ссылок: ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", SYMLINK+="(DM_DIR)/$env{DM_NAME}" - разве этого недостаточно? (В ответ на комментарий №5) > В udev/10-dm.rules.in уже есть изготовление ссылок: > ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", > SYMLINK+="(DM_DIR)/$env{DM_NAME}" > - разве этого недостаточно? Похоже, в случае использования kpartx ссылки не создаются из-за выставленного флага DM_UDEV_DISABLE_DM_RULES_FLAG, поскольку kpartx не использует функцию dm_task_set_cookie(), необходимую для синхронизации с udevd. Патч для kpartx есть в природе: http://osdir.com/ml/general/2010-02/msg19444.html Всё это, кстати, актуально только при использовании ядра >= 2.6.31 (только в этой версии в драйвер dm добавили поддержку DM_COOKIE, необходимую для синхронизации с udevd). Собрал kpartx с libdevmapper-ной отладкой, на выходе: Cookie value is not set while trying to call DM_DEVICE_RESUME, DM_DEVICE_REMOVE or DM_DEVICE_RENAME ioctl. Please, consider using libdevmapper's udev synchronisation interface or disable it explicitly by calling dm_udev_set_sync_support(0). Итог: kpartx не умеет синхронизацию с udev. Если в апстриме ещё не реализовали, то надо добавить ту самую dm_udev_set_sync_support(0) куда-нибудь в main. Короче говоря, наш kpartx отстал от наших новых kernel+libdevmapper. Вероятно, имеет смысл заглянуть в http://cvs.fedoraproject.org/viewvc/devel/device-mapper-multipath/ Исправлено в 0.4.9-alt2. |