Ядро и монтирование флешки
Роюсь в ядре на предмет поиска места задержки монтирования. В аппаратуре используется BSP Fedora 14, прослушивание udevadm monitor дает следующую картину: KERNEL[1301801945.093717] add /devices/virtual/gpio/gpio246 (gpio)
KERNEL[1301801945.094204] remove /devices/virtual/gpio/gpio246 (gpio)
UDEV [1301801945.094778] add /devices/virtual/gpio/gpio246 (gpio)
UDEV [1301801945.095227] remove /devices/virtual/gpio/gpio246 (gpio)
KERNEL[1301801945.098416] add /devices/virtual/gpio/gpio246 (gpio)
UDEV [1301801945.098482] add /devices/virtual/gpio/gpio246 (gpio)
KERNEL[1301801945.098584] remove /devices/virtual/gpio/gpio246 (gpio)
UDEV [1301801945.099026] remove /devices/virtual/gpio/gpio246 (gpio)
KERNEL[1301801945.660833] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1 (usb)
KERNEL[1301801945.665232] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0 (usb)
KERNEL[1301801945.668453] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5 (scsi)
KERNEL[1301801945.668701] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/scsi_host/host5 (scsi_host)
UDEV [1301801945.681785] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1 (usb)
UDEV [1301801945.689402] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0 (usb)
UDEV [1301801945.693677] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5 (scsi)
------------------> UDEV [1301801945.697071] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/scsi_host/host5 (scsi_host)
------------------> KERNEL[1301801946.675424] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0 (scsi) KERNEL[1301801946.675902] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0 (scsi)
KERNEL[1301801946.677290] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/scsi_disk/5:0:0:0 (scsi_disk)
KERNEL[1301801946.678272] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/scsi_device/5:0:0:0 (scsi_device)
KERNEL[1301801946.679361] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/scsi_generic/sg1 (scsi_generic)
UDEV [1301801946.679613] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0 (scsi)
KERNEL[1301801946.681711] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/bsg/5:0:0:0 (bsg)
UDEV [1301801946.685108] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0 (scsi)
KERNEL[1301801946.689486] add /devices/virtual/bdi/8:32 (bdi) UDEV [1301801946.689606] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/scsi_device/5:0:0:0 (scsi_device)
UDEV [1301801946.690528] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/scsi_disk/5:0:0:0 (scsi_disk)
KERNEL[1301801946.691177] change /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0 (scsi)
UDEV [1301801946.692527] add /devices/virtual/bdi/8:32 (bdi)
UDEV [1301801946.694370] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/bsg/5:0:0:0 (bsg)
UDEV [1301801946.697668] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/scsi_generic/sg1 (scsi_generic)
UDEV [1301801946.699426] change /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0 (scsi)
KERNEL[1301801946.712965] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/block/sdc (block)
------------------> KERNEL[1301801946.713060] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/block/sdc/sdc1 (block)
------------------> UDEV [1301801948.846249] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/block/sdc (block)
------------------> UDEV [1301801950.892867] add /devices/pci0000:00/0000:00:1a.0/0000:04:00.0/0000:05:08.3/usb2/2-1/2-1:1.0/host5/target5:0:0/5:0:0:0/block/sdc/sdc1 (block)
Задержки в самом ядре еще более менее приемлемы. Больше всего не устраивает момент в самом конце, при передаче сообщений к подсистеме UDEV. Кто-нибудь может подсказать, в каких файлах ядра осуществляется передача этих сообщений?
И еще, возможно ли уменьшение времени подключения usbflash?
На всякий случай уточню: udev сидит на netlink и время обработки им этих сообщений пренебрежимо мало (проверил отладочным выводом в системный журнал). Задержка происходит за пределами демона, насколько мне это понятно.