use File::Temp qw(tmpnam);
use Filesys::Df;
+use LockFile::Simple;
my $tiledir = shift @ARGV;
+
+my $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1, -hold => 0, -warn => 0);
+
+$lockmgr->lock("${tiledir}/cleanup") || exit 0;
+
my $tempfile = tmpnam();
if (df($tiledir)->{per} > 90)
{
- system("find", $tiledir, "-xdev", "-type", "f", "-name", "*.meta", "-atime", "+60", "-fprintf", $tempfile, "%A@ %p\n");
+ system("find", $tiledir, "-name", "lost+found", "-prune", "-o", "-xdev", "-type", "f", "-name", "*.meta", "-atime", "+28", "-fprintf", $tempfile, "%A@ %p\n");
open(TILES, "-|", "sort", "-n", $tempfile) || die "Can't open $tempfile: $!";
- while (df($tiledir)->{per} > 80 && ! eof(TILES))
+ while (df($tiledir)->{per} > 80)
{
for my $n (1..1000)
{
unlink($tile) || warn "Can't remove $tile: $!";
}
+ else
+ {
+ goto done;
+ }
}
}
+ done:
+
close(TILES);
+
+ warn "Tile expiry finished before threshold reached" if df($tiledir)->{per} > 80;
}
unlink($tempfile);
+$lockmgr->unlock("${tiledir}/cleanup");
+
exit 0;