Selalu perhatikan kesalahan pertama:
Dalam kasus Anda, sepertinya ada masalah dengan menyertakan file, mis. request_queue_t tidak ditentukan.
Karena ini adalah jenis yang tidak digunakan lagi, Anda mungkin menggunakan versi linux/blkdev.h yang lebih baru dari contoh kode.
Coba tambahkan typedef struct request_queue request_queue_t;
Tidak ada cara "resmi" untuk melakukan blok driver di ruang pengguna, namun orang sering melakukannya dengan (ab) menggunakan driver NBD untuk berbicara melalui jaringan loopback ke daemon yang mendengarkan pada soket normal dan menggunakan protokol NBD. Lihat dokumen NBD untuk info selengkapnya.
Contoh Anda adalah untuk perangkat blok mode-kernel, yang perlu dibangun sebagai modul kernel. Dan karena internal kernel selalu berubah, mungkin sekarang tidak kompatibel.
Mengikuti saran MarkR, bahkan dimungkinkan untuk membicarakan protokol NBD melalui AF_UNIX
pasangan soket, jadi tidak diperlukan daemon lokal tambahan. Program yang mengimplementasikan protokol ini perlu menyiapkan pasangan soket dan mencabut anak. Kedua orang tua dan anak menutup salah satu ujung pasangan soket. Salah satunya mulai menerima permintaan di ujung soketnya sementara yang lain menghubungkan driver NBD ke ujung soketnya.