}
-
sub Attach {
my $err = 0;
my $type = shift;
}
}
+
sub Detach {
my $err = 0;
my $data = "";
my $len = length($type);
my $cl = length($data);
- my $add = pack("p", $data);
print "type $type (len $len), datalen $datalen ($cl)\n";
my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
my $len = length($type);
my $cl = length($data);
- my $add = pack("p", $data);
print "type $type (len $len), datalen $datalen ($cl)\n";
my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
my $len = length($type);
my $cl = length($data);
- my $add = pack("p", $data);
print "type $type (len $len), datalen $datalen ($cl)\n";
my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
$data = pack("ii", $snaptableno, $snapcount);
$datalen = 2 * 4;
foreach my $time (sort keys %{$table}) {
+ # XXX we should change to pack LL instead of I for times
$data .= pack("Ii", $time, $table->{$time});
$datalen += 8;
}
my $len = length($type);
my $cl = length($data);
- my $add = pack("p", $data);
print "type $type (len $len), datalen $datalen ($cl)\n";
my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
sub Copy {
my $err = 0;
- my $srcid = shift;
- my $dstid = shift;
+ my $src_obdo;
+ my $dst_obdo;
# Note: _copy IOCTL takes parameters as dst, src.
# Copy function takes parameters as src, dst.
- my $data = pack("III", $::client_id, $dstid, $srcid);
- my $datalen = 12;
+ $src_obdo->{id} = shift;
+ $dst_obdo->{id} = shift;
+ $src_obdo->{valid} = &OBD_MD_FLALL;
+
+ # XXX need to fix copy so we can have 2 client IDs here
+ my $packed = pack("L", $::client_id) . obdo_pack($dst_obdo) . pack("L", $::client_id) . obdo_pack($src_obdo);
- my $packed = pack("ip", $datalen, $data);
my $rc = ioctl(DEV_OBD, &OBD_IOC_COPY, $packed);
if (!defined $rc) {
sub Migrate {
my $err = 0;
- my $srcid = shift;
- my $dstid = shift;
# Note: _migr IOCTL takes parameters as dst, src.
# Migrate function takes parameters as src, dst.
- my $data = pack("III", $::client_id, $dstid, $srcid);
- my $datalen = 12;
+ $src_obdo->{id} = shift;
+ $dst_obdo->{id} = shift;
+ $src_obdo->{valid} = &OBD_MD_FLALL;
+
+ # We pack a dummy connection ID here
+ my $packed = pack("L", $::client_id) . obdo_pack($dst_obdo) . pack("L", $::client_id) . obdo_pack($src_obdo);
- my $packed = pack("ip", $datalen, $data);
my $rc = ioctl(DEV_OBD, &OBD_IOC_MIGR, $packed);
if (!defined $rc) {
return;
}
- my $inode = shift;
+ my $id = shift;
- if (!defined($inode) || scalar($inode) < 1) {
+ if (!defined($id) || scalar($id) < 1) {
print "invalid arguments; type \"help getattr\" for a synopsis\n";
return;
}
# see Setattr
my $obdo;
- $obdo->{id} = $inode;
+ $obdo->{id} = $id;
$obdo->{valid} = &OBD_MD_FLALL;
my $packed = pack("L", $::client_id) . obdo_pack($obdo);
my $rc = ioctl(DEV_OBD, &OBD_IOC_GETATTR, $packed);
-
if (!defined $rc) {
print STDERR "ioctl failed: $!\n";
return;
}
- my $inode = shift;
+ my $id = shift;
- if (!defined($inode) || scalar($inode) < 1) {
+ if (!defined($id) || scalar($id) < 1) {
print "invalid arguments; type \"help setattr\" for a synopsis\n";
return;
}
# XXX we do not currently set all of the fields in the obdo
my $obdo;
- $obdo->{id} = $inode;
+ $obdo->{id} = $id;
$obdo->{mode} = oct(shift);
$obdo->{uid} = shift;
$obdo->{gid} = shift;