John Wilkins [Wed, 23 May 2012 00:10:43 +0000 (17:10 -0700)]
doc/config-cluster/chef.rst <-fixed an error in upload command.
doc/config-cluster/deploying-ceph-conf.rst <-added sudo. required.
doc/config-cluster/deploying-ceph-with-mkcephfs.rst <-cd to /etc/ceph so keyring goes there.
doc/install/chef.rst <-added update and install opscode-keyring, and upgrade.
doc/install/debian.rst <-added ceph-common to the install
Signed-off-by: John Wilkins <john.wilkins@dreamhost.com>
Sage Weil [Tue, 22 May 2012 00:18:35 +0000 (17:18 -0700)]
objectcacher: fix infinite loop in flusher_entry
The addition of accounting for simultaneous writers in f3043fee3e22600cb4349072287842db129588eb could lead to an infinite
loop. This could happen because starting a flush doesn't decrease
dirty_waiters, only the number of dirty bytes (they change to tx). If
dirty_waiters is more than target_dirty, the loop would continue
forever while holding the object cacher lock, since the object cacher
lock is required by the write callbacks.
The extra while (!flusher_stop) loop is unnecessary, so remove it.
This means the flusher thread always releases the lock after starting
flushing, so progress can be made.
Signed-off-by: Sage Weil <sage@inktank.com> Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
John Wilkins [Fri, 18 May 2012 20:54:51 +0000 (13:54 -0700)]
doc: misc updates
doc/architecture.rst - removed broken reference.
doc/config-cluster - cleanup and added chef
doc/install - Made generic to add Chef, OpenStack and libvert installs
doc/init - Created light start | stop and health section
doc/source - Removed $ from code examples. Trimmed paras to 80 char
doc/images - Added preliminary diagram for Chef.
doc/rec - Added reference to hardware. Added filesystem info.
Signed-off-by: John Wilkins <john.wilkins@dreamhost.com>
Sage Weil [Mon, 21 May 2012 22:07:42 +0000 (15:07 -0700)]
mon: fix 'no initial monitors' warning
It is valid to start with no initial monitors even when the initial set is
not defined; it just means that we are only able to join a cluster, and
never able to form a new one.
Sage Weil [Sun, 20 May 2012 22:32:19 +0000 (15:32 -0700)]
keys: new release key
New release key for signing packages. Signed by me (the old release key)
so that existing apt keyrings should be sufficient. New keyrings should
just add the new release key.
Sage Weil [Fri, 18 May 2012 01:13:57 +0000 (18:13 -0700)]
mon: send join message if we are in monmap with blank addr
Being in the monmap with a blank ip is possible if we were a initial member
seed but weren't part of the first election/quorum. If that's the case,
first update ourselves before we try to call an election and join the
quorum.
Sage Weil [Fri, 18 May 2012 01:17:18 +0000 (18:17 -0700)]
mon: simplify/clean up dummy addrs used for initial members
Use a complete blank IP, but set the nonce. This way
entity_addr_t::is_blank_ip() works. We're also outside of the namespace of
possible addrs that the mons *could* use, which is a bit cleaner.
Sage Weil [Fri, 18 May 2012 00:51:47 +0000 (17:51 -0700)]
mon: set our addr when populating monmap with initial members
If the seed monmap doesn't contain us and we are populating it with
initial members, and one of those members is us, use our addr instead of
using a dummy one.
Sage Weil [Fri, 18 May 2012 00:50:49 +0000 (17:50 -0700)]
mon: add peers probing us to extra peer list
If we are probed by another monitor, add them to our extra probe list. This
lets us rely on the active probe/reply to gather information and not infer
anything from here.
Sage Weil [Thu, 17 May 2012 21:50:31 +0000 (14:50 -0700)]
qa: add a bunch of mon bootstrap tests
These's are comprehensive because a lot of the startup logic is about
picking a local address, and it's difficult to do test that on a single
host. They cover the other variables surrounding mon bringing up, though:
- part of initial monmap, or not
- new nodes given all prior nodes, or not
- new nodes have self included in monmap seed, or not
- initial quorum members
Sage Weil [Thu, 17 May 2012 21:46:46 +0000 (14:46 -0700)]
mon: ignore election messages from outside monmap
These shouldn't(tm) happen with new code, but with old code they do. And
if we get them, elector can try to monmap->get_inst() on them and crash.
Throw them out here; they're nonsense from our perspective anyway if the
peer isn't part of our monmap.
Sage Weil [Thu, 17 May 2012 20:27:30 +0000 (13:27 -0700)]
mon: limit initial quorum to mon_initial_members
This is a two-stage process.
* If we start up, and have never joined a quorum, and initial members are
specified, only include them in the monmap; put all others in the
extra probe list.
* We add missing members if necessary to make the monmap (and initial
quorum) the right size.
* If we probe someone that *has* participated in a successful quorum, we
get their monmap, and restart, so this is moot.
* We only call an election to create a new cluster if outside_quorum gets
big enough (it will only include initial members) and if it includes us.
Sage Weil [Thu, 17 May 2012 19:36:41 +0000 (12:36 -0700)]
mon: use current monmap for initial quorum
This makes a bit more sense. Don't use the seed monmap, but use the one
we ended up with when we formed our first quorum. This will do a better
job of picking up names of peers, and also ensure we get a map based on
the mon initial members (if specified).
Sage Weil [Thu, 17 May 2012 18:08:38 +0000 (11:08 -0700)]
mon: take probed peer's monmap if it has ever joined a quorum
If we probe a peer and their monmap has actually been part of a started
cluster/quorum, and ours hasn't, take theirs. Comparing versions isn't
sufficient.
Sage Weil [Thu, 17 May 2012 18:09:24 +0000 (11:09 -0700)]
monmaptool: don't increment epoch on modification
This just confuses things, because a manually manipulated map might have
some epoch number that bears no relation to the actual published/committed
maps.
Sage Weil [Thu, 17 May 2012 18:00:46 +0000 (11:00 -0700)]
mon: clean up "joined" flag
- check flag on init, keep in memory
- set flag only when we are active and have a committed monmap. i.e., when
we are active participants in a bootstrapped/created mon cluster.
When a given log level L was specified, we would reply with all the
messages of "level L and below"; for instance, for a 'log-error' we would
present all the messages of level 'error', 'warn', 'sec', 'info' and
'debug'.
We shouldn't be doing it that way, so we just inverted the filter
condition. Now we show only 'L and above'; i.e., for a log level of
'log-warn', show only 'log-warn' and 'log-error'.
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>