# MogileFS daemon
# Copyright 2004, Danga Interactive
# Copyright 2005-2006, Six Apart Ltd.
# See POD at bottom.

use strict;
use warnings;
use lib 'lib';
use MogileFS::Server;

# Rename binary in process list to make init scripts saner
$0 = "mogilefsd";

my $s = MogileFS::Server->server;


# Local Variables:
# mode: perl
# c-basic-indent: 4
# indent-tabs-mode: nil
# End:


=head1 NAME

mogilefsd -- MogileFS tracker daemon

=head1 USAGE

This is the main MogileFS daemon, mogilefsd, also called the
"tracker".  All interaction with a MogileFS installation begins by a
client talking to a tracker (you should run several in parallel for

See L<MogileFS::Client> for a client library.


=head2 Processes

The mogilefsd daemon is an event-loop in the parent process, handling
with epoll/kqueue/etc (see L<Danga::Socket>) tons of client
connections, while managing a bunch of worker processes underneath.

The worker processes under mogilefsd include:

=over 4

=item B<Client query processing> -- implements the MogileFS client/server protocol

See L<MogileFS::Worker::Query>.

=item B<Monitoring> -- monitors hosts and devices

See L<MogileFS::Worker::Monitor>.

=item B<Replicate> -- replicates files

See L<MogileFS::Worker::Replicate>.

=item B<Deleter> -- deletes files from storage nodes (protocol deletes from namespace are immediate)

See L<MogileFS::Worker::Delete>.

=item B<Reaper> -- re-enqueues files for replication when disks are marked dead

See L<MogileFS::Worker::Reaper>.

=item B<Checker/Fsck> -- background filesystem consistency checker

See L<MogileFS::Worker::Checker>.


=head2 Data Storage

See L<MogileFS::Store>.

=head1 AUTHORS

Brad Fitzpatrick E<lt>brad@danga.comE<gt>

Mark Smith E<lt>junior@danga.comE<gt>

Brad Whitaker E<lt>whitaker@danga.comE<gt>


 Copyright 2004, Danga Interactive
 Copyright 2005-2006, Six Apart Ltd.

=head1 LICENSE

Same terms as Perl itself.  Artistic/GPLv2, at your choosing.

=head1 SEE ALSO

L<mogstored> -- MogilefS storage daemon