Я заинтересован в разработке модуля ядра, который связывает два блочных устройства в новое блочное устройство таким образом, что первое блочное устройство содержит данные во время монтирования, а другое считается пустым. Каждая запись выполняется во второй раздел, поэтому при следующем монтировании базовая файловая система остается неизменной. Я знаю такие решения, как UnionFS, но они основаны на файловой системе, хотя я хочу разработать их на уровне ниже, на основе блоков.
Может кто-нибудь сказать мне, как я могу открыть блок чтения / записи объявлений из модуля ядра? Возможно без использования пользовательской программы для чтения / записи объединенных блочных устройств. Я нашел похожую тему здесь , но ответ был довольно неудовлетворительным, поскольку функции filp_ * предназначены скорее для чтения небольших файлов конфигурации, а не для (больших) операций ввода-вывода блочных устройств.
Поскольку интерфейс для создания блочных устройств стандартизирован, я думал о прямом (или почти прямом) доступе к функциям, реализующим исходные устройства, так как меня в любом случае попросят экспортировать аналогичные функции. Если бы я мог это сделать, я бы просто создал некоторые прокси-функции, вызывающие соответствующие функции на исходных устройствах. Могу ли я как-то получить указатель на структуру gendisk, которая принадлежит другому драйверу?
Это служит только моим собственным целям (удовлетворение краткости является главной из них), поэтому я не беспокоюсь о том, чтобы серьезно испортить мое ядро.
Или кто-то знает, существует ли такой модуль?