Jason Dillaman [Sat, 14 Feb 2015 06:24:44 +0000 (01:24 -0500)]
librbd: enforce write ordering with snapshot
The md_lock is now held for reading when scheduling write/discards.
Since snap_create now holds the lock for writing and flushes all
pending IO, write/discard operations will now be consistent for a
given request across objects.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Jason Dillaman [Sat, 7 Feb 2015 14:13:10 +0000 (09:13 -0500)]
librbd: use separate files for snapshot object maps
Instead of relying on the built-in object snapshot support,
create a separate object map object for each image snapshot.
This will allow a future repair utility to rebuild the object
map for an image's snapshots.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Mapped IoCtx::write_full to existing test method used by the
ObjectWriteOperation::write_full API method. Also added missing
cls_log implementation for debugging.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Jason Dillaman [Wed, 4 Feb 2015 07:44:50 +0000 (02:44 -0500)]
cls_rbd: added CRC validation to object map
Added a footer to the object map which stores a header CRC and
and data CRCs for each 4KB chunk. Updates to the object map only
require recomputing the CRC to the affected 4KB chunk.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
t-miyamae [Thu, 12 Feb 2015 06:45:02 +0000 (15:45 +0900)]
tests: remove tests for when init() is not called in shec (#10839)
init2_1, init2_2, init2_3 are equivalent to init_1 and also removed.
encode_6, decode_6, create_ruleset_3 are null argument tests,
but the arguments are references of C++, so also removed.
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 [Wed, 11 Feb 2015 11:20:18 +0000 (12:20 +0100)]
tests: update docker helper documentation
The tags for the centos repository changed from centos6, centos7 to 6
and 7 which is consistent with the other distribution
repositories. Update the documentation accordingly.
Loic Dachary [Wed, 11 Feb 2015 11:15:02 +0000 (12:15 +0100)]
tests: one Dockerfile per repository:tag
There cannot be a common Dockerfile for all repository:tag combination
of a given operating system. The only way to customize a Dockerfile is
via variable substitution and it cannot conveniently address all
differences between versions.
Create one Dockerfile per operating system version instead. I.e. one
dockerfile for centos:7, one for centos:6 etc.
Kefu Chai [Thu, 12 Feb 2015 05:02:45 +0000 (13:02 +0800)]
osd: fix OSDCap parser on old boost/spirit
* on boost 1.41, the ascii::space skipper fails to skip the spaces at the
beginning of the parsed string, so as a workaround we replace the `lit(' ')`
in grammar spec with `ascii::blank`. this also simplifies the grammar
a little bit.
Samuel Just [Thu, 12 Feb 2015 01:07:05 +0000 (17:07 -0800)]
osd/: include version_t in extra_reqids with promote
Otherwise, we can't return the correct user version on a dup request.
Note: This patch does not handle compatilibity with the variant which
does not include the version_t field. Since it's been less than 2 weeks
and we haven't had a release, I think that's ok since handling
compatilibity would require some overhead in the encode/decode
methods.
Loic Dachary [Wed, 11 Feb 2015 20:48:34 +0000 (21:48 +0100)]
erasure-code: initialize all data members
As a safeguard against unitialized memory in isa and jerasure
plugins. Since the init method is supposed to be called before the
plugin is used, it is mostly not relevant. However it can lead to
problems that are non trivial to figure out.
Loic Dachary [Wed, 11 Feb 2015 12:31:55 +0000 (13:31 +0100)]
tests: clone ceph-erasure-code-corpus from ceph
Instead of the http://github.com/dachary namespace. It is not an issue
in the common case because it should be cloned because it is in the
.gitmodules file with the proper namespace.
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.