2010-11-21 2 views
1

Est-il possible de créer un périphérique de type bloc Linux (2.6) (tel qu'un périphérique de bouclage) avec une taille impaire? Je ne pouvais pas y arriver. losetup semble arrondir à une limite de 512 octets. Les périphériques ubd des périphériques Linux ubd en mode utilisateur semblent arrondir à la limite de 512 octets. Dans struct request, nous avons sector_t __sector pour le décalage de bloc pour les opérations de lecture/écriture.Périphérique de bloc Linux avec taille impaire (pas pair)

Je pose cette question juste à des fins éducatives. Je peux faire face à la limite de 512 octets, mais je suis toujours intéressé s'il serait possible de le contourner. Dans cette question, je ne suis pas intéressé par d'autres couches d'abstraction (comme l'utilisation de fichiers réguliers ou de périphériques de caractères).

Répondre

1

Non. La couche de blocs Linux 2.6 ne comprend rien de plus petit que 512 octets. Rien de plus petit (surtout pas une puissance de 2) nécessiterait une réécriture majeure d'un tas de code.

1

C'est ce qui rend un périphérique de type bloc plutôt qu'un périphérique de type caractère: la granularité du bloc. La dichotomie existe parce qu'il est beaucoup plus efficace de modéliser du matériel réel qui fonctionne un bloc à la fois comme une abstraction qui traite également en blocs. Agir autrement transformerait chaque opération en un calcul beaucoup plus coûteux.

La façon de le contourner est, comme vous le mentionnez, d'utiliser un dispositif orienté caractère ou une abstraction. C'est un élément central du modèle de périphérique Unix: tout est une série d'octets, à l'exception des éléments qui ne peuvent être virtualisés que d'un seul.

+0

Je vais bien avec la granularité du bloc - mais avec cela nous pourrions toujours avoir une taille de périphérique impair: il suffit de faire le dernier bloc plus petit que les autres. L'accent mis sur ma question n'est cependant pas philosophique: je m'intéresse à l'implémentation du noyau Linux 2.6. – pts

+0

C'est exactement ce que je voulais dire par "calcul plus coûteux". Autour de chaque accès avec "est-ce le dernier bloc partiel?" les prédicats sont coûteux lorsqu'ils sont appliqués à toutes les opérations d'E/S. – msw

Questions connexes