Vždy se podívá na první chybu:
Ve vašem případě to vypadá na problém se začleněním souborů, např. request_queue_t není definován.
Protože se jedná o zastaralý typ, pravděpodobně používáte verzi linux/blkdev.h, která je novější než příklad kódu.
Zkuste přidat typedef struct request_queue request_queue_t;
Neexistuje "oficiální" způsob, jak dělat blokové ovladače v uživatelském prostoru, ale lidé to často dělají tak, že (ab)použijí ovladač NBD k hovoru přes síť zpětné smyčky s démonem, který naslouchá na normálním soketu a mluví protokolem NBD. Další informace naleznete v dokumentech NBD.
Váš příklad je pro blokové zařízení v režimu jádra, které bude nutné sestavit jako modul jádra. A jelikož se vnitřní části jádra neustále mění, je nyní pravděpodobně nekompatibilní.
Podle návrhu MarkR je dokonce možné mluvit protokolem NBD přes AF_UNIX
soketový pár, takže není potřeba žádný další místní démon. Program implementující tento protokol bude muset nastavit pár soketů a rozdělit dítě. Rodič i podřízený uzavřou jeden konec páru soketů. Jeden z nich začne přijímat požadavky na svém konci soketu, zatímco druhý připojí ovladač NBD ke svému konci soketu.