CLONE_NEWPID => 0x20000000,
CLONE_NEWNET => 0x40000000};
+use constant O_PATH => 0x10000000;
+
sub run_with_timeout {
my ($timeout, $code, @param) = @_;
}
sub dump_journal {
- my ($start, $limit, $filter) = @_;
+ my ($start, $limit, $since, $until) = @_;
my $lines = [];
my $count = 0;
};
my $cmd = ['journalctl', '-o', 'short', '--no-pager'];
+
+ push @$cmd, '--since', $since if $since;
+ push @$cmd, '--until', $until if $until;
run_command($cmd, outfunc => $parser);
# HACK: ExtJS store.guaranteeRange() does not like empty array
return 0 == syscall(308, $fileno, $nstype);
}
+sub syncfs($) {
+ my ($fileno) = @_;
+ return 0 == syscall(306, $fileno);
+}
+
+sub sync_mountpoint {
+ my ($path) = @_;
+ sysopen my $fd, $path, O_PATH or die "failed to open $path: $!\n";
+ my $result = syncfs(fileno($fd));
+ close($fd);
+ return $result;
+}
+
1;