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

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

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


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


Ответы (2)


arrow_upward
0
arrow_downward

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

person caf    schedule 11.04.2010

arrow_upward
0
arrow_downward

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

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

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

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

person Tim Post♦    schedule 12.04.2010