Ist es möglich, ein Linux (2.6) Block-Gerät (z. B. ein Loopback-Gerät) mit einer ungeraden Größe zu erstellen? Ich konnte es nicht schaffen. losetup
scheint auf 512-Byte-Grenze zu runden. Die ubd
Geräte von User-Mode Linux ubd
Geräten scheinen bis zu 512 Byte Grenze zu runden. In struct request
haben wir sector_t __sector
für den Block-Offset für Lese-/Schreiboperationen.Linux-Block-Gerät mit Odd (nicht gerade) Größe
Ich stelle diese Frage nur für Bildungszwecke. Ich kann die Grenze von 512 Byte bewältigen, aber ich bin immer noch daran interessiert, ob es möglich wäre, sie zu umgehen. In dieser Frage interessiere ich mich nicht für andere Abstraktionsschichten (wie zum Beispiel normale Dateien oder Zeichengeräte).
Mir geht es gut mit der Block Granularität - aber damit könnten wir immer noch eine seltsame Gerätegröße haben: einfach den letzten Block kleiner als die anderen machen. Der Fokus auf meine Frage ist jedoch nicht philosophisch: Ich bin an der Implementierung des Linux Kernel 2.6 interessiert. – pts
Genau das meinte ich mit "teureren Berechnungen". Umgeben Sie jeden Zugang mit "Ist das der letzte Teilblock?" Prädikate sind teuer, wenn sie auf jede IO-Operation angewendet werden. – msw