Regarde toujours la première erreur :
Dans votre cas, cela ressemble à un problème avec les fichiers inclus, par ex. request_queue_t n'est pas défini.
Comme il s'agit d'un type obsolète, vous utilisez probablement une version de linux/blkdev.h plus récente que l'exemple de code.
Essayez d'ajouter typedef struct request_queue request_queue_t;
Il n'y a pas de moyen "officiel" de créer des pilotes de bloc dans l'espace utilisateur, mais les gens le font souvent en (ab)utilisant le pilote NBD pour parler via un réseau de bouclage à un démon qui écoute sur un socket normal et parle le protocole NBD. Consultez les documents NBD pour plus d'informations.
Votre exemple concerne un périphérique bloc en mode noyau, qui devra être construit en tant que module noyau. Et comme les composants internes du noyau changent constamment, il est probablement maintenant incompatible.
Suivant la suggestion de MarkR, il est même possible de parler du protocole NBD sur un AF_UNIX
paire de sockets, aucun démon local supplémentaire n'est donc nécessaire. Le programme implémentant ce protocole devra configurer la paire de sockets et débrancher un enfant. Le parent et l'enfant ferment une extrémité de la paire de sockets. L'un d'eux commence à prendre les requêtes à son extrémité du socket tandis que l'autre connecte le pilote NBD à son extrémité du socket.