+++ /dev/null
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-/*
- * Ceph - scalable distributed file system
- *
- * Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
- *
- * This is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software
- * Foundation. See file COPYING.
- *
- */
-
-#ifndef CEPH_MDS_H
-#define CEPH_MDS_H
-
-#include "common/LogClient.h"
-#include "common/Mutex.h"
-#include "common/Timer.h"
-#include "include/Context.h"
-#include "include/types.h"
-#include "mgr/MgrClient.h"
-#include "msg/Dispatcher.h"
-
-#include "Beacon.h"
-#include "MDSMap.h"
-#include "MDSRank.h"
-
-#define CEPH_MDS_PROTOCOL 30 /* cluster internal */
-
-class AuthAuthorizeHandlerRegistry;
-class Message;
-class Messenger;
-class MonClient;
-
-class MDSDaemon : public Dispatcher, public md_config_obs_t {
- public:
- /* Global MDS lock: every time someone takes this, they must
- * also check the `stopping` flag. If stopping is true, you
- * must either do nothing and immediately drop the lock, or
- * never drop the lock again (i.e. call respawn()) */
- Mutex mds_lock;
- bool stopping;
-
- SafeTimer timer;
-
- protected:
- Beacon beacon;
-
- AuthAuthorizeHandlerRegistry *authorize_handler_cluster_registry;
- AuthAuthorizeHandlerRegistry *authorize_handler_service_registry;
-
- std::string name;
-
- Messenger *messenger;
- MonClient *monc;
- MgrClient mgrc;
- MDSMap *mdsmap;
- LogClient log_client;
- LogChannelRef clog;
-
- MDSRankDispatcher *mds_rank;
-
- public:
- MDSDaemon(const std::string &n, Messenger *m, MonClient *mc);
- ~MDSDaemon() override;
- int orig_argc;
- const char **orig_argv;
-
- // handle a signal (e.g., SIGTERM)
- void handle_signal(int signum);
-
- int init();
-
- /**
- * Hint at whether we were shutdown gracefully (i.e. we were only
- * in standby, or our rank was stopped). Should be removed once
- * we handle shutdown properly (e.g. clear out all message queues)
- * such that deleting xlists doesn't assert.
- */
- bool is_clean_shutdown();
-
- // config observer bits
- const char** get_tracked_conf_keys() const override;
- void handle_conf_change(const struct md_config_t *conf,
- const std::set <std::string> &changed) override;
- protected:
- // tick and other timer fun
- Context *tick_event = nullptr;
- void reset_tick();
-
- void wait_for_omap_osds();
-
- private:
- bool ms_dispatch(Message *m) override;
- bool ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer, bool force_new) override;
- bool ms_verify_authorizer(Connection *con, int peer_type,
- int protocol, bufferlist& authorizer_data, bufferlist& authorizer_reply,
- bool& isvalid, CryptoKey& session_key) override;
- void ms_handle_accept(Connection *con) override;
- void ms_handle_connect(Connection *con) override;
- bool ms_handle_reset(Connection *con) override;
- void ms_handle_remote_reset(Connection *con) override;
- bool ms_handle_refused(Connection *con) override;
-
- protected:
- // admin socket handling
- friend class MDSSocketHook;
- class MDSSocketHook *asok_hook;
- void set_up_admin_socket();
- void clean_up_admin_socket();
- void check_ops_in_flight(); // send off any slow ops to monitor
- bool asok_command(string command, cmdmap_t& cmdmap, string format,
- ostream& ss);
-
- void dump_status(Formatter *f);
-
- /**
- * Terminate this daemon process.
- *
- * This function will return, but once it does so the calling thread
- * must do no more work as all subsystems will have been shut down.
- */
- void suicide();
-
- /**
- * Start a new daemon process with the same command line parameters that
- * this process was run with, then terminate this process
- */
- void respawn();
-
- void tick();
-
- // messages
- bool _dispatch(Message *m, bool new_msg);
-
-protected:
- bool handle_core_message(Message *m);
-
- // special message types
- friend class C_MDS_Send_Command_Reply;
- static void send_command_reply(MCommand *m, MDSRank* mds_rank, int r,
- bufferlist outbl, const std::string& outs);
- int _handle_command(
- const cmdmap_t &cmdmap,
- MCommand *m,
- bufferlist *outbl,
- std::string *outs,
- Context **run_later,
- bool *need_reply);
- void handle_command(class MCommand *m);
- void handle_mds_map(class MMDSMap *m);
- void _handle_mds_map(MDSMap *oldmap);
-};
-
-
-#endif