На современном 64 -битном x86 Linux?
Да. Он вызывает kmap()
или kmap_atomic()
, но на x86 -64 они всегда будут использовать сопоставление идентификаторов. x86 -32 имеет специальное определение, но я думаю, что x86 -64 использует общее определение в include/linux/highmem.h .
И да, для сопоставления личных данных используются огромные страницы размером 1 ГБ.
Статья LWN, в которой упоминается kmap _atomic .
Я нашел kmap _atomic (), посмотрев код PIO . [*]
Наконец, при чтении ()/записи ()копировать данные из/в страничный кеш:
общий _файл _буферизованный _чтение-> копирование _страница _в _iter-> kmap _атомный ()снова.
[ *] Я посмотрел на PIO, потому что понял, что при выполнении DMA в/из кэша страниц ядро может избежать использования любого отображения. Ядро может просто разрешить физический адрес и передать его оборудованию :-). (В соответствии с IOMMU ). Хотя ядру потребуется сопоставление, если оно хочет сначала вычислить контрольную сумму или зашифровать данные.
«Иноды в XFS распределяются динамически, что означает, что, в отличие от многих других файловых систем Linux, их расположение и количество не определяются во время mkfs».
Ваши 53 000 файлов съели все свободное пространство, не оставив места для новых инодов.