Guang Yang [Fri, 13 Feb 2015 09:19:30 +0000 (09:19 +0000)]
osd: number of degraded objects in EC pool is wrong when there is OSD down(in)
With EC pool (crush rule choose indep), when there is an OSD down, the size of the 'acting' list does not change (CRUSH_ITEM_NONE is used to replace the down OSD), in this case, 'actingset' should be used to calculate the degraded objects.
Implement check_experimental_feature_enabled so that it returns the
message instead of unconditionally displaying it via derr. It allows the
caller to display it in another context.
Yan, Zheng [Thu, 12 Feb 2015 12:24:45 +0000 (20:24 +0800)]
mds: fix decoding of InodeStore::oldest_snap
There is no ENCODE_START/FINISH block when encoding inode that
embedded in dentry. So we can't use encoding version to check
if the buffer contains InodeStore::oldest_snap. Instead, we check
if the buffer iterator reaches end of buffer.
Loic Dachary [Tue, 3 Feb 2015 15:14:23 +0000 (16:14 +0100)]
ceph.spec.in: junit always except for EPEL 6
The package was renamed a long time ago (around the Fedora 15
timeframe). The "junit4" name is only relevant for EPEL 6. For EPEL 7
and Fedora 20, the "junit" package has "Provides: junit4". And most
recently, in the junit package that ships in Fedora 21 and 22, the
package maintainer dropped the old Provides: line.
Greg Farnum [Tue, 10 Feb 2015 22:18:52 +0000 (14:18 -0800)]
MDSMonitor: do not allow MDS to transition from STATE_STOPPING
They can only go into STATE_STOPPED. I was a little concerned
that some of the rejoin code might inadvertently allow a stopping
MDS to end up active, but after a little auditing it looks like
that all behaves properly and this is an invariant we maintain.
rgw: Swift API. The second way of specifying desirable response format.
OpenStack Object Storage API v1 defines two ways for the client to tell which response format it understands.
Until now RGW looked at query variable 'format' only. This commit implements the second way of setting the format by
providing 'Accept' HTTP-header with the desirable response mime-type.
Yehuda Sadeh [Fri, 6 Feb 2015 02:18:23 +0000 (18:18 -0800)]
rgw: remove multipart entries for bucket index when aborting
Fixes #10719
Since we now let the gc clean the aborter multipart uploads, we need to
clear the multipart entries from the bucket index when cleaning up the
meta object.
Yehuda Sadeh [Tue, 10 Feb 2015 02:16:13 +0000 (18:16 -0800)]
rgw: encode rgw_obj::orig_obj
We weren't encoding orig_obj, however, it's now needed so that we can
call get_index_key() on decoded objects. Only encode/decode it if ns or
instance are not empty.
qiushanggao [Tue, 20 Jan 2015 02:27:50 +0000 (10:27 +0800)]
Fix bug: When run Test_filejournal testcase with gtest argument, all of testcases is failed.
when run testcase with gtest argument, for example, with argument --gtest_output=xml:/root/reports/ceph_test_cls_version.xml,
then the test result is failed, because of the test program use the first argument as the journal file name. Signed-off-by: shanggao qiu <qiushanggao@qq.com>
Greg Farnum [Fri, 6 Feb 2015 05:12:17 +0000 (21:12 -0800)]
fsync-tester: print info about PATH and locations of lsof lookup
We're seeing the lsof invocation fail (as not found) in testing and nobody can
identify why. Since attempting to reproduce the issue has not worked, this
patch will gather data from a genuinely in-vitro location.
Josh Durgin [Tue, 10 Feb 2015 04:50:23 +0000 (20:50 -0800)]
rados.py: keep reference to python callbacks
If we don't keep a reference to these, the librados aio calls will
segfault since the python-level callbacks will have been garbage
collected. Passing them to aio_create_completion() does not take a
reference to them. Keep a reference in the python Completion object
associated with the request, since they need the same lifetime.
Josh Durgin [Mon, 9 Feb 2015 23:00:18 +0000 (15:00 -0800)]
locally disable pragma warnings on gcc < 4.6
diagnostic push|pop are not present before 4.6, so each use gives a
warning. Temporarily ignore these by disabling/reenabling -Wpragmas.
Note that this means the other disabled warnings are not scoped on
old gcc. I don't think this is worth fixing, since newer gcc will
respect the scope and show us the warnings outside of it.
Jason Dillaman [Thu, 5 Feb 2015 06:20:00 +0000 (01:20 -0500)]
librbd: consolidate all async operation flush logic
librbd has three different methods for flushing asynchronous
operations. These have all been consolidated down to a single,
shared method to fix an existing issue and simplify maintenance
going forward.
Fixes: #10783 Signed-off-by: Jason Dillaman <dillaman@redhat.com> Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Mykola Golub [Wed, 21 Jan 2015 13:47:25 +0000 (15:47 +0200)]
mon: noforward flag for commands that are not supposed to be forwarded
For not a monitor leader, if a received command is not supported
locally, but is supported by the leader, it is forwarded to the
leader.
For some commands that may have undesirable behaviour. E.g. for the
recently added "ceph tell mon.x version", if the mon.x is not a leader
and does not support "version" command yet, but the leader does, the
user will receive the version of the leader, and can't be actually
sure about a non leader version.
Fix this by adding noforward flag to commands that are not supposed to
be forwarded. Set the flag for "version" command. Although there are
other non-forwardable commands (like injectargs) it is not necessary
to add the flag to them, as the commands are too old to suffer from
the describe problem.
John Spray [Sun, 8 Feb 2015 14:47:04 +0000 (15:47 +0100)]
doc: remind user to calculate the correct max port
This was kind of easy to miss, and if users
just paste in the command as given then their
first few OSDs will work, and from their
4th OSD onwards things will get weird.
Haomai Wang [Sun, 8 Feb 2015 07:47:39 +0000 (15:47 +0800)]
AsyncConnection: fix incorrect condition for exchanging in_seq
Originally we use "in_seq==0" to judge whether need to exchange in_seq,
it's wrong when peer side already receive message and need to reply new
in_seq to this side.
Now use "is_reset_from_peer" to indicate whether not need to exchange