You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Donc suite à nos discussions, on a décidé qu'au moment du register_blk_device, on va s'occuper de créer des fichiers pour chaque partition du block device.
tl;dr: ça va pas marcher.
Il faut que la partie qui s'occupe de ça soit capable de lire le MBR. Déjà, on est pas sur qu'au moment où on va essayer de lire le MBR si le disque est vraiment initialisé. Par exemple si le mec qui code le driver met le register au début de l'initialisation du driver (ouais il est con mais admettons) ça va pas marcher du tout. D'autre part, tout ça ne marcherait que si la lecture est totalement synchrone. Pour peu que le driver se base sur un thread séparé pour la lecture (ce qui va être souvent le cas), on sera définitivement bloqué.
Bref, je vois pas trop comment faire. Une solution que je vois serait d'avoir un service kernel qui est activé dès qu'un block device apparait, et qu'il crée les partition quand c'est possible. De cette façon on ne risque pas de situation de blocage je pense...
The text was updated successfully, but these errors were encountered:
J'ai commencé à travailler la dessus.
Mon approche pour le moment c'est de faire un blkdev qui fait un passe plat des interfaces du driver, avec un ajout d'offset pour les read et write.
Pour que le driver soit capable de savoir à quel blkdev sous-jacent il doit s'adresser, je vais modifier devfs pour que chaque device enregistré ai un numero d'inode unique, et que ce numero soit retourné par les méthodes register_chardev et register_blkdev.
Au delà de cette feature là, ça permettra à tous les drivers d'être multi-instanciés beaucoup plus facilement.
Par exemple, floppy est instancié deux fois (fd0 et fd1) Pour le moment on fournis une structure blkdev_interface différente pour chaque instance. Désormais, il sera possible d'avoir une interface unique, et de savoir quelle instance du driver est adressée grace au numéro d'inode.
Donc suite à nos discussions, on a décidé qu'au moment du register_blk_device, on va s'occuper de créer des fichiers pour chaque partition du block device.
tl;dr: ça va pas marcher.
Il faut que la partie qui s'occupe de ça soit capable de lire le MBR. Déjà, on est pas sur qu'au moment où on va essayer de lire le MBR si le disque est vraiment initialisé. Par exemple si le mec qui code le driver met le register au début de l'initialisation du driver (ouais il est con mais admettons) ça va pas marcher du tout. D'autre part, tout ça ne marcherait que si la lecture est totalement synchrone. Pour peu que le driver se base sur un thread séparé pour la lecture (ce qui va être souvent le cas), on sera définitivement bloqué.
Bref, je vois pas trop comment faire. Une solution que je vois serait d'avoir un service kernel qui est activé dès qu'un block device apparait, et qu'il crée les partition quand c'est possible. De cette façon on ne risque pas de situation de blocage je pense...
The text was updated successfully, but these errors were encountered: