eval 'sub OBD_SNAP_PRINTTABLE () { &_IOC(3, ord(\'f\'), 41, 4);}' unless
defined(&OBD_SNAP_PRINTTABLE);
+eval 'sub OBD_EXT2_RUNIT () { &_IOC(3, ord(\'f\'), 61, 4);}' unless
+ defined(&OBD_EXT2_RUNIT);
+
eval 'sub ATTR_MODE () {1;}' unless defined(&ATTR_MODE);
eval 'sub ATTR_UID () {2;}' unless defined(&ATTR_UID);
eval 'sub ATTR_GID () {4;}' unless defined(&ATTR_GID);
'snapset' => {func => "SnapSetTable", doc => "snapset tableno file" },
'snapprint' => {func => "SnapPrint", doc => "snapprint tableno"},
+ 'testiterator' => {func => "TestIterator", doc => ""},
+
'snaptable' => {func => "SnapShotTable", doc => "snaptable: build a snapshot table (interactive)"},
'copy' => {func => "Copy", doc => "copy srcid tgtid"},
'migrate' => {func => "Migrate", doc => "migrate srcid tgtid"},
$datalen = 4 * 4;
}
- my $packed = pack("ipip", length($type), $type, $datalen, $data);
+ my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
my $rc = ioctl(DEV_OBD, &OBD_IOC_ATTACH, $packed);
}
+
+sub TestIterator {
+ my $err = 0;
+ my $type = "ext2_obd";
+
+ $data = pack("i", 4711);
+ $datalen = 4;
+
+ 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 $rc = ioctl(DEV_OBD, &OBD_EXT2_RUNIT, $packed);
+
+ if (!defined $rc) {
+ print STDERR "ioctl failed: $!\n";
+ } elsif ($rc eq "0 but true") {
+ print "Finished (success)\n";
+ } else {
+ print "ioctl returned error code $rc.\n";
+ }
+}
+
sub SnapPrint {
my $err = 0;
my $type = "snap_obd";
my $cl = length($data);
my $add = pack("p", $data);
print "type $type (len $len), datalen $datalen ($cl)\n";
- my $packed = pack("ipip", length($type), $type, $datalen, $data);
+ my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
my $rc = ioctl(DEV_OBD, &OBD_SNAP_PRINTTABLE, $packed);
my $cl = length($data);
my $add = pack("p", $data);
print "type $type (len $len), datalen $datalen ($cl)\n";
- my $packed = pack("ipip", length($type), $type, $datalen, $data);
+ my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
my $rc = ioctl(DEV_OBD, &OBD_SNAP_SETTABLE, $packed);
my $data;
my $datalen = 0;
- if ( ! -f $file ) {
- print "No such file $file\n";
- }
+# if ( ! -f $file ) {
+# print "No such file $file\n";
+# }
- $table = ReadSnapShotTable($file);
+# $table = ReadSnapShotTable($file);
$data = pack("iii", $snapdev, $snapno, $tableno);
$datalen = 3 * 4;
my $cl = length($data);
my $add = pack("p", $data);
print "type $type (len $len), datalen $datalen ($cl)\n";
- my $packed = pack("ipip", length($type), $type, $datalen, $data);
+ my $packed = pack("Lipip", $::client_id, length($type), $type, $datalen, $data);
my $rc = ioctl(DEV_OBD, &OBD_IOC_ATTACH, $packed);