Florian Haas [Sat, 23 Jun 2012 09:50:24 +0000 (10:50 +0100)]
radosgw-admin: improve man page
* remove "OpenStack user" information (deprecated, should no
longer be used. No reason to keep mentioning it)
* fix description of --uid
* mention subusers
* add key management commands
Florian Haas [Thu, 14 Jun 2012 21:07:44 +0000 (23:07 +0200)]
doc: explain how to configure Ceph for radosgw
* explain creating auth creds for radosgw
* explain Apache config for radosgw
* explain starting daemons for radosgw
* explain creating users for radosgw
* explain creating subusers for radosgw
* explain using swift client against radosgw
* Explain user:subuser to tenant:user mapping in Swift
Sage Weil [Wed, 20 Jun 2012 18:07:29 +0000 (11:07 -0700)]
objecter: do not feed session to op_submit()
The linger_send() method was doing this, but it is problematic because the
new Op doesn't get its pgid or acting vector set correctly. The result is
that the request goes to the right OSD, but has the wrong pgid, and makes
the OSD complain about misdirected requests and drop it on the floor. It
didn't affect the test results because we weren't testing whether the
watch was working in that case.
Instead, we'll just recalculate and get the same value the parent linger
op did. Which is fine, and goes through all the usual code paths so
nothing is missed.
Also, increment num_homeless_ops before we recalc_op_target(), so that we
don't (harmlessly, but confusingly) underflow.
Fixes: #2022 Signed-off-by: Sage Weil <sage@inktank.com>
Sage Weil [Wed, 20 Jun 2012 18:07:29 +0000 (11:07 -0700)]
objecter: do not feed session to op_submit()
The linger_send() method was doing this, but it is problematic because the
new Op doesn't get its pgid or acting vector set correctly. The result is
that the request goes to the right OSD, but has the wrong pgid, and makes
the OSD complain about misdirected requests and drop it on the floor. It
didn't affect the test results because we weren't testing whether the
watch was working in that case.
Instead, we'll just recalculate and get the same value the parent linger
op did. Which is fine, and goes through all the usual code paths so
nothing is missed.
Also, increment num_homeless_ops before we recalc_op_target(), so that we
don't (harmlessly, but confusingly) underflow.
Fixes: #2022 Signed-off-by: Sage Weil <sage@inktank.com>
Sage Weil [Thu, 21 Jun 2012 14:31:47 +0000 (07:31 -0700)]
mon: encoding new monmap using quorum feature set
It is probably unlikely that someone will expand the mon cluster with a
mixed feature set, but we know the quorum features here, so we should use
them.
Sage Weil [Thu, 21 Jun 2012 03:41:17 +0000 (20:41 -0700)]
mon: conditionally encode auth incremental with quorum feature bits
If the quorum does not yet all have the MONENC feature, stick to the old
encoding.
It might be more polite to require a super-quorum before switching over,
and take note so that thereafter we can stick to the new encoding, but
that has more moving parts and I'm not sure it's worth the complexity.
Sage Weil [Thu, 21 Jun 2012 03:33:41 +0000 (20:33 -0700)]
mon: track intersection of quorum member features
When we form a quorum, also note the intersection of the quorum members'
feature bits. This will inform decisions about what encodings we use.
This is an imperfect strategy because the quorum may change, and we may
have a mon with old code join in and not understand what is going on.
However, it does ensure that a majority of the members run new code, so in
the absence of other failures we can make progress.
This was an ill-conceived approach to getting atomic transactions out of
btrfs. It doesn't offer rollback, which means that any error means we need
to wedge the file system and reboot in order to avoid corrupting the
data set. And that's silly!
Snapshots are more robust and only marginally slower (because we have to
quiesce our writes while waiting for the snap to start, and btrfs resume
work in-kernel slightly faster...maybe).
Fixes: #2623 Signed-off-by: Sage Weil <sage@inktank.com>
Sage Weil [Fri, 15 Jun 2012 17:42:49 +0000 (10:42 -0700)]
cls_rbd: check for LAYERING feature for parent methods
You need to set the feature on the image before you can use these methods.
We *could* allow get_parent, but that just means they'll get ENOENT instead
of ENOEXEC, and the latter is more informative.
Samuel Just [Tue, 19 Jun 2012 16:11:57 +0000 (09:11 -0700)]
PG: improve find_best_info
07f853db3982e68b952a337cf91cbf7ec0709de9 is actually too conservative,
it suffices to find any info with a last_update of at least the least
last_update from the last period to go active. An info from a previous
interval is acceptable if the last interval never reported a commited
operation and thus still has the same last_update.
Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
Sage Weil [Mon, 18 Jun 2012 21:00:06 +0000 (14:00 -0700)]
mon: gracefully handle slow 'ceph -w' clients
If we are sending log updates to a client (ceph -w), and they are far
enough behind to drop behind first_committed, include a friendly message
in their stream but continue.
Drop useless return value from _create_sub_incremental(). Assert that we
can read the state file.
Samuel Just [Sat, 16 Jun 2012 00:09:42 +0000 (17:09 -0700)]
PG: best_info must have a last_epoch_started as high as any other info
We disregard incomplete infos during find_best_info, but we can't an
info with a last_epoch_started less that of the incomplete info.
This should avoid cases like #2462. In that case, it appears that
a peer with empty info/log was chosen as authoritative even though
there was a non-empty incomplete peer.
Samuel Just [Sat, 16 Jun 2012 00:09:42 +0000 (17:09 -0700)]
PG: best_info must have a last_epoch_started as high as any other info
We disregard incomplete infos during find_best_info, but we can't an
info with a last_epoch_started less that of the incomplete info.
This should avoid cases like #2462. In that case, it appears that
a peer with empty info/log was chosen as authoritative even though
there was a non-empty incomplete peer.
Greg Farnum [Sat, 16 Jun 2012 00:11:02 +0000 (17:11 -0700)]
cls_rbd: add failure logging to all callers of read_key.
Previously, read_key was printing out error messages when it failed.
But because some callers are fine with it failing on ENOENT, and they
all have more context anyway, it no longer does so and they need
their own logging output. Now they have it.
Greg Farnum [Tue, 12 Jun 2012 20:03:36 +0000 (13:03 -0700)]
cls_rbd: add locking functions.
Users can now place shared or exclusive locks, can remove their own
locks, can break the locks of others, and can list locks. All these
functions are considered PUBLIC_EXEC to match the other rbd methods.
Yehuda Sadeh [Tue, 12 Jun 2012 21:42:03 +0000 (14:42 -0700)]
rgw: obj copy respects -metadata-directive
Fixes #2542. The old behavior just merged src object attrs
and provided attributes. The new (and correct) behavior looks
at the x-[amz|rgw|...]-metadata-directive and either copies
the source attrs, or replaces them with the provided attrs.
Greg Farnum [Mon, 11 Jun 2012 17:19:54 +0000 (10:19 -0700)]
librbd: only clear the needs_refresh flag on successful updates.
To support this, add a refresh_seq counter which is incremented every
time we get a notify. This way we can handle the concern from 7add136f907876a20aa2a68297c66b8259afd9a7, in which we get a notify
in the middle of doing a refresh.