min_size should never be set to 0 on a pool. config.h
now has a helper to determine the correct default value.
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Make sure we have our rotating keys before we start booting. This
ensures we can open connections with peers *before* we add ourselves to
the osdmap. This behaviors marks instances of #3292, although it is
not clear whether it is responsible for the actual crash.
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Sam Just <sam.just@inktank.com>
Consider the following logs:
a) 10'10(5'7) foo
12'11(4'3) bar
b) 10'10(5'7) foo
13'11(4'4) baz
When the osd with a merges primary log b, bar is deleted and
added to the missing set with need=4'3 and have=0'0. If
the osd then dies after deleting bar, but before recovering
bar, PG::read_state() on start up will fail to re-add bar
to the missing set, and bar will be incorrect on that osd.
Now, (4'3, bar) will be added to the divergent_priors mapping
to be scanned during read_state along with the log.
Signed-off-by: Samuel Just <sam.just@inktank.com>
Previously, we asserted that a log entry with a divergent
prior_version must be a clone. Consider the following
case:
6'11(6'2) m foo
7'12(6'3) m bar
7'13(7'12) m bar
If this is merged with:
6'11(6'2) m foo
8'12(6'4) m baz
we will hit the assert.
Merging a divergent entry with prior_version after current
tail, but not in the log implies that prior_version was a
divergent entry which we have already merged. The missing
set and filestore collection must therefore have already
been adjusted.
Signed-off-by: Samuel Just <sam.just@inktank.com>
The OpWQ PriorityQueue replaces OSD::op_queue, PG::op_queue,
and PG::qlock. The syncronization is now done as part of the
usual WorkQueue syncronization pattern.
Signed-off-by: Samuel Just <sam.just@inktank.com>
Move client creation to the section on setting up client auth, so you
don't skip it if you already have pools created.
Move CEPH_ARGS setting to the section on configuring OpenStack, since
it's a change for the OpenStack services, not purely ceph client
configuration.
A couple people were confused by the placement of these parts, and
they make more sense in these sections.
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
The fs client can't handle ENOENT from the cache, but librbd wants it.
Also, the fs client will send down multiple ObjectExtents per io, but that
is incompatible with the ENOENT behavior.
Indicate which behavior we want via the ObjectSet, and update librbd to
explicitly ask for it. This fixes the fs client, which is currently
broken (it returns ENOENT on read).
Signed-off-by: Sage Weil <sage@inktank.com>