mdev racing при создании и удалении узла устройства - PullRequest
2 голосов
/ 29 ноября 2011

Недавно я использовал mdev для замены udev.По сравнению с udevd, mdev действительно экономит много памяти.Конфигурация выглядит следующим образом:

  • в /etc/mdev.conf, если устройство соответствует sd[a-z][0-9], сценарий usbmount_wrapper будет вызываться как для «после создания, так и перед удалением устройства»

    sd [az] [0-9] 0: 0 660 * / usbmount_wrapper

  • в usbmount_wrapper, мы вызвали утилиту usbmount в debian.

Эта конфигурация отлично работает для событий «горячего подключения» (создаются узлы в /dev, и разделы правильно подключаются на подключенных устройствах, разделы отключаются, а узлы устройств удаляются на отключенном устройстве).

Проблема произошла, когда мы попытались отформатировать диск с помощью инструмента fdisk.Сбрасывая событие hotplug, последовательность событий: удаление всего старого раздела -> добавление всего нового созданного раздела.Если мы сделаем ls /dev/sd* сразу после fdisk, мы сможем увидеть новые узлы устройств для этих новых разделов, через несколько секунд эти разделы будут удалены.Можно сделать вывод, что в mdev есть состояние гонки, сначала создаются узлы устройства, а затем удаляются, что противоречит последовательности событий горячего подключения.Я также пытался создать /dev/mdev.seq, но это не решает проблему.Версия mdev от busybox 1.17

Если кто-то экспериментировал с mdev и столкнулся с той же проблемой, пожалуйста, дайте несколько советов.Спасибо за помощь и спасибо заранее.

...