views:

407

answers:

3

Hello everyone

My project involves simulating a block device by remote host.

For testing I am using FUSE, my file system is a simple change of the "hello" example app, where instead of returning a constant string I just read data directly from a file.

When I try to mount the file normally (mount -o loop=/dev/loop1 ) it works well. When I load fuse and expose this file via it, all the normal file operations work. But mounting fails with "Permission denied".

Anyone has an idea where the "permission denied" is coming from ?

Any other methods to that will allow me to create a virtual device (only support block access) in users space, that will be mountable ?

Thanks in advance

+1  A: 

The mount command is a real hell to use when it starts to print errors. Try "-v" but more often than not, the additional output won't help :(

Aaron Digulla
Sadly -v show absolutely no problems until the dreaded "Permission denied"
Murkin
+3  A: 

Presumably the problem is that the FUSE filesystem doesn't support the features required to have loop-mounts on it.

Have you considered using a network block device instead, such as NBD or iSCSI target?

MarkR
Unfortunately that doesn't appear to fit as NBD-server will satisfy the block requests itself. While I need my application to provide the blocks.
Murkin
Your application can provide the blocks by implementing a NBD server or iscsi target; you can then use the kernel's existing NBD or iscsi drivers to make it available over the network and then mount it.
MarkR
I mistakenly assumed that writing my own NBD-server will be too much of a pain. Just found a draft nbd-server in python:"http://lists.canonical.org/pipermail/kragen-hacks/2004-May/000397.html"Suits perfect with my "Prototype in python" experimentThank you !
Murkin
+1  A: 

Are you executing with Root permission. You can trace the program with "strace" and then check where exactly this fails.

subbul