osd/ReplicatedPG: no HitSet on non-primary

Signed-off-by: Sage Weil <sage@inktank.com>
mon/OSDMonitor: simplify and make 'osd pool set ...' output consistent

Signed-off-by: Sage Weil <sage@inktank.com>
OSDMap: Populate primary_temp values a little more carefully

In _get_temp_osds(), we populate temp_pg from the list in the OSDMap,
but we also skip anybody in the list who's down. We need to account
for those skips when setting the primary. It's easy enough to do -- just
look at the output pg_temp list instead of the OSDMap's starting one.

Fixes: #7177

Signed-off-by: Greg Farnum <greg@inktank.com>
libc++: create portable smart ptr / hash_map/set

Creates ceph:: namespaced versions of smart pointers and unordered map
and sets.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
libc++: use ceph:: namespaced data types

Switches the implemetnation of smart pointers and unordered map/set to
use the ceph:: versions.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
libc++: use ceph::shared_ptr in installed header

librados.hpp uses std::tr1::shared_ptr which may not be available such
as in libc++. This switches the use to ceph::shared_ptr and as a result
also ships include/memory.h for the definition.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
libc++: avoid hash re-definitions

The definitions of hash<> for int64_t/uint64_t that were not available
on i386 in the __gnu_cxx namespace are available when we switch over to
std::tr1 namespace so we remove them to avoid the redefinition errors.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
libc++: fix null pointer comparison

This error is thrown when comparing a shared_ptr to NULL. To resolve
this we just use shared_ptr::operator bool that checks if the stored
pointer is null.

In C++11 the shared_ptr can be compared to nullptr, but as of yet I have
not come up with a good compatibility fix.

Details:

os/MemStore.cc:259:30: error: use of overloaded operator '!=' is ambiguous (with operand types 'ObjectRef' (aka 'shared_ptr<MemStore::Object>') and 'long')
  return (c->get_object(oid) != __null);
          ~~~~~~~~~~~~~~~~~~ ^  ~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/memory:4787:1: note: candidate function [with _Tp = MemStore::Object]
operator!=(const shared_ptr<_Tp>& __x, nullptr_t) throw()
^
os/MemStore.cc:259:30: note: built-in candidate operator!=(int, long)
  return (c->get_object(oid) != __null);
                             ^
os/MemStore.cc:259:30: note: built-in candidate operator!=(unsigned __int128, long)
os/MemStore.cc:259:30: note: built-in candidate operator!=(unsigned long long, long)
    .....
1 error generated.
make[3]: *** [os/MemStore.lo] Error 1

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
Merge pull request #1111 from ceph/wip-osdmap-7177

OSDMap: Populate primary_temp values a little more carefully

Reviewed-by: Sage Weil <sage@inktank.com>
osd: ignore num_objects_dirty for old pools

Way back in a0ed9c20048750fd4b2c7ce0339fa8b20ef08ca3 we introduced the
dirty flag, but we did not track it in the stats until much later in
c561d5ea22c335e4c05fdc16ca8fb41f75f89d81.  Unfortunately this interval
spans the emperor release.  To avoid making scrub error out and require
repair on *any* of those old pools, flag stats that were encoded before
now such that the dirty stats are ignored.  Clear the flag if we *do*
do a repair so that it will be tracked properly thereafter.

Signed-off-by: Sage Weil <sage@inktank.com>
rgw: Document fields for access/secret key

The field name mapping for access vs secret key is not clear, this
helped in debugging.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
rgw: Fix signature variable naming/failure print

The signature variables for expected vs got are poorly named, and this
lead them being swapped in the signature validation failure print.
Change them to 'expected' and 'received' and make the related temporary
variables consistent to match.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
rgw: Use correct secret key for POST authn

The POST authentication by signature validation looked up a user based
on the access key, then used the first secret key for the user. If the
access key used was not the first access key, then the expected
signature would be wrong, and the POST would be rejected.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Merge branch 'bclibcoop/next-cors' of https://github.com/BCLibCoop/ceph into next

Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
Missing a key for perm 'w' in permmap (src/pybin/ceph_rest_api.py:277)
It leads to a 500 error when getting mds help info via rest api.
Changed "w" to "rw" in MonCommands.h

Fixes: #7180
Signed-off-by: Kai Zhang <kazhang2@cisco.com>
Merge pull request #1112 from kazhang/wip-7180

Fix #7180 in ceph_rest_api

Reviewed-by: Sage Weil <sage@inktank.com>
Fix #7187: Include all summary items in JSON health output

Signed-off-by: John Spray <john.spray@inktank.com>
Merge pull request #1117 from jcsp/wip-7187

Fix #7187: Include all summary items in JSON health output

Backport: emperor, dumpling
Reviewed-by: Sage Weil <sage@inktank.com>
common: fix bufferlist::append(istream) test

bufferlist::append(istream) now filters out empty lines; reflect this in
the test

Signed-off-by: Loic Dachary <loic@dachary.org>
(cherry picked from commit 4b5f2570e9208bc9311267e93401d6078370807a)
osd: Add op_process_latency in perf counter

Fixes: #7167

Signed-off-by: Ray Lv <xiangyulv@gmail.com>