ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Linux-NBD/NBD.xs
(Generate patch)

Comparing Linux-NBD/NBD.xs (file contents):
Revision 1.1 by root, Thu May 8 23:43:41 2003 UTC vs.
Revision 1.5 by root, Mon Sep 20 11:14:25 2010 UTC

28_set_sock (int dev, int fd) 28_set_sock (int dev, int fd)
29 CODE: 29 CODE:
30 ioctl (dev, NBD_SET_SOCK, (unsigned long)fd); 30 ioctl (dev, NBD_SET_SOCK, (unsigned long)fd);
31 31
32void 32void
33_doit (int dev, int doexit = 0) 33_doit (int dev, int server = 0)
34 CODE: 34 CODE:
35 if (server)
36 for (server = 0; server < 4095; server++)
37 if (server != dev)
38 close (server);
39
35 ioctl (dev, NBD_DO_IT); 40 ioctl (dev, NBD_DO_IT);
36 if (doexit) 41
42 if (server)
37 _exit (0); 43 _exit (0);
38 44
39void 45void
40_disconnect (int dev) 46_disconnect (int dev)
41 CODE: 47 CODE:
57 ioctl (dev, NBD_SET_BLKSIZE, blocksize); 63 ioctl (dev, NBD_SET_BLKSIZE, blocksize);
58 64
59void 65void
60_set_size (int dev, unsigned long size) 66_set_size (int dev, unsigned long size)
61 CODE: 67 CODE:
62 ioctl (dev, NBD_SET_BLKSIZE, size); 68 ioctl (dev, NBD_SET_SIZE, size);
63 69
64void 70void
65_set_size_blocks (int dev, unsigned long nblocks) 71_set_size_blocks (int dev, unsigned long nblocks)
66 CODE: 72 CODE:
67 ioctl (dev, NBD_SET_SIZE_BLOCKS, nblocks); 73 ioctl (dev, NBD_SET_SIZE_BLOCKS, nblocks);
68 74
75void
76_set_timeout (int dev, unsigned long timeout)
77 CODE:
78 ioctl (dev, NBD_SET_TIMEOUT, timeout);
79
80void
81_print_debug (int dev)
82 CODE:
83 ioctl (dev, NBD_PRINT_DEBUG, 0);
84
69MODULE = Linux::NBD PACKAGE = Linux::NBD::Server 85MODULE = Linux::NBD PACKAGE = Linux::NBD::Server
70 86
71void 87void
72_one_request (SV *obj, int fd) 88_one_request (SV *obj, int fd)
73 CODE: 89 CODE:
90{
74 struct nbd_request req; 91 struct nbd_request req;
75 92
76 if (read (fd, &req, sizeof (req)) == sizeof (req)) 93 if (read (fd, &req, sizeof (req)) == sizeof (req))
77 { 94 {
78 if (req.magic == htonl (NBD_REQUEST_MAGIC)) 95 if (req.magic == htonl (NBD_REQUEST_MAGIC))
79 { 96 {
97 req.type = htonl (req.type);
98
80 if (req.type < 2) 99 if (req.type < 2)
81 { 100 {
82 u64 from = ntohll (req.from); 101 u64 from = ntohll (req.from);
83 102
84 PUSHMARK (SP); 103 PUSHMARK (SP);
97 } 116 }
98 } 117 }
99 } 118 }
100 119
101 XSRETURN_YES; 120 XSRETURN_YES;
121}
102 122
103SV * 123SV *
104_format_reply (SV *handle, unsigned int error = 0, SV *data = 0) 124_format_reply (SV *handle, unsigned int error = 0, SV *data = 0)
105 CODE: 125 CODE:
126{
106 struct nbd_reply rep; 127 struct nbd_reply rep;
107 STRLEN len; 128 STRLEN len;
108 char *h = SvPV (handle, len); 129 char *h = SvPV (handle, len);
109 130
110 if (len != sizeof (rep.handle)) 131 if (len != sizeof (rep.handle))
116 137
117 RETVAL = newSVpvn ((char *)&rep, sizeof (rep)); 138 RETVAL = newSVpvn ((char *)&rep, sizeof (rep));
118 139
119 if (data && !error) 140 if (data && !error)
120 sv_catsv (RETVAL, data); 141 sv_catsv (RETVAL, data);
121 142}
122 OUTPUT: 143 OUTPUT:
123 RETVAL 144 RETVAL
124 145

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines