On Thu, 28 Jul 2011, Roger Pau Monné wrote:
I'm doing some research about how to implement something similar to the blktap2 Linux driver on NetBSD, to be able to use different image formats (other than raw). I've read on other threads that blktap will be implemented using puffs on NetBSD, but I'm not able to see how is that possible, since puffs does not provide a block devices. I've read about RUMP, and it seems it would be best to implement the driver using RUMP, and maybe when it's finished include it in the kernel, but I'm not sure if it's the best way to implement it, could someone give me some advice or status about this project?
This is pud, not puffs.
Have a look at pkgsrc/net/netbsd-iscsi-initiator, it's a block device implemented in userland.Thanks for the help, it took me quite some time to realize that you can implement block devices inside virtual filesystems, that's a really good trick.
Problem with netbsd-iscsi-initiator is that you use vnd(4) to access the storage. I've never got the block/character device options to work (though haven't tried hard) as really you need all the devices for the partitions (e.g. bd0a, rbd0, bd0b, rbd0d, etc.) as the tools generally expect them to be there like they are in /dev.
When using vnd(4) if the userland process restarts (such as reconnecting to an iSCSI target) it kills the whole filesystem layer requiring a forced reboot.
I think you should really be looking at libvdisk in -current. -- Stephen