| 1 |
root |
1.2 |
NAME |
| 2 |
root |
1.3 |
Linux::NBD::Client - client (device) side of a network block device |
| 3 |
root |
1.2 |
|
| 4 |
|
|
SYNOPSIS |
| 5 |
|
|
use Linux::NBD::Client; |
| 6 |
|
|
|
| 7 |
|
|
DESCRIPTION |
| 8 |
|
|
WARNING: I talked to the author of the nbd driver because nbd is so |
| 9 |
|
|
extremely racy (right now, stopping it often causes oopses, a server |
| 10 |
|
|
crashing also often oopses etc..). |
| 11 |
|
|
|
| 12 |
|
|
It turned out that he doesn't care at all and nbd is basically |
| 13 |
|
|
unmaintained, so YMMV when using this module, especially when writing |
| 14 |
|
|
servers. |
| 15 |
|
|
|
| 16 |
|
|
He really should have said that on his nbd pages ;[. |
| 17 |
|
|
|
| 18 |
|
|
OTOH, it works relatively reliable when you don't stop the servers, so |
| 19 |
|
|
watch out and keep your fingers crossed. |
| 20 |
|
|
|
| 21 |
|
|
METHODS |
| 22 |
|
|
$client = new Linux::NBD::Client [socket => $fh][, device => |
| 23 |
|
|
"/dev/ndx"], ... |
| 24 |
|
|
Create a new client. |
| 25 |
|
|
|
| 26 |
|
|
Unless "device" is given, an unused device node is looked up using |
| 27 |
|
|
the "device" method (this might result in an exception!). |
| 28 |
|
|
|
| 29 |
|
|
The other arguments correspond to calls to methods of the same name. |
| 30 |
|
|
|
| 31 |
|
|
$client->socket([$tcp_socket]) |
| 32 |
|
|
Returns the current socket after setting a new one (if an argument |
| 33 |
|
|
is supplied). The socket *MUST* be a tcp socket. Believe, bad things |
| 34 |
|
|
will happen. |
| 35 |
|
|
|
| 36 |
|
|
The special argument "undef" will try to clear the socket, if any |
| 37 |
|
|
was set. |
| 38 |
|
|
|
| 39 |
|
|
$client->device([$new_device]) |
| 40 |
|
|
Returns the current device node (e.g. "/dev/nd2") after setting a |
| 41 |
|
|
new one if an argument is supplied. |
| 42 |
|
|
|
| 43 |
|
|
If the argument is "undef" it will search for an unallocated |
| 44 |
|
|
nbd-device and use it. |
| 45 |
|
|
|
| 46 |
|
|
$client->disconnect |
| 47 |
|
|
Tries to exit the server by ending a special disconnect message. |
| 48 |
|
|
|
| 49 |
|
|
$client->clear_queue |
| 50 |
|
|
Clears the request queue, if possible. Should be used before setting |
| 51 |
|
|
a new socket. |
| 52 |
|
|
|
| 53 |
|
|
$client->set_blocksize($blksize) |
| 54 |
|
|
Set the device blocksize in bytes (must be >512, <PAGESIZE and a |
| 55 |
|
|
power of two). |
| 56 |
|
|
|
| 57 |
|
|
$client->set_size($bytes) |
| 58 |
|
|
Set the device size in bytes. |
| 59 |
|
|
|
| 60 |
|
|
$client->set_blocks($nblocks) |
| 61 |
|
|
Set the size in blocks. |
| 62 |
|
|
|
| 63 |
|
|
$client->run |
| 64 |
|
|
Enters the service loop (waits for read/write requests on the device |
| 65 |
|
|
and forwards them over the given socket). Only returns when somebody |
| 66 |
|
|
calls "disconnect" or the server is killed. |
| 67 |
|
|
|
| 68 |
|
|
$pid = $client->run_async |
| 69 |
|
|
Runs the service loop asynchronously and returns the pid of the |
| 70 |
|
|
newly created service process. |
| 71 |
|
|
|
| 72 |
|
|
$client->kill_async |
| 73 |
|
|
Kills any running async service. Please note that this also kills |
| 74 |
|
|
the socket, so you need to re-set the socket after this call. |
| 75 |
|
|
|
| 76 |
|
|
AUTHOR |
| 77 |
|
|
Marc Lehmann <schmorp@schmorp.de> |
| 78 |
|
|
http://home.schmorp.de/ |
| 79 |
|
|
|