для Linux нормально читать блок размером более 4 КБ (или несколько блоков по 4 КБ каждый) за раз?

Я пишу драйвер устройства для жесткого диска, подключенного к сети, и моя проблема заключается в том, что я вижу, что Linux отправляет запросы на мое блочное устройство, которые превышают типичные запросы 4 КБ. На самом деле, поведение, которое я могу заметить, таково. Сначала он отправляет запрос размером 4 КБ, затем второй запрос имеет размер 8 КБ, затем 16 КБ и так далее. Есть ли способ отключить это поведение и ограничить Linux для отправки запросов размером 4 КБ за раз? или это что-то плохое в моем коде?

  • Как я рассчитал общий размер запроса: у меня размер сектора установлен на 512 байт. И когда я вызываю blk_rq_sectors по любому запросу, я получаю количество секторов, указанное в этом запросе. Иногда я вижу, что запросы состоят из 8, 16, 32 или 64 секторов.

Спасибо.


person hebbo    schedule 24.10.2013    source источник
comment
Похоже, что Linux пытается оптимизировать сетевой трафик, отправляя данные фрагментами большего размера. Вы уверены, что хотите воспрепятствовать такому поведению?   -  person Robert Harvey    schedule 24.10.2013
comment
да, это заставляет драйвер блокироваться, когда он достигает больших размеров блоков. Кроме того, как Linux видит, что я использую сеть за блочным устройством. Этот факт следует скрыть от него.   -  person hebbo    schedule 24.10.2013
comment
@user2009594 user2009594 очень сложно сказать, почему он так себя ведет, вообще не видя кода. Кроме того, я не очень разбираюсь в сетевых хранилищах. Есть ли код, который вы написали? Это ваш водитель так себя ведет?   -  person rakib_    schedule 25.10.2013
comment
Вот он: bitbucket.org/hebbo_pub/networkblockdevice   -  person hebbo    schedule 25.10.2013