The addition of the value is completely backward compatible, but if the
mon feature bits don't match it can cause monitor scrub noice (due to the
parallel OSDMap encoding). Avoid that by only adding the new field if the
feature (which was added 2 patches after the encoding, see
3152faf79f and
45e79a17a9.
Fixes: #8815
Backport: firefly
Signed-off-by: Sage Weil <sage@redhat.com>
This is left over from db3fd1152a
when we made the HitSet stuff incompat, but that behavior was reverted by
dc3ce58add, leaving this cruft behind.
Signed-off-by: Sage Weil <sage@redhat.com>
`/etc/init.d/rbdmap start` was doing `mount -a`. Although (arguably)
`mount -a -O _netdev` could be less disruptive, it's not RBD mapping job to
mount unrelated devices and potentially do it at the wrong time.
Solution is to call `mount {device}` which works as expected and mounts
device even if it given in form `mount /dev/rbd/pool/imagename` while
`/etc/fstab` uses UUID or LABEL notation.
Furthermore this commit
* fixes global exit code (it was always 0): now it is 0 only when
all devices were (un)mounted successfully; otherwise non-zero.
* replaces `mount -a` with per-device post-mapping `mount {dev}`
* show mapping progress using LSB functions per device instead of for
{start|stop} invocation.
* capture output of `(u)mount` (if any) and report it as "info".
Signed-off-by: Dmitry Smirnov <onlyjob@member.fsf.org>
In func do_bench_write if io_size is zero,it can cause floating point execption.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Make sure gets and sets of tiering-specific variables succeed on tier
pools and fail on non-tier pools.
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
We may not crash your cluster, but you'll know that this is not something
that should have happened. Big letters makes it obvious. We'd make them
red too if we bothered to look for the ANSI code.
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
Implement the KeyValueDB interface using libkinetic_client,
and allow it to be configured as the backend for the KeyValueStore,
running the entire OSD on it.
This prototype implementation has no transaction safety, and is
only suitable as a proof of concept. Since the libkinetic_client
API does not provide reverse iteration over keys without also reading
the value off disk, it implements iterators in a very slow but correct way.
These are used heavily by the KeyValueDB callers, so this is a bottleneck
in performance.
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Only decode the new field if it is a new struct.
Fixes: #8804
Backport: firefly
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
There's nothing wrong with make_pair(), but there is some type
resolution issue in these instances, at least with GCC 4.8.
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
The common formatting for these 64bit types is not C++ 2011
clean.
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Conflicts:
src/common/perf_counters.cc
A reference to h->seq passed to std::pair ostensibly could not bind
because the header structure is packed. At first this looked like
a more general unaligned access problem, but the only location the
compiler rejects is a false positive.
Signed-off-by: Matt Benjamin <matt@linuxbox.com>
This reverts commit 29c33f0c05.
We don't need the debugging any more, and having two separate fsx runners
already caused one update-in-the-wrong-place issue.
Signed-off-by: Greg Farnum <greg@inktank.com>