Ceph is a distributed object, block, and file storage platform
Go to file
Sage Weil f60702822a paxos: fix sharing of learned commits during collect/last
We can learn either an uncommitted or committed value during the
collect/last recovery phase.  For the committed values, we need to remember
each peer's first/last_committed and share only at the end to avoid a
situation like:

 - mon.1 has same last_committed as us
 - mon.2 has newer last_commited, we save it
 - mon.3 has same last_commited as mon.1, we share new value
 - done... but mon.1 never got mon.2's newer commit.

Instead, save the commit sharing until the collect process completes, so
we know that any committed value learned from anyone is shared with
everyone who needs it.

This fixes a crash like

mon/Paxos.cc: In function 'void Paxos::handle_begin(MMonPaxos*)', in thread '7fd91192c700'
mon/Paxos.cc: 400: FAILED assert(begin->last_committed == last_committed)
 ceph version 0.38-208-g9aabd39 (commit:9aabd3982cceb7e8489412b4bfbb4c2387880de2)
 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x76) [0x72454e]
 2: (Paxos::handle_begin(MMonPaxos*)+0x363) [0x6499ef]
 3: (Paxos::dispatch(PaxosServiceMessage*)+0x2b4) [0x64db2c]
 4: (Monitor::_ms_dispatch(Message*)+0xdc6) [0x6205c2]
 5: (Monitor::ms_dispatch(Message*)+0x3a) [0x62831a]
 6: (Messenger::ms_deliver_dispatch(Message*)+0x63) [0x7d1f31]
 7: (SimpleMessenger::dispatch_entry()+0x7c2) [0x7bb786]
 8: (SimpleMessenger::DispatchThread::entry()+0x2c) [0x6070fa]
 9: (Thread::_entry_func(void*)+0x23) [0x6f3f69]
 10: (()+0x7971) [0x7fd9153a1971]
 11: (clone()+0x6d) [0x7fd913c3092d]

Signed-off-by: Sage Weil <sage@newdream.net>
2011-11-20 14:26:09 -08:00
admin doc: add documentation for librbd python bindings 2011-09-30 11:37:15 -07:00
debian use libuuid for fsid 2011-11-11 20:48:59 -08:00
doc mon: add '--fsid foo' arg for setting generated monmap fsid 2011-11-12 13:16:30 -08:00
fusetrace reorganized source tree 2007-12-19 13:28:33 -08:00
keys doc: Write about deb installation. 2011-09-02 12:34:05 -07:00
man rbd: Document the rbd showmapped cmd 2011-11-07 09:27:15 -08:00
qa workunits: rados python workunit should be executable 2011-11-14 08:18:47 -08:00
src paxos: fix sharing of learned commits during collect/last 2011-11-20 14:26:09 -08:00
udev udev: c* -> ceph-* rename: missed crbdnamer. 2011-09-23 15:55:01 -07:00
wireshark Bug #98: Unique names for include guards 2010-06-17 10:47:37 -07:00
.gitignore gitignore: just ignore all test_ files 2011-11-03 13:59:25 -07:00
AUTHORS update authors 2010-07-02 10:14:41 -07:00
autogen.sh Use Google Test framework for unit tests. 2011-01-10 15:19:45 -08:00
ceph.spec.in use libuuid for fsid 2011-11-11 20:48:59 -08:00
ChangeLog first pass at autoconf and automake 2008-01-27 20:45:29 -08:00
CodingStyle CodingStyle: whitespace 2011-07-14 10:50:08 -07:00
configure.ac use libuuid for fsid 2011-11-11 20:48:59 -08:00
COPYING first pass at autoconf and automake 2008-01-27 20:45:29 -08:00
do_autogen.sh do_autogen: add -H for --with-hadoop 2011-04-25 11:05:43 -07:00
Doxyfile Integrate Doxygen into Sphinx docs. 2011-08-29 17:27:14 -07:00
INSTALL autoconf changes to build on a debian/testing machine 2008-02-01 09:59:44 -08:00
Makefile.am Makefile: include run-cli-tests-maybe-unset-ccache in dist tarball. 2011-09-23 15:55:01 -07:00
NEWS first pass at autoconf and automake 2008-01-27 20:45:29 -08:00
README c* -> ceph-* 2011-09-22 15:08:25 -07:00
RELEASE_CHECKLIST v0.22 2010-10-15 15:34:44 -07:00
SubmittingPatches SubmittingPatches: initial version 2010-10-28 14:55:09 -07:00

Ceph - a scalable distributed storage system
-----------------------------------------

Please see http://ceph.newdream.net/ for current info.

----

To build the server daemons, and FUSE client,

$ ./autogen.sh
$ ./configure
$ make

(Note that the FUSE client will only be built if libfuse is present.)

----

A quick summary of binaries that will be built in src/

daemons:
 ceph-mon -- monitor daemon.  handles cluster state and configuration
         information.
 ceph-osd -- storage daemon.  stores objects on a given block device.
 ceph-mds -- metadata daemon.  handles file system namespace.
 ceph-fuse -- fuse client.

tools:
 ceph -- send management commands to the monitor cluster.
 rados -- interact with the object store
 rbd -- manipulate rados block device images
 monmaptool -- create/edit mon map
 osdmaptool -- create/edit osd map 
 crushtool -- create/edit crush map

scripts:
 mkcephfs -- cluster mkfs tool
 init-ceph -- init.d start/stop script