The previous commit a51fbf2d fixed some of these but broke the others.
The root of the difficulty is that rgw_op.set_subuser() has a magical
side effect of setting rgw_op.user_id, but the code pretends that it's
one of many other setters.
Unfortunately, getting rid of the side effect is not easy here.
It is exactly what we want for historic compatibility, so killing
the magic requires a pile of code elsewhere, or worse, implicit
ordering requirements (invoke set_subuser before set_user or else).
For now we doubled down on the magic. This way at least it is all
in one place and you do not have to flip pages of code to understand
what is going on.
Kefu Chai [Thu, 11 Feb 2016 12:08:32 +0000 (20:08 +0800)]
tests: ceph-disk.sh: use "readlink -f" instead for fullpath
if $PATH has ".." in it, and the program happen to be located in
"..", `which program` will print `../program` instead of its fullpath,
so we should always use `readlink -f` for the fullpath.
Boris Ranto [Thu, 11 Feb 2016 11:03:06 +0000 (12:03 +0100)]
selinux: Allow log files to be located in /var/log/radosgw
We do suggest users to put their logs in /var/log/radosgw in the
documentation at times. We should also label that directory with
ceph_var_log_t so that ceph daemons can also write there.
The commit also updates the man page for this policy. This man page is
automatically generated by
* sepolicy manpage -p . -d ceph_t
and have not been reloaded in a while. Hence, it contains few more
changes than the new radosgw directory.
Jianjian Huo [Thu, 11 Feb 2016 01:44:33 +0000 (20:44 -0500)]
os/bluestore: fix a typo in SPDK path parsing
SPDK block path with bluestore is something like spdk:55cd2e404bd73932.
The size of the prefix to compare should be 5.
sizeof(SPDK_PREFIX)-1 returns 5, while sizeof(SPDK_PREFIX-1) returns 8.
Signed-off-by: Jianjian Huo <samuel.huo@gmail.com>
Kefu Chai [Fri, 5 Feb 2016 07:56:55 +0000 (15:56 +0800)]
log: remove "boost/asio.hpp" from Log.h
graylog uses boost/asio.hpp which introduces the link-time dependency on
libboost_system to the compilation units which includes Log.h and
LogClient.h. so it appears that perfglue/heap_profiler.cc is referencing
libboost_system.so, and fails the cmake build of all tests which links
against tcmalloc.
in this change, we:
* remove unnecessary #includes from Graylog.h
* forward declare Graylog class, so that "Graylog.h" is not included in
any header files to avoid the link-time dependency pollution
root [Tue, 9 Feb 2016 20:03:24 +0000 (12:03 -0800)]
rgw: user quota may not adjust on bucket removal
Description:
If the user/admin removes a bucket using --force/--purge-objects options with s3cmd/radosgw-admin respectively, the user stats will continue to reflect the deleted objects for quota purposes, and there seems to be no way to reset them. User stats need to be sync'ed prior to bucket removal.
Solution:
Sync user stats before removing a bucket.
Fixes: #14507 Signed-off-by: Edward Yang eyang@us.fujitsu.com
John Spray [Tue, 9 Feb 2016 12:15:56 +0000 (12:15 +0000)]
osdc/Objecter: drop lock to unregister asok hooks
unregister blocks until any running hook has
completed, and that running hook might
be one that takes the objecter lock, so you
can't hold it while unregistering.
Piotr Dałek [Mon, 8 Feb 2016 13:05:03 +0000 (14:05 +0100)]
msg/simple: significantly reduce minimal memory usage of Pipes
Pipe class instance weights over 17 KB in size, and most of it is used by
msgvec structure, which weights 16 KB. Reduce it to 4KB by reducing
number of iovecs in this array down to 256 (= 1024/4). This won't cause
noticeable perf decrease, as even under extreme loads, we exceed 256 used
iovecs in only less than 1% of all write calls. For high-density nodes and
large clusters, savings will exceed hundreds of megabytes per node.
Signed-off-by: Piotr Dałek <piotr.dalek@ts.fujitsu.com>
Piotr Dałek [Mon, 8 Feb 2016 12:21:55 +0000 (13:21 +0100)]
msg/async: significantly reduce minimal memory usage of AsyncConnections
AsyncConnection class instance weights over 18 KB in size, and most of it
is used by msgvec structure, which weights 16 KB. Reduce it to 4KB by reducing
number of iovecs in this array down to 256 (= 1024/4). This won't cause
noticeable perf decrease, as even under extreme loads, we exceed 256 used
iovecs in only less than 1% of all write calls. For high-density nodes and
large clusters, savings will exceed hundreds of megabytes per node.
Signed-off-by: Piotr Dałek <piotr.dalek@ts.fujitsu.com>
Kefu Chai [Mon, 8 Feb 2016 05:37:43 +0000 (13:37 +0800)]
crush/CrushTester: workaround a bug in boost::icl
the boost::icl in boost v1.55 has a bug when working with libc++,
> Assertion failed: (this->_map.find(inter_val) == this->_map.end()),
> function gap_insert, file
> /usr/local/include/boost/icl/interval_base_map.hpp, line 555.
see https://svn.boost.org/trac/boost/ticket/9501 and
https://svn.boost.org/trac/boost/ticket/9987
the bug was fixed in boost v1.56. as a workaround we use the the
`set` from `boost::container` instead of the `std::set` from libc++.
we should drop this workaround once we bump the supported boost
version from 1.42 to 1.56.
This Op would change the tmp osd_primary_affinity, but the osd_primary_affinity
is declared as ceph::shared_ptr, so this would change the osdmap too. When this
round encode_pending is proposed fail. We may call encode_pending again, but the
osdmap is changed last round, so the pending_inc would be wrong.
Fixes: #14686 Signed-off-by: Xinze Chi <xinze@xsky.com>
Kefu Chai [Sat, 6 Feb 2016 16:26:59 +0000 (00:26 +0800)]
librbd: replace atomic_t with std::atomic<int>
it fails to compile with clang, and turns out it should be
`ceph::atomic_t`, but I take this chance to replace it
with std::atomic<> to phase out atomic_t.
actually we are verifying if the variable is an instance of
specified class. for example, the `prepare.data` should be
a `PrepareFilestoreData` if `--bluestore` is not specified.
Haomai Wang [Sat, 6 Feb 2016 06:52:43 +0000 (14:52 +0800)]
AsyncConnection: avoid debug log in cleanup_handler
local connection will be stop and call cleanup_handler after messenger
is down
introduced in
commit(https://github.com/ceph/ceph/commit/9da2fffd31562ed5d0b795d7862b3ebec66aba40)