Ядро Linux - программно получать номера блоков по мере их записи.

Я хочу вести список номеров блоков, поскольку они физически записываются с использованием исходного кода ядра Linux. Я планирую изменить исходный код ядра, чтобы сделать это. Мне просто нужно найти структуру и функции в исходном коде ядра, которые обрабатывают запись в физические разделы, и получить номера блоков по мере записи в физический раздел.

Любой способ сделать это? Любая помощь приветствуется. Если я смогу найти, где ядро ​​на самом деле записывает в разделы и возвращает номера блоков, это сработает.


person SpdStr    schedule 10.04.2010    source источник


Ответы (2)


Я считаю, что вы могли бы сделать это полностью из пользовательского пространства, не изменяя ядро, используя blktrace интерфейс.

person caf    schedule 11.04.2010

Это не просто одно место для проверки. Например, если блочное устройство является целью iSCSI или AoE, вы будете искать соответствующие драйверы, а затем то же самое на другом конце.

То же самое относится и к обычному SCSI, различным флэш-устройствам и т. д., за исключением сетевого взаимодействия.

VFS просто объединяет все это в удобный, унифицированный и согласованный интерфейс для работы таких вызовов, как read() и write(), обеспечивая при этом буферизацию. Фактическая магия, включая упорядочение и барьеры записи, обрабатывается самими драйверами блочной разработки.

В случае использования картографа устройств путь немного меняется. Он идет от vfs -> dm_(target) -> blockdev_driver.

person Tim Post♦    schedule 12.04.2010