diff --git a/ceph.spec.in b/ceph.spec.in index 4e964587ac1..d1f9ef70dbe 100644 --- a/ceph.spec.in +++ b/ceph.spec.in @@ -133,7 +133,6 @@ fi %{_bindir}/ceph %{_bindir}/cephfs %{_bindir}/cconf -%{_bindir}/cclass %{_bindir}/cclsinfo %{_bindir}/crushtool %{_bindir}/monmaptool @@ -180,7 +179,6 @@ fi %{_mandir}/man8/rbd.8* %{_mandir}/man8/cauthtool.8* %{_mandir}/man8/cdebugpack.8* -%{_mandir}/man8/cclass.8.gz %{_mandir}/man8/cclsinfo.8.gz %{python_sitelib}/rados.py %{python_sitelib}/rados.pyc diff --git a/debian/ceph.install b/debian/ceph.install index 9f51314ea93..40a0230fa59 100644 --- a/debian/ceph.install +++ b/debian/ceph.install @@ -1,7 +1,6 @@ usr/bin/ceph usr/bin/cephfs usr/bin/cconf -usr/bin/cclass usr/bin/cclsinfo usr/bin/crushtool usr/bin/gceph @@ -30,7 +29,6 @@ usr/share/man/man8/cconf.8 usr/share/man/man8/ceph.8 usr/share/man/man8/cephfs.8 usr/share/man/man8/cauthtool.8 -usr/share/man/man8/cclass.8 usr/share/man/man8/cclsinfo.8 usr/share/man/man8/cdebugpack.8 usr/share/ceph_tool/gui_resources/* diff --git a/man/Makefile.am b/man/Makefile.am index afb97c7e3bb..640c65a6b22 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -20,7 +20,6 @@ dist_man_MANS = \ rados.8 \ librados-config.8 \ rbd.8 \ - cclass.8 \ cclsinfo.8 \ cdebugpack.8 \ cephfs.8 diff --git a/man/cclass.8 b/man/cclass.8 deleted file mode 100644 index 3cede035c3c..00000000000 --- a/man/cclass.8 +++ /dev/null @@ -1,34 +0,0 @@ -.TH CCLASS 8 -.SH NAME -cclass \- ceph class loading utility -.SH SYNOPSIS -.B cclass -[ \fIoptions\fR ] ... [ \fIcls_filename\fR ] -.SH DESCRIPTION -.B cclass -will load class libraries into the ceph cluster. Ceph classes are loadable libraries that complement -and extend the \fIosd\fR functionality. They define \fImethods\fR that can be executed on osd objects and -may read and modify the data on these objects. -.SH OPTIONS -.TP -\fB\-l\fP, \fB\-\-load\fP -Loads a class, specified by \fIcls_filename\fR, into the system -.TP -\fB\-a\fP, \fB\-\-load-all\fP -Searches for all the classes in the specified libdir and try to load them into the monitor -.TP -\fB\-L\fP, \fB\-\-libdir \fIpath\fP -Specifies the path where classes will be searched for (used in conjuction with \fB\-\-load-all\fP) -.TP -\fB\-o\fP, \fB\-\-overwrite\fP -Overwrite an existing class with the same name, version, and architecture. -.TP -\fB\-e\fP, \fB\-\-excl\fP -Exclusively load class. Will only load the class if one with the same name (and version and architecture) hasn't been loaded yet. -.SH AVAILABILITY -.B cclass -is part of the Ceph distributed file system. Please refer to the Ceph wiki at -http://ceph.newdream.net/wiki for more information. -.SH SEE ALSO -.BR cclsinfo (8) -.BR ceph (8) diff --git a/src/.gitignore b/src/.gitignore index 4e48f4f5915..ad7cbe68efd 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -54,7 +54,6 @@ CrushWrapper.pm crush/CrushWrapper_wrap.cxx /.git_version -/cclass /cconf /cdebugpack /cephfs diff --git a/src/Makefile.am b/src/Makefile.am index 3dd20a6c68e..ac94f2d33d0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,7 +9,7 @@ CLEANFILES = bin_PROGRAMS = sbin_PROGRAMS = sbin_SCRIPTS = -bin_SCRIPTS = crun cclass $(srcdir)/cclsinfo cdebugpack crbdnamer +bin_SCRIPTS = crun $(srcdir)/cclsinfo cdebugpack crbdnamer dist_bin_SCRIPTS = # C/C++ tests to build will be appended to this check_PROGRAMS = @@ -459,7 +459,7 @@ editpaths = sed \ -e 's|@datadir[@]|$(pkgdatadir)|g' \ -e 's|@prefix[@]|$(prefix)|g' -init-ceph mkcephfs cclass cdebugpack: init-ceph.in mkcephfs.in cclass.in Makefile cdebugpack.in +init-ceph mkcephfs cdebugpack: init-ceph.in mkcephfs.in Makefile cdebugpack.in rm -f $@ $@.tmp $(editpaths) '$(srcdir)/$@.in' >$@.tmp chmod +x $@.tmp @@ -470,7 +470,6 @@ BUILT_SOURCES += init-ceph sbin_SCRIPTS += mkcephfs CLEANFILES += \ - cclass \ cdebugpack \ ceph_ver.h \ init-ceph \ @@ -504,7 +503,7 @@ noinst_LIBRARIES += #libcephclient_so.a # extra bits EXTRA_DIST = $(srcdir)/verify-mds-journal.sh $(srcdir)/vstart.sh $(srcdir)/stop.sh \ crun $(srcdir)/ceph_common.sh $(srcdir)/init-ceph.in $(srcdir)/mkcephfs.in \ - $(srcdir)/cclass.in $(srcdir)/cdebugpack.in \ + $(srcdir)/cdebugpack.in \ $(srcdir)/cclsinfo $(srcdir)/make_version $(srcdir)/check_version \ $(srcdir)/.git_version \ $(srcdir)/crbdnamer \ @@ -584,7 +583,6 @@ libcommon_files = \ msg/msg_types.cc \ common/BackTrace.cc \ common/ProfLogger.cc \ - common/ClassLibrary.cc \ common/Clock.cc \ common/Timer.cc \ common/Finisher.cc \ @@ -651,7 +649,6 @@ libmon_a_SOURCES = \ mon/MonmapMonitor.cc \ mon/PGMonitor.cc \ mon/LogMonitor.cc \ - mon/ClassMonitor.cc \ mon/AuthMonitor.cc \ mon/Elector.cc \ mon/MonitorStore.cc \ @@ -760,7 +757,6 @@ noinst_HEADERS = \ common/errno.h\ common/likely.h\ common/lockdep.h\ - common/ClassVersion.h\ common/Clock.h\ common/Cond.h\ common/ConfUtils.h\ @@ -799,7 +795,6 @@ noinst_HEADERS = \ crush/types.h\ fetch_config\ include/bloom_filter.hpp\ - include/ClassLibrary.h\ include/Context.h\ include/CompatSet.h\ include/Distribution.h\ @@ -908,8 +903,6 @@ noinst_HEADERS = \ messages/MAuth.h\ messages/MAuthReply.h\ messages/MCacheExpire.h\ - messages/MClass.h\ - messages/MClassAck.h\ messages/MClientCaps.h\ messages/MClientCapRelease.h\ messages/MClientLease.h\ @@ -999,7 +992,6 @@ noinst_HEADERS = \ messages/MWatchNotify.h\ messages/PaxosServiceMessage.h\ mon/AuthMonitor.h\ - mon/ClassMonitor.h\ mon/Elector.h\ mon/LogMonitor.h\ mon/MDSMonitor.h\ diff --git a/src/cclass.in b/src/cclass.in deleted file mode 100644 index 099564e1e05..00000000000 --- a/src/cclass.in +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/sh - -load=0 -load_all=0 -fname="" -libdir="" - -if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then - BINDIR=. - [ -e .libs ] && LIBDIR=.libs || LIBDIR=. - ETCDIR=. - libdir=$LIBDIR -else - BINDIR=@bindir@ - ETCDIR=@sysconfdir@/ceph - libdir=@libdir@/rados-classes -fi - -load_opt="changed" - -usage="usage: $0 [option]... [cls_filename]\n" -usage=$usage"options:\n" -usage=$usage"\t-b, --bindir \n" -usage=$usage"\t-L, --libdir \n" -usage=$usage"\t-l, --load\n" -usage=$usage"\t-a, --load-all\n" -usage=$usage"\t-c, --conf \n" -usage=$usage"\t-o, --overwrite\n" -usage=$usage"\t-e, --excl\n" - -conf=$ETCDIR/ceph.conf - -usage_exit() { - printf "$usage" - exit 1 -} - -err_exit() { - echo "Error: $*" - exit 1 -} - -while [ $# -ge 1 ]; do -case $1 in - -b | --bindir ) - shift - BINDIR=$1 - ;; - -L | --libdir ) - shift - libdir=$1 - ;; - -l | --load ) - load=1 - ;; - -a | --load-all ) - load_all=1 - ;; - -o | --overwrite ) - load_opt="overwrite" - ;; - -e | --excl ) - load_opt="excl" - ;; - -c | --conf ) - shift - conf=$1 - ;; - * ) - [ -n "$fname" ] && usage_exit - fname=$1 - ;; - -esac -shift -done - -[ -z "$fname" ] && [ $load_all -eq 0 ] && usage_exit - - -load() { - fn=$1 - $BINDIR/ceph -c $conf class add -i $fn `$BINDIR/cclsinfo $fn` $load_opt -} - -load_all() { - all=`find $libdir -name 'libcls_*.so*' -type f`; - if [ -n "$all" ]; then - for fn in $all; do - echo Loading class: $fn: `$BINDIR/cclsinfo $fn` - load $fn - done - fi -} - -[ $load -eq 1 ] && load $fname -[ $load_all -eq 1 ] && load_all - diff --git a/src/common/ClassLibrary.cc b/src/common/ClassLibrary.cc deleted file mode 100644 index 119f6543935..00000000000 --- a/src/common/ClassLibrary.cc +++ /dev/null @@ -1,38 +0,0 @@ -// -*- 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) 2009-2011 New Dream Network - * - * 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. - * - */ - -#include "common/ClassVersion.h" -#include "common/debug.h" -#include "include/ClassLibrary.h" - -#include "common/config.h" - -ClassInfo *ClassVersionMap::get(ClassVersion& ver) -{ - ClassVersion v = ver; - tClassVersionMap::iterator iter; - - if (ver.is_default()) { - v.ver = default_ver; - } - dout(0) << "ClassVersionMap getting version " << v << " (requested " << ver << ")" << dendl; - - iter = m.find(v); - - if (iter != m.end()) - return &(iter->second); - - return NULL; -} - diff --git a/src/common/ClassVersion.h b/src/common/ClassVersion.h deleted file mode 100644 index 48813d2e036..00000000000 --- a/src/common/ClassVersion.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifndef CEPH_CLASSVERSION_H -#define CEPH_CLASSVERSION_H - -#include "include/types.h" - - -class ClassVersion -{ -protected: - std::string ver; - std::string architecture; - -public: - ClassVersion(string& v, string& a) : ver(v), architecture(a) {} - ClassVersion(const char *s, const char *a) : ver(s), architecture(a) {} - ClassVersion() {} - - void operator=(const char *s) { ver = s; } - void operator=(string& v) { ver = v; } - - friend bool operator==(const ClassVersion& v1, const ClassVersion& v2); - friend bool operator<(const ClassVersion& v1, const ClassVersion& v2); - friend std::ostream& operator<<(std::ostream& out, const ClassVersion& v); - friend class ClassVersionMap; - - void encode(bufferlist& bl) const { - __u8 struct_v = 1; - ::encode(struct_v, bl); - ::encode(ver, bl); - ::encode(architecture, bl); - } - void decode(bufferlist::iterator& bl) { - __u8 struct_v; - ::decode(struct_v, bl); - ::decode(ver, bl); - ::decode(architecture, bl); - } - - const char *str() { return ver.c_str(); } - const char *arch() { - if (architecture.length() == 0) - return "unknown"; - else - return architecture.c_str(); - } - void set_ver(const char *v) { - ver = v; - } - void set_arch(const char *arch) { - architecture = arch; - } - bool is_default() { return (ver.length() == 0); } -}; -WRITE_CLASS_ENCODER(ClassVersion) - -static int compare_single(const char *v1, const char *v2) -{ - int i1 = atoi(v1); - int i2 = atoi(v2); - - if (i1 != i2) - return (i1-i2); - - const char *p1 = v1; - const char *p2 = v2; - - while (isdigit(*p1)) - p1++; - while (isdigit(*p2)) - p2++; - - return strcmp(p1, p2); -} - -inline std::ostream& operator<<(std::ostream& out, const ClassVersion& v) -{ - out << v.ver << " [" << v.architecture << "]"; - - return out; -} -inline bool operator==(const ClassVersion& v1, const ClassVersion& v2) -{ - return (v1.ver == v2.ver) && (v1.architecture == v2.architecture); -} - -inline bool operator<(const ClassVersion& v1, const ClassVersion& v2) -{ - const char *_s1 = v1.ver.c_str(); - const char *_s2 = v2.ver.c_str(); - int l1 = strlen(_s1); - int l2 = strlen(_s2); - char s1[l1 + 1]; - char s2[l2 + 1]; - char *p1 = s1; - char *p2 = s2; - - const char *tok1, *tok2; - - memcpy(s1, _s1, l1 + 1); - memcpy(s2, _s2, l2 + 1); - - - while (true) { - tok1 = strsep(&p1, "."); - tok2 = strsep(&p2, "."); - if (!tok1 || !tok2) { - if (!tok1 && !tok2) - return (v1.architecture < v2.architecture); - if (!tok1) - return true; - return false; - } - int r = compare_single(tok1, tok2); - if (r < 0) - return true; - if (r > 0) - return false; - } -} - - -#endif diff --git a/src/include/ClassLibrary.h b/src/include/ClassLibrary.h deleted file mode 100644 index a026b5c23f6..00000000000 --- a/src/include/ClassLibrary.h +++ /dev/null @@ -1,213 +0,0 @@ -// -*- 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 - * - * 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_CLASSLIBRARY_H -#define CEPH_CLASSLIBRARY_H - -#include "include/types.h" -#include "include/encoding.h" - -#include "common/ClassVersion.h" - -struct ClassImpl { - bufferlist binary; - utime_t stamp; - version_t seq; - - void encode(bufferlist& bl) const { - __u8 v = 0; - ::encode(v, bl); - ::encode(binary, bl); - ::encode(seq, bl); - } - void decode(bufferlist::iterator& bl) { - __u8 v; - ::decode(v, bl); - ::decode(binary, bl); - ::decode(seq, bl); - } -}; - - -WRITE_CLASS_ENCODER(ClassImpl) - - -struct ClassInfo { - string name; - ClassVersion version; - - void encode(bufferlist& bl) const { - __u8 v = 1; - ::encode(v, bl); - ::encode(name, bl); - ::encode(version, bl); - } - void decode(bufferlist::iterator& bl) { - __u8 v; - ::decode(v, bl); - ::decode(name, bl); - ::decode(version, bl); - } -}; - -WRITE_CLASS_ENCODER(ClassInfo) - -typedef enum { - CLASS_INC_NOP, - CLASS_INC_ADD, - CLASS_INC_DEL, - CLASS_INC_ACTIVATE, -} ClassLibraryIncOp; - -struct ClassLibraryIncremental { - ClassLibraryIncOp op; - bufferlist info; - bufferlist impl; - - void encode(bufferlist& bl) const { - __u8 v = 1; - ::encode(v, bl); - __u32 _op = (__u32)op; - ::encode(_op, bl); - ::encode(info, bl); - ::encode(impl, bl); - } - void decode(bufferlist::iterator& bl) { - __u8 v; - ::decode(v, bl); - __u32 _op; - ::decode(_op, bl); - op = (ClassLibraryIncOp)_op; - assert( op >= CLASS_INC_NOP && op <= CLASS_INC_ACTIVATE); - ::decode(info, bl); - ::decode(impl, bl); - } - - void decode_impl(ClassImpl& i) { - bufferlist::iterator iter = impl.begin(); - ::decode(i, iter); - } - - void decode_info(ClassInfo& l) { - bufferlist::iterator iter = info.begin(); - ::decode(l, iter); - } -}; - -WRITE_CLASS_ENCODER(ClassLibraryIncremental) - -typedef map tClassVersionMap; -class ClassVersionMap -{ -public: - tClassVersionMap m; - string default_ver; - - void encode(bufferlist& bl) const { - __u8 v = 2; - ::encode(v, bl); - ::encode(m, bl); - ::encode(default_ver, bl); - } - void decode(bufferlist::iterator& bl) { - __u8 v; - ::decode(v, bl); - ::decode(m, bl); - if (v >= 2) - ::decode(default_ver, bl); - } - - tClassVersionMap::iterator begin() { return m.begin(); } - tClassVersionMap::iterator end() { return m.end(); } - - void add(ClassInfo& library) { - m[library.version] = library; - if (default_ver.length() == 0) - default_ver = library.version.ver; - } - - void remove(ClassInfo& library) { - tClassVersionMap::iterator iter; - iter = m.find(library.version); - if (iter != m.end()) { - m.erase(iter); - } - } - - ClassInfo *get(ClassVersion& ver); - void set_default(string ver) { default_ver = ver; } -}; -WRITE_CLASS_ENCODER(ClassVersionMap) - -struct ClassLibrary { - version_t version; - map library_map; - - ClassLibrary() : version(0) {} - - void add(const string& name, const ClassVersion& version) { - ClassInfo library; - library.version = version; - library.name = name; - add(library); - } - - void add(ClassInfo& library) { - ClassVersionMap& vmap = library_map[library.name]; - vmap.add(library); - } - - void remove(const string& name, const ClassVersion& version) { - map::iterator mapiter = library_map.find(name); - if (mapiter == library_map.end()) - return; - library_map.erase(mapiter); - } - - bool contains(string& name) { - return (library_map.find(name) != library_map.end()); - } - bool get_ver(string& name, ClassVersion& reqver, ClassVersion *ver) { - map::iterator mapiter = library_map.find(name); - if (mapiter == library_map.end()) - return false; - string ver_str; - ClassVersionMap& map = mapiter->second; - ClassInfo *info = map.get(reqver); - if (info) - *ver = info->version; - - return (info != NULL); - } - void encode(bufferlist& bl) const { - __u8 v = 1; - ::encode(v, bl); - ::encode(version, bl); - ::encode(library_map, bl); - } - void decode(bufferlist::iterator& bl) { - __u8 v; - ::decode(v, bl); - ::decode(version, bl); - ::decode(library_map, bl); - } -}; -WRITE_CLASS_ENCODER(ClassLibrary) - -inline ostream& operator<<(ostream& out, const ClassInfo& e) -{ - return out << e.name << " (v" << e.version << ")"; -} - -#endif diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 3718bb421f1..ef2b8b03f49 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -23,7 +23,7 @@ */ #define CEPH_OSD_PROTOCOL 8 /* cluster internal */ #define CEPH_MDS_PROTOCOL 13 /* cluster internal */ -#define CEPH_MON_PROTOCOL 5 /* cluster internal */ +#define CEPH_MON_PROTOCOL 6 /* cluster internal */ #define CEPH_OSDC_PROTOCOL 24 /* server/client */ #define CEPH_MDSC_PROTOCOL 32 /* server/client */ #define CEPH_MONC_PROTOCOL 15 /* server/client */ diff --git a/src/messages/MClass.h b/src/messages/MClass.h deleted file mode 100644 index ced1b018121..00000000000 --- a/src/messages/MClass.h +++ /dev/null @@ -1,99 +0,0 @@ -// -*- 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 - * - * 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_MCLASS_H -#define CEPH_MCLASS_H - -#include "include/ClassLibrary.h" -#include "messages/PaxosServiceMessage.h" - -enum { - CLASS_NOOP = 0, - CLASS_GET, - CLASS_SET, - CLASS_RESPONSE, -}; - -class MClass : public PaxosServiceMessage { -public: - ceph_fsid_t fsid; - deque info; - deque impl; - deque add; - version_t last; - __s32 action; - - - MClass() : PaxosServiceMessage(MSG_CLASS, 0) {} -#if 0 - MClass(const ceph_fsid_t& f, deque& e) : - PaxosServiceMessage(MSG_CLASS, 0), - fsid(f), entries(e), last(0), action(0) {} -#endif - MClass(const ceph_fsid_t& f, version_t l) : PaxosServiceMessage(MSG_CLASS, 0), fsid(f), last(l) {} - MClass(const ceph_fsid_t& f, version_t l, version_t paxos_version) : - PaxosServiceMessage(MSG_CLASS, paxos_version), fsid(f), last(l) {} -private: - ~MClass() {} - -public: - const char *get_type_name() { return "class"; } - void print(ostream& out) { - out << "class("; - switch (action) { - case CLASS_NOOP: - out << "NOOP, "; - break; - case CLASS_GET: - out << "GET, "; - break; - case CLASS_SET: - out << "SET, "; - break; - case CLASS_RESPONSE: - out << "SET, "; - break; - default: - out << "Unknown op, "; - break; - } - if (info.size()) - out << info.size() << " entries"; - if (last) - out << "last " << last; - out << ")"; - } - - void encode_payload() { - paxos_encode(); - ::encode(fsid, payload); - ::encode(info, payload); - ::encode(impl, payload); - ::encode(add, payload); - ::encode(last, payload); - ::encode(action, payload); - } - void decode_payload() { - bufferlist::iterator p = payload.begin(); - paxos_decode(p); - ::decode(fsid, p); - ::decode(info, p); - ::decode(impl, p); - ::decode(add, p); - ::decode(last, p); - ::decode(action, p); - } -}; - -#endif diff --git a/src/messages/MClassAck.h b/src/messages/MClassAck.h deleted file mode 100644 index e2e6a478cfe..00000000000 --- a/src/messages/MClassAck.h +++ /dev/null @@ -1,53 +0,0 @@ -// -*- 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 - * - * 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_MCLASSACK_H -#define CEPH_MCLASSACK_H - -#include "include/ClassLibrary.h" - -class MClassAck : public PaxosServiceMessage { -public: - ceph_fsid_t fsid; - version_t last; - - MClassAck() : PaxosServiceMessage(MSG_CLASS_ACK, 0) {} - MClassAck(ceph_fsid_t& f, version_t l) : PaxosServiceMessage(MSG_CLASS_ACK, 0), - fsid(f), last(l) {} - - MClassAck(ceph_fsid_t& f, version_t l, version_t paxos_version) : - PaxosServiceMessage(MSG_CLASS_ACK, paxos_version), fsid(f), last(l) {} -private: - ~MClassAck() {} - -public: - const char *get_type_name() { return "class_ack"; } - void print(ostream& out) { - out << "class(last " << last << ")"; - } - - void encode_payload() { - paxos_encode(); - ::encode(fsid, payload); - ::encode(last, payload); - } - void decode_payload() { - bufferlist::iterator p = payload.begin(); - paxos_decode(p); - ::decode(fsid, p); - ::decode(last, p); - } -}; - -#endif diff --git a/src/mon/ClassMonitor.cc b/src/mon/ClassMonitor.cc deleted file mode 100644 index 53b958eaa83..00000000000 --- a/src/mon/ClassMonitor.cc +++ /dev/null @@ -1,563 +0,0 @@ -// -*- 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 - * - * 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. - * - */ - - -#include "ClassMonitor.h" -#include "Monitor.h" -#include "MonitorStore.h" - -#include "messages/MMonCommand.h" -#include "messages/MClass.h" -#include "messages/MClassAck.h" - -#include "common/ClassVersion.h" -#include "common/Timer.h" - -#include "osd/osd_types.h" -#include "osd/PG.h" // yuck - -#include "common/config.h" -#include - -#define DOUT_SUBSYS mon -#undef dout_prefix -#define dout_prefix _prefix(mon, paxos->get_version()) -static ostream& _prefix(Monitor *mon, version_t v) { - return *_dout << "mon." << mon->name << "@" << mon->rank - << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) - << ".class v" << v << " "; -} - -ostream& operator<<(ostream& out, ClassMonitor& pm) -{ - std::stringstream ss; - - return out << "class"; -} - -/* - Tick function to update the map based on performance every N seconds -*/ - -void ClassMonitor::tick() -{ - if (!paxos->is_active()) return; - - update_from_paxos(); - dout(10) << *this << dendl; - - if (!mon->is_leader()) return; - -} - -void ClassMonitor::create_initial(bufferlist& bl) -{ - dout(0) << "create_initial -- creating initial map" << dendl; - ClassImpl i; - ClassInfo l; - i.stamp = g_clock.now(); - ClassLibraryIncremental inc; - ::encode(i, inc.impl); - ::encode(l, inc.info); - inc.op = CLASS_INC_NOP; - pending_class.insert(pair(i.stamp, inc)); -} - -bool ClassMonitor::store_impl(ClassInfo& info, ClassImpl& impl) -{ - int len = info.name.length() + 16; - char store_name[len]; - - snprintf(store_name, len, "%s.%s.%s", info.name.c_str(), info.version.str(), info.version.arch()); - dout(10) << "storing inc.impl length=" << impl.binary.length() << dendl; - bufferlist bl; - ::encode(impl.binary, bl); - ::encode(info, bl); - mon->store->put_bl_ss(bl, "class_impl", store_name); - dout(10) << "adding name=" << info.name << " version=" << info.version << " store_name=" << store_name << dendl; - - return true; -} - - -bool ClassMonitor::update_from_paxos() -{ - version_t paxosv = paxos->get_version(); - if (paxosv == list.version) return true; - assert(paxosv >= list.version); - - bufferlist blog; - - if (list.version == 0 && paxosv > 1) { - // startup: just load latest full map - bufferlist latest; - version_t v = paxos->get_latest(latest); - if (v) { - dout(7) << "update_from_paxos startup: loading summary e" << v << dendl; - bufferlist::iterator p = latest.begin(); - ::decode(list, p); - } - } - - // walk through incrementals - while (paxosv > list.version) { - bufferlist bl; - bool success = paxos->read(list.version+1, bl); - assert(success); - - bufferlist::iterator p = bl.begin(); - __u8 v; - ::decode(v, p); - ClassLibraryIncremental inc; - ::decode(inc, p); - ClassImpl impl; - ClassInfo info; - inc.decode_info(info); - switch (inc.op) { - case CLASS_INC_ADD: - inc.decode_impl(impl); - if (impl.binary.length() > 0) { - store_impl(info, impl); - list.add(info.name, info.version); - } - break; - case CLASS_INC_DEL: - list.remove(info.name, info.version); - break; - case CLASS_INC_ACTIVATE: - { - map::iterator mapiter = list.library_map.find(info.name); - if (mapiter == list.library_map.end()) { - } else { - ClassVersionMap& map = mapiter->second; - map.set_default(info.version.str()); - } - } - break; - case CLASS_INC_NOP: - break; - default: - assert(0); - } - - list.version++; - } - - bufferlist bl; - ::encode(list, bl); - paxos->stash_latest(paxosv, bl); - - return true; -} - -void ClassMonitor::create_pending() -{ - pending_class.clear(); - pending_list = list; - dout(10) << "create_pending v " << (paxos->get_version() + 1) << dendl; -} - -void ClassMonitor::encode_pending(bufferlist &bl) -{ - dout(10) << "encode_pending v " << (paxos->get_version() + 1) << dendl; - __u8 v = 1; - ::encode(v, bl); - for (multimap::iterator p = pending_class.begin(); - p != pending_class.end(); - p++) - p->second.encode(bl); -} - -bool ClassMonitor::preprocess_query(PaxosServiceMessage *m) -{ - dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl; - switch (m->get_type()) { - case MSG_MON_COMMAND: - return preprocess_command((MMonCommand*)m); - - case MSG_LOG: - return preprocess_class((MClass*)m); - - default: - assert(0); - m->put(); - return true; - } -} - -bool ClassMonitor::prepare_update(PaxosServiceMessage *m) -{ - dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl; - switch (m->get_type()) { - case MSG_MON_COMMAND: - return prepare_command((MMonCommand*)m); - case MSG_CLASS: - return prepare_class((MClass*)m); - default: - assert(0); - m->put(); - return false; - } -} - -void ClassMonitor::committed() -{ - -} - -bool ClassMonitor::preprocess_class(MClass *m) -{ - dout(10) << "preprocess_class " << *m << " from " << m->get_orig_source() << dendl; - - int num_new = 0; - for (deque::iterator p = m->info.begin(); - p != m->info.end(); - p++) { - if (!pending_list.contains((*p).name)) - num_new++; - } - if (!num_new) { - dout(10) << " nothing new" << dendl; - m->put(); - return true; - } - return false; -} - -bool ClassMonitor::prepare_class(MClass *m) -{ - dout(10) << "prepare_class " << *m << " from " << m->get_orig_source() << dendl; - - if (ceph_fsid_compare(&m->fsid, &mon->monmap->fsid)) { - dout(10) << "handle_class on fsid " << m->fsid << " != " << mon->monmap->fsid << dendl; - m->put(); - return false; - } - deque::iterator impl_iter = m->impl.begin(); - - for (deque::iterator p = m->info.begin(); - p != m->info.end(); - p++, impl_iter++) { - dout(10) << " writing class " << *p << dendl; - if (!pending_list.contains((*p).name)) { - ClassLibraryIncremental inc; - ::encode(*p, inc.info); - ::encode(*impl_iter, inc.impl); - pending_list.add(*p); - pending_class.insert(pair((*impl_iter).stamp, inc)); - } - } - - paxos->wait_for_commit(new C_Class(this, m)); - return true; -} - -void ClassMonitor::_updated_class(MClass *m) -{ - dout(7) << "_updated_class for " << m->get_orig_source_inst() << dendl; - ClassImpl impl = *(m->impl.rbegin()); - mon->send_reply(m, new MClassAck(m->fsid, impl.seq)); - m->put(); -} - -void ClassMonitor::class_usage(stringstream& ss) -{ - ss << "error: usage:" << std::endl; - ss << " class <--in-file=filename> [changed|overwrite|excl]" << std::endl; - ss << " class " << std::endl; - ss << " class " << std::endl; -} - -bool ClassMonitor::preprocess_command(MMonCommand *m) -{ - int r = -1; - bufferlist rdata; - stringstream ss; - - if (m->cmd.size() > 1) { - if (m->cmd[1] == "add" || - m->cmd[1] == "del" || - m->cmd[1] == "activate" || - m->cmd[1] == "list") { - return false; - } - } - - class_usage(ss); - r = -EINVAL; - - string rs; - getline(ss, rs, '\0'); - mon->reply_command(m, r, rs, rdata, paxos->get_version()); - return true; -} - - -bool ClassMonitor::prepare_command(MMonCommand *m) -{ - stringstream ss; - string rs; - int err = -EINVAL; - - // nothing here yet - if (m->cmd.size() > 1) { - if (m->cmd[1] == "add" && m->cmd.size() >= 5) { - string name = m->cmd[2]; - string ver = m->cmd[3]; - string arch = m->cmd[4]; - string opt; - - bool excl_opt = false; - bool overwrite_opt = false; - bool changed_opt; - if (m->cmd.size() >= 6) { - opt = m->cmd[5]; - if (opt == "excl") - excl_opt = true; - else if (opt == "overwrite") - overwrite_opt = true; - else if (opt == "changed") - changed_opt = true; - else { - ss << "invalid option: " << opt; - goto done; - } - } else - changed_opt = true; - - ClassImpl impl; - impl.binary = m->get_data(); - if (impl.binary.length() <= 0) { - ss << "invalid binary data"; - rs = -ENOENT; - goto done; - } - impl.stamp = g_clock.now(); - - bool in_map = list.library_map.find(name) != list.library_map.end(); - - ClassVersionMap& map = list.library_map[name]; - ClassVersion cv(ver, arch); - ClassInfo& info = map.m[cv]; - - /* do we already have it? */ - int len = name.length() + 16; - char store_name[len]; - snprintf(store_name, len, "%s.%s.%s", name.c_str(), cv.str(), cv.arch()); - bufferlist prev_bin; - bool should_store = true; - if (!overwrite_opt && in_map) { - bufferlist bl; - - int bin_len = mon->store->get_bl_ss(bl, "class_impl", store_name); - - if (bin_len > 0) { - bufferlist::iterator iter = bl.begin(); - ::decode(prev_bin, iter); - /* check to see whether we should store it */ - dout(10) << "class name exists" << dendl; - if (excl_opt) { - dout(10) << "excl flag, not overwriting" << dendl; - should_store = false; - } else if (changed_opt) { - if (prev_bin.length() == impl.binary.length() && - memcmp(impl.binary.c_str(), prev_bin.c_str(), prev_bin.length()) == 0) { - dout(10) << "class content has not changed, not doing anything" << dendl; - should_store = false; - } else { - dout(10) << "class content changed, will keep newer version" << dendl; - } - } - } - } - - ClassLibraryIncremental inc; - if (should_store) { - dout(10) << "payload.length=" << m->get_data().length() << dendl; - info.name = name; - info.version = cv; - dout(0) << "storing class " << name << " v" << info.version << dendl; - ::encode(impl, inc.impl); - ::encode(info, inc.info); - inc.op = CLASS_INC_ADD; - pending_list.add(info); - } else { - ClassImpl i; - ClassInfo l; - ::encode(i, inc.impl); - ::encode(l, inc.info); - inc.op = CLASS_INC_NOP; - } - pending_class.insert(pair(impl.stamp, inc)); - ss << "updated"; - getline(ss, rs); - paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); - return true; - } else if (m->cmd[1] == "del" && m->cmd.size() >= 5) { - string name = m->cmd[2]; - string ver = m->cmd[3]; - string arch = m->cmd[4]; - map::iterator iter = list.library_map.find(name); - if (iter == list.library_map.end()) { - ss << "couldn't find class " << name; - rs = -ENOENT; - goto done; - } - ClassVersionMap& map = iter->second; - ClassVersion v(ver, arch); - ClassInfo *info = map.get(v); - if (!info) { - ss << "couldn't find class " << name << " v" << v; - rs = -ENOENT; - goto done; - } - dout(0) << "removing class " << name << " v" << info->version << dendl; - ClassLibraryIncremental inc; - ClassImpl impl; - impl.stamp = g_clock.now(); - ::encode(*info, inc.info); - inc.op = CLASS_INC_DEL; - pending_list.add(*info); - pending_class.insert(pair(impl.stamp, inc)); - - ss << "updated"; - getline(ss, rs); - paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); - return true; - } else if (m->cmd[1] == "activate" && m->cmd.size() >= 4) { - string name = m->cmd[2]; - string ver = m->cmd[3]; - map::iterator iter = list.library_map.find(name); - if (iter == list.library_map.end()) { - ss << "couldn't find class " << name; - rs = -ENOENT; - goto done; - } - ClassInfo info; - info.name = name; - info.version.set_ver(ver.c_str()); - - dout(0) << "activating class " << name << " v" << info.version << dendl; - ClassLibraryIncremental inc; - ClassImpl impl; - impl.stamp = g_clock.now(); - ::encode(info, inc.info); - inc.op = CLASS_INC_ACTIVATE; - pending_list.add(info); - pending_class.insert(pair(impl.stamp, inc)); - ss << "updated"; - getline(ss, rs); - paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); - return true; - } else if (m->cmd[1] == "list") { - map::iterator mapiter = list.library_map.begin(); - if (mapiter != list.library_map.end()) { - ss << "installed classes: " << std::endl; - - while (mapiter != list.library_map.end()) { - ClassVersionMap& map = mapiter->second; - dout(10) << "active class version=" << map.default_ver << dendl; - tClassVersionMap::iterator iter = map.begin(); - while (iter != map.end()) { - string def_str = ""; - if (iter->second.version.str() == map.default_ver) - def_str = " [active]"; - ss << iter->second.name << " (v" << iter->second.version << ")" << def_str << std::endl; - ++iter; - } - ++mapiter; - } - } else { - ss << "no installed classes!"; - } - err = 0; - goto done; - } else { - class_usage(ss); - } - } else { - class_usage(ss); - } - -done: - getline(ss, rs, '\0'); - mon->reply_command(m, err, rs, paxos->get_version()); - return false; -} - -void ClassMonitor::handle_request(MClass *m) -{ - dout(10) << "handle_request " << *m << " from " << m->get_orig_source() << dendl; - MClass *reply = new MClass(); - - if (!reply) { - m->put(); - return; - } - - deque::iterator impl_iter = m->impl.begin(); - deque::iterator add_iter = m->add.begin(); - - for (deque::iterator p = m->info.begin(); - p != m->info.end(); - p++) { - ClassImpl impl; - ClassVersion ver; - - reply->info.push_back(*p); - switch (m->action) { - case CLASS_GET: - dout(10) << "CLASS_GET name='" << (*p).name << "' ver='" << (*p).version << "'" << dendl; - if (list.get_ver((*p).name, (*p).version, &ver)) { - int len = (*p).name.length() + 16; - int bin_len; - char store_name[len]; - snprintf(store_name, len, "%s.%s.%s", (*p).name.c_str(), ver.str(), ver.arch()); - bufferlist bl; - bin_len = mon->store->get_bl_ss(bl, "class_impl", store_name); - assert(bin_len > 0); - bufferlist::iterator iter = bl.begin(); - ::decode(impl.binary, iter); - dout(10) << "replying with name=" << (*p).name << " version=" << ver << " store_name=" << store_name << dendl; - list.add((*p).name, ver); - reply->add.push_back(true); - reply->impl.push_back(impl); - } else { - reply->add.push_back(false); - } - break; - case CLASS_SET: - { - dout(10) << "ClassMonitor::handle_request() CLASS_SET" << dendl; - bool add = *add_iter; - ClassVersionMap& cv = list.library_map[(*p).name]; - ClassInfo entry; - entry.name = (*p).name; - entry.version = (*p).version; - if (add) { - cv.add(entry); - store_impl(entry, *impl_iter); - } else { - cv.remove(entry); - } - impl_iter++; - add_iter++; - } - } - } - reply->action = CLASS_RESPONSE; - mon->send_reply(m, reply); - m->put(); -} - diff --git a/src/mon/ClassMonitor.h b/src/mon/ClassMonitor.h deleted file mode 100644 index 3b4e3fd0cf1..00000000000 --- a/src/mon/ClassMonitor.h +++ /dev/null @@ -1,71 +0,0 @@ -// -*- 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 - * - * 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_CLASSMONITOR_H -#define CEPH_CLASSMONITOR_H - -#include -#include -using namespace std; - -#include "include/types.h" -#include "msg/Messenger.h" -#include "PaxosService.h" -#include "mon/Monitor.h" - -#include "include/ClassLibrary.h" - -class MMonCommand; -class MClass; - -class ClassMonitor : public PaxosService { - void class_usage(stringstream& ss); -private: - multimap pending_class; - ClassLibrary pending_list, list; - - void create_initial(bufferlist& bl); - bool update_from_paxos(); - void create_pending(); // prepare a new pending - void encode_pending(bufferlist &bl); // propose pending update to peers - - void committed(); - - bool preprocess_query(PaxosServiceMessage *m); // true if processed. - bool prepare_update(PaxosServiceMessage *m); - - bool preprocess_class(MClass *m); - bool prepare_class(MClass *m); - void _updated_class(MClass *m); - - struct C_Class : public Context { - ClassMonitor *classmon; - MClass *ack; - C_Class(ClassMonitor *p, MClass *a) : classmon(p), ack(a) {} - void finish(int r) { - classmon->_updated_class(ack); - } - }; - - bool preprocess_command(MMonCommand *m); - bool prepare_command(MMonCommand *m); - bool store_impl(ClassInfo& info, ClassImpl& impl); - public: - ClassMonitor(Monitor *mn, Paxos *p) : PaxosService(mn, p) { } - void handle_request(MClass *m); - - void tick(); // check state, take actions -}; - -#endif diff --git a/src/mon/MonCaps.cc b/src/mon/MonCaps.cc index 54a3b8aec15..d68062b19e1 100644 --- a/src/mon/MonCaps.cc +++ b/src/mon/MonCaps.cc @@ -87,8 +87,6 @@ int MonCaps::get_service_id(string& token) return PAXOS_OSDMAP; } else if (token.compare("log") == 0) { return PAXOS_LOG; - } else if (token.compare("class") == 0) { - return PAXOS_CLASS; } else if (token.compare("auth") == 0) { return PAXOS_AUTH; } diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index e9bf6745849..d5dc29cf55e 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -30,7 +30,6 @@ #include "messages/MMonObserveNotify.h" #include "messages/MMonPaxos.h" -#include "messages/MClass.h" #include "messages/MRoute.h" #include "messages/MForward.h" @@ -50,7 +49,6 @@ #include "MonmapMonitor.h" #include "PGMonitor.h" #include "LogMonitor.h" -#include "ClassMonitor.h" #include "AuthMonitor.h" #include "osd/OSDMap.h" @@ -109,7 +107,6 @@ Monitor::Monitor(string nm, MonitorStore *s, Messenger *m, MonMap *map) : paxos_service[PAXOS_OSDMAP] = new OSDMonitor(this, add_paxos(PAXOS_OSDMAP)); paxos_service[PAXOS_PGMAP] = new PGMonitor(this, add_paxos(PAXOS_PGMAP)); paxos_service[PAXOS_LOG] = new LogMonitor(this, add_paxos(PAXOS_LOG)); - paxos_service[PAXOS_CLASS] = new ClassMonitor(this, add_paxos(PAXOS_CLASS)); paxos_service[PAXOS_AUTH] = new AuthMonitor(this, add_paxos(PAXOS_AUTH)); mon_caps = new MonCaps(); @@ -337,7 +334,7 @@ void Monitor::handle_command(MMonCommand *m) return; } if (m->cmd[0] == "class") { - classmon()->dispatch(m); + reply_command(m, -EINVAL, "class distribution is no longer handled by the monitor", 0); return; } if (m->cmd[0] == "auth") { @@ -765,10 +762,6 @@ bool Monitor::_ms_dispatch(Message *m) elector.dispatch(m); break; - case MSG_CLASS: - handle_class((MClass *)m); - break; - case MSG_FORWARD: handle_forward((MForward *)m); break; @@ -991,6 +984,8 @@ int Monitor::mkfs(bufferlist& osdmapbl) for (vector::iterator p = paxos_service.begin(); p != paxos_service.end(); p++) { PaxosService *svc = *p; + if (!svc) + continue; bufferlist bl; dout(10) << "initializing " << svc->get_machine_name() << dendl; svc->paxos->init(); @@ -1017,36 +1012,6 @@ int Monitor::mkfs(bufferlist& osdmapbl) return 0; } -void Monitor::handle_class(MClass *m) -{ - MonSession *session = m->get_session(); - if (!session) - goto done; - if (!session->caps.check_privileges(PAXOS_OSDMAP, MON_CAP_X)) { - dout(1) << "MClass received from entity without sufficient privileges " - << session->caps << dendl; - goto done; - } - - switch (m->action) { - case CLASS_SET: - case CLASS_GET: - classmon()->handle_request(m); - return; - - case CLASS_RESPONSE: - dout(10) << "got a class response (" << *m << ") ???" << dendl; - break; - - default: - dout(10) << "got an unknown class message (" << *m << ") ???" << dendl; - break; - } - - done: - m->put(); -} - bool Monitor::ms_get_authorizer(int service_id, AuthAuthorizer **authorizer, bool force_new) { dout(10) << "ms_get_authorizer for " << ceph_entity_type_name(service_id) << dendl; diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index 2ea7da1e446..f55b44e0080 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -48,7 +48,6 @@ class PaxosService; class MMonGetMap; class MMonObserve; class MMonSubscribe; -class MClass; class MAuthRotating; class MRoute; class MForward; @@ -125,7 +124,6 @@ public: class MDSMonitor *mdsmon() { return (class MDSMonitor *)paxos_service[PAXOS_MDSMAP]; } class MonmapMonitor *monmon() { return (class MonmapMonitor *)paxos_service[PAXOS_MONMAP]; } class OSDMonitor *osdmon() { return (class OSDMonitor *)paxos_service[PAXOS_OSDMAP]; } - class ClassMonitor *classmon() { return (class ClassMonitor *)paxos_service[PAXOS_CLASS]; } class AuthMonitor *authmon() { return (class AuthMonitor *)paxos_service[PAXOS_AUTH]; } friend class Paxos; @@ -150,7 +148,6 @@ public: void handle_mon_get_map(MMonGetMap *m); void handle_command(class MMonCommand *m); void handle_observe(MMonObserve *m); - void handle_class(MClass *m); void handle_route(MRoute *m); void reply_command(MMonCommand *m, int rc, const string &rs, version_t version); diff --git a/src/mon/mon_types.h b/src/mon/mon_types.h index 24d0f1cd4bd..48ca35d5322 100644 --- a/src/mon/mon_types.h +++ b/src/mon/mon_types.h @@ -19,10 +19,9 @@ #define PAXOS_MDSMAP 1 #define PAXOS_OSDMAP 2 #define PAXOS_LOG 3 -#define PAXOS_CLASS 4 -#define PAXOS_MONMAP 5 -#define PAXOS_AUTH 6 -#define PAXOS_NUM 7 +#define PAXOS_MONMAP 4 +#define PAXOS_AUTH 5 +#define PAXOS_NUM 6 inline const char *get_paxos_name(int p) { switch (p) { @@ -31,7 +30,6 @@ inline const char *get_paxos_name(int p) { case PAXOS_OSDMAP: return "osdmap"; case PAXOS_PGMAP: return "pgmap"; case PAXOS_LOG: return "logm"; - case PAXOS_CLASS: return "class"; case PAXOS_AUTH: return "auth"; default: assert(0); return 0; } diff --git a/src/msg/Message.cc b/src/msg/Message.cc index 82ebb4ecdf4..687b794fdf0 100644 --- a/src/msg/Message.cc +++ b/src/msg/Message.cc @@ -125,9 +125,6 @@ using namespace std; #include "messages/MLock.h" -#include "messages/MClass.h" -#include "messages/MClassAck.h" - #include "messages/MWatchNotify.h" #include "common/config.h" @@ -510,14 +507,6 @@ Message *decode_message(ceph_msg_header& header, ceph_msg_footer& footer, m = new MGenericMessage(type); break; - case MSG_CLASS: - m = new MClass(); - break; - - case MSG_CLASS_ACK: - m = new MClassAck(); - break; - default: dout(0) << "can't decode unknown message type " << type << " MSG_AUTH=" << CEPH_MSG_AUTH << dendl; if (g_conf.ms_die_on_bad_msg) diff --git a/src/osd/ClassHandler.cc b/src/osd/ClassHandler.cc index 6465d54ef2c..c644db6c565 100644 --- a/src/osd/ClassHandler.cc +++ b/src/osd/ClassHandler.cc @@ -2,7 +2,6 @@ #include "include/types.h" #include "msg/Message.h" #include "osd/OSD.h" -#include "messages/MClass.h" #include "ClassHandler.h" #include diff --git a/src/osd/ClassHandler.h b/src/osd/ClassHandler.h index bb4277ac770..bb6ed627379 100644 --- a/src/osd/ClassHandler.h +++ b/src/osd/ClassHandler.h @@ -2,13 +2,11 @@ #define CEPH_CLASSHANDLER_H #include "include/types.h" -#include "include/ClassLibrary.h" #include "objclass/objclass.h" #include "common/Cond.h" #include "common/Mutex.h" -#include "common/ClassVersion.h" class ClassHandler diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 1cd3133eaa6..327d4c83c7d 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -66,8 +66,6 @@ #include "messages/MPGStats.h" #include "messages/MPGStatsAck.h" -#include "messages/MClass.h" - #include "messages/MWatchNotify.h" #include "common/ProfLogger.h" diff --git a/src/tools/common.cc b/src/tools/common.cc index 68fd9fa97d8..4a2b8efb843 100644 --- a/src/tools/common.cc +++ b/src/tools/common.cc @@ -69,7 +69,6 @@ Context *resend_event = 0; #include "osd/OSDMap.h" #include "mds/MDSMap.h" #include "common/LogEntry.h" -#include "include/ClassLibrary.h" #include "mon/mon_types.h" @@ -165,35 +164,6 @@ static void handle_notify(MMonObserveNotify *notify) break; } - case PAXOS_CLASS: - { - bufferlist::iterator p = notify->bl.begin(); - if (notify->is_latest) { - ClassLibrary list; - ::decode(list, p); - // show the first class info - map::iterator mapiter = list.library_map.begin(); - if (mapiter != list.library_map.end()) { - ClassVersionMap& map = mapiter->second; - tClassVersionMap::iterator iter = map.begin(); - - if (iter != map.end()) - *g.log << now << " class " << iter->second << std::endl; - } - } else { - __u8 v; - ::decode(v, p); - while (!p.end()) { - ClassLibraryIncremental inc; - ::decode(inc, p); - ClassInfo info; - inc.decode_info(info); - *g.log << now << " class " << info << std::endl; - } - } - break; - } - case PAXOS_AUTH: { #if 0 diff --git a/src/vstart.sh b/src/vstart.sh index fee4342209f..c06b553fc1d 100755 --- a/src/vstart.sh +++ b/src/vstart.sh @@ -355,9 +355,6 @@ EOF done sleep 1 fi - - # load classes - $CEPH_BIN/cclass -c $conf -a -L .libs fi rm $osdmap_fn