[Kos-dev] Libblockio
Thomas Petazzoni
kos-dev@enix.org
Fri, 25 Apr 2003 10:53:14 +0200
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig9E8EF413F20F3C1886A8B03D
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Hello,
En ce qui concerne les problèmes spécifiques liés aux block devices,
voici comment j'ai décidé de régler le problème, tout du moins
temporairement, on verra ce que ça donne à l'implémentation et dans le
futur. Il faut qu'on arrête de concevoir, et qu'on code ;) Si c'est pas
beau, on refera, mais en tirant enseignement des erreurs, et en
augmentant petit à petit la difficulté du problème.
Je propose de créer une librairie libblockstore ou libblockio (enfin peu
importe j'ai toujours été mauvais pour le nommage). En gros, cette
librairie permet de transformer des requêtes byte-aligned en requête
block-aligned.
Ensuite, on procédera de la sorte dans le driver disk :
block_interface_t block_interface = { block_read, block_write };
file_interface_t file_interface = { file_read, file_write };
int block_read(struct ures *, ...) {
// le merdier qui va bien pour lire sur un disque dur ATA par ex.
}
int block_write (struct ures *, ...) {
// le merdier qui va bien pour ecrire sur un disque dur ATA par ex
}
int file_read (struct ures *, ...) {
return libblockio_read(& block_interface, struct ures *, ...);
}
int file_write (struct ures *, ...) {
return libblockio_write(& block_interface, struct ures*, ...);
}
Evidemment, on aura auparavant enregistre notre device dans la
libblockio pour qu'elle puisse allouer un buffer permettant de
transformer les requêtes comme il faut.
C'est pas optimal, parce qu'il faut recopier le code de file_read,
file_write dans tous les drivers blocks, mais si on veut respecter notre
histoire d'interface, je vois pas trop d'autres solutions. Je vais coder
comme ça. Y'aura bien entendu toujours possibilité de faire autrement,
mais pour le moment, ça sera comme ça, sauf si quelqu'un trouve une idée
géniale aujourd'hui ;-)
Ce n'est pas une décision unilatérale stupide et bornée, c'est la
volonté d'avancer.
Bonne journée,
Thomas
--
PETAZZONI Thomas - thomas.petazzoni@enix.org - UIN : 34937744
Web: http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E 1624 F653 CB30 98D3 F7A7
--------------enig9E8EF413F20F3C1886A8B03D
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQE+qPd+9lPLMJjT96cRArbsAKClkfCg8NEENwYKO8mYQbz2CiVG/wCaAtdR
nxtyUE+MZFg/uflMDPFISoc=
=RAbu
-----END PGP SIGNATURE-----
--------------enig9E8EF413F20F3C1886A8B03D--