don't buffer printing to locks, to be able to get dependencies early
gather needed=* lines from locks (may want to cache that info later, but I don't think it has any actual performance impact)
This commit is contained in:
parent
770bcd5b5a
commit
b5c447a355
@ -1,5 +1,5 @@
|
|||||||
# ex:ts=8 sw=4:
|
# ex:ts=8 sw=4:
|
||||||
# $OpenBSD: Locks.pm,v 1.9 2011/11/13 22:18:04 espie Exp $
|
# $OpenBSD: Locks.pm,v 1.10 2011/12/02 22:32:07 espie Exp $
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
|
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
|
||||||
#
|
#
|
||||||
@ -48,6 +48,7 @@ sub dolock
|
|||||||
{
|
{
|
||||||
my ($self, $name, $v) = @_;
|
my ($self, $name, $v) = @_;
|
||||||
if (sysopen my $fh, $name, O_CREAT|O_EXCL|O_WRONLY, 0666) {
|
if (sysopen my $fh, $name, O_CREAT|O_EXCL|O_WRONLY, 0666) {
|
||||||
|
DPB::Util->make_hot($fh);
|
||||||
print $fh "locked=", $v->logname, "\n";
|
print $fh "locked=", $v->logname, "\n";
|
||||||
$v->print_parent($fh);
|
$v->print_parent($fh);
|
||||||
return $fh;
|
return $fh;
|
||||||
@ -103,5 +104,32 @@ sub recheck_errors
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub find_dependencies
|
||||||
|
{
|
||||||
|
my ($self, $hostname) = @_;
|
||||||
|
opendir(my $dir, $self->{lockdir});
|
||||||
|
my $h = {};
|
||||||
|
while (my $name = readdir($dir)) {
|
||||||
|
my $fullname = $self->{lockdir}."/".$name;
|
||||||
|
next if -d $fullname;
|
||||||
|
next if $name =~ m/^host:/;
|
||||||
|
open(my $f, '<', $fullname);
|
||||||
|
my $host;
|
||||||
|
my @d;
|
||||||
|
while (<$f>) {
|
||||||
|
if (m/^host=(.*)/) {
|
||||||
|
$host = $1;
|
||||||
|
} elsif (m/^needed=(.*)/) {
|
||||||
|
@d = split(/\s/, $1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (defined $host && $host eq $hostname) {
|
||||||
|
for my $k (@d) {
|
||||||
|
$h->{$k} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sort keys %$h;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
Loading…
Reference in New Issue
Block a user