]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
13 years agodo_autogen.sh: -p to pass --with-profiler to configure (google cpu profiler)
Sage Weil [Thu, 16 Aug 2012 18:05:44 +0000 (11:05 -0700)]
do_autogen.sh: -p to pass --with-profiler to configure (google cpu profiler)

The -P profiling stuff seems somewhat nonsensical.. that should be cleaned
up too.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoceph-fuse: add --fuse-debug option to enable libfuse debugging
Sage Weil [Thu, 16 Aug 2012 16:33:23 +0000 (09:33 -0700)]
ceph-fuse: add --fuse-debug option to enable libfuse debugging

We consume -d (which fuse uses), so it can't be silently passed through
like we used to be able to do.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMerge branch 'next'
Samuel Just [Wed, 15 Aug 2012 22:21:09 +0000 (15:21 -0700)]
Merge branch 'next'

13 years agoMerge branch 'testing' into next
Samuel Just [Wed, 15 Aug 2012 22:19:02 +0000 (15:19 -0700)]
Merge branch 'testing' into next

13 years agoPG,Message: move intrusive_ptr_* into top namespace
Samuel Just [Wed, 15 Aug 2012 21:40:17 +0000 (14:40 -0700)]
PG,Message: move intrusive_ptr_* into top namespace

gcc 4.7 requires that the intrusive_ptr_* functions be in
the same namespace as the templated class.

Signed-off-by: Samuel Just <sam.just@inktank.com>
13 years agomon: make 'clocks too skewed' message for accurate
Sage Weil [Wed, 15 Aug 2012 18:13:46 +0000 (11:13 -0700)]
mon: make 'clocks too skewed' message for accurate

It could be that the mons are laggy, not skewed.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMerge branch 'next'
Sage Weil [Tue, 14 Aug 2012 23:54:17 +0000 (16:54 -0700)]
Merge branch 'next'

13 years agoMerge branch 'testing' into next
Sage Weil [Tue, 14 Aug 2012 23:53:48 +0000 (16:53 -0700)]
Merge branch 'testing' into next

13 years agomkcephfs: fix mon_data check
Sage Weil [Tue, 14 Aug 2012 23:53:18 +0000 (16:53 -0700)]
mkcephfs: fix mon_data check

* check the right path <facepalm>
* behave if the directory doesn't exist at all yet

Fixes: #2922
Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMerge branch 'wip-2918'
Sage Weil [Tue, 14 Aug 2012 23:17:48 +0000 (16:17 -0700)]
Merge branch 'wip-2918'

Reviewed-by: Dan Mick <dan.mick@inktank.com>
13 years agoosdmap: apply mon_max_osd when generating osdmap from conf
Sage Weil [Tue, 14 Aug 2012 21:26:23 +0000 (14:26 -0700)]
osdmap: apply mon_max_osd when generating osdmap from conf

This prevents users from having an [osd.1234567] section and blowing up
their memory usage.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoosdmap: fix pg_num calculation when generating osdmap from conf
Sage Weil [Tue, 14 Aug 2012 23:06:54 +0000 (16:06 -0700)]
osdmap: fix pg_num calculation when generating osdmap from conf

Base num_pg calculation on the number of osds, not the max osd id.

Fixes: #2918
Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoglobal: only print banner if type is daemon
Sage Weil [Tue, 14 Aug 2012 21:59:36 +0000 (14:59 -0700)]
global: only print banner if type is daemon

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomon: throttle daemon messages independently from client messages
Sage Weil [Tue, 14 Aug 2012 22:07:06 +0000 (15:07 -0700)]
mon: throttle daemon messages independently from client messages

This lets us set a higher limit on messages from daemons (osd, mds) than
from clients, and throttle them independently.

Fixes: #2942
Signed-off-by: Sage Weil <sage@inktank.com>
13 years agofilejournal: instrument journal write counts, sizes
Sage Weil [Tue, 14 Aug 2012 21:43:34 +0000 (14:43 -0700)]
filejournal: instrument journal write counts, sizes

This rounds out the low-hanging fruit that are coming to mind.  Moving on.

Fixes: #2619
Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoperfcounters: add u64 average type
Sage Weil [Tue, 14 Aug 2012 21:31:38 +0000 (14:31 -0700)]
perfcounters: add u64 average type

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoglobal: fix version banner in log on startup
Sage Weil [Tue, 14 Aug 2012 21:06:47 +0000 (14:06 -0700)]
global: fix version banner in log on startup

Log banner from global_init().  This puts it at the very top of the log,
right when the daemon starts.

Fixes: #2940
Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMerge branch 'wip-crush-tunables'
Sage Weil [Tue, 14 Aug 2012 20:13:03 +0000 (13:13 -0700)]
Merge branch 'wip-crush-tunables'

Reviewed-by: Greg Farnum <greg@inktank.com>
13 years agodoc: document use of CRUSH tunables
Sage Weil [Tue, 14 Aug 2012 20:11:15 +0000 (13:11 -0700)]
doc: document use of CRUSH tunables

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomon: require CRUSH_TUNABLES when latest osdmap has tunables set
Sage Weil [Mon, 13 Aug 2012 17:46:30 +0000 (10:46 -0700)]
mon: require CRUSH_TUNABLES when latest osdmap has tunables set

This is an imperfect check in that tunables may be set in past osdmaps,
and the OSDs may need that in order to peer correctly.  However, in the
general case, this will catch most users.  In particular, it will catch

 - set tunables
 - nothing works (osds or clients lack feature)
 - reset/clear tunables
 - things recover

But not

 - set tunables
 - osds have feature, behave
 - new osds with old code added, lack feature
 - remove tunables
 - new osds may fail to peer properly because they lack the feature

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoosd: require CRUSH_TUNABLES feature of peers, clients when used
Sage Weil [Mon, 13 Aug 2012 17:44:08 +0000 (10:44 -0700)]
osd: require CRUSH_TUNABLES feature of peers, clients when used

If the current crush map has non-default tunables, set our messengers to
require the tunables feature bit.  If it does not, clear the bit.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoosd: put throttler on default policy
Sage Weil [Mon, 13 Aug 2012 17:43:39 +0000 (10:43 -0700)]
osd: put throttler on default policy

Before we were associating the throttler with a CLIENT specific policy
that didn't cover MDS.  That's silly.  Instead, associate the throttler
with the default policy (which is now possible).

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsgr: make set_policy_throttler safe, act on default
Sage Weil [Mon, 13 Aug 2012 17:49:03 +0000 (10:49 -0700)]
msgr: make set_policy_throttler safe, act on default

Add locking in set_policy_throttler.

Also, make it act on the default policy when the specified type does not
have a sepcific policy set for it.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsgr: make set_policy() and set_default_policy() safe to re-use
Sage Weil [Mon, 13 Aug 2012 17:48:20 +0000 (10:48 -0700)]
msgr: make set_policy() and set_default_policy() safe to re-use

Introduce a policy_lock in SimpleMessenger to make this safe even after
the messenger has been started up.  The user needs to be aware that
policy changes will not affect connections that are already established.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agodoc: v0.48.1argonaut release notes, changelog
Sage Weil [Tue, 14 Aug 2012 17:06:16 +0000 (10:06 -0700)]
doc: v0.48.1argonaut release notes, changelog

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMerge branch 'wip-msgr'
Sage Weil [Mon, 13 Aug 2012 20:34:29 +0000 (13:34 -0700)]
Merge branch 'wip-msgr'

13 years agomsg/Accepter: fix nonce initialization
Sage Weil [Mon, 13 Aug 2012 20:15:55 +0000 (13:15 -0700)]
msg/Accepter: fix nonce initialization

This needs to be provided to the Accepter at bind time, not by start().
Otherwise the nonce is effectively always 0, which is useless and breaks
all sorts of things.  Broken by 8453a8198c65712db968ff42be4fd10d2d216582.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoceph-osd: log journal-creation failure with derr
Dan Mick [Mon, 13 Aug 2012 18:46:48 +0000 (11:46 -0700)]
ceph-osd: log journal-creation failure with derr

Fixes: #2938
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Signed-off-by: Dan Mick <dan.mick@inktank.com>
13 years agomsgr: expose get_policy() through generic Messenger API
Sage Weil [Mon, 13 Aug 2012 17:38:52 +0000 (10:38 -0700)]
msgr: expose get_policy() through generic Messenger API

Return a copy instead of a const reference, too...

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agocrush: add helper has_nondefault_tunables()
Sage Weil [Sat, 21 Jul 2012 00:50:35 +0000 (17:50 -0700)]
crush: add helper has_nondefault_tunables()

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMerge branch 'wip-msgr'
Sage Weil [Mon, 13 Aug 2012 16:58:49 +0000 (09:58 -0700)]
Merge branch 'wip-msgr'

13 years agocephtool: make command wait for osdmap explicit
Sage Weil [Mon, 13 Aug 2012 16:56:59 +0000 (09:56 -0700)]
cephtool: make command wait for osdmap explicit

If we are waiting for an osdmap for a command, track that explicitly so
that we know when to retry send_command().

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agov0.50 v0.50
Sage Weil [Mon, 13 Aug 2012 16:49:24 +0000 (09:49 -0700)]
v0.50

13 years agoMerge tag 'v0.50'
Sage Weil [Mon, 13 Aug 2012 16:48:49 +0000 (09:48 -0700)]
Merge tag 'v0.50'

v0.50

13 years agomsg/Pipe: discard_queue() -> discard_out_queue()
Sage Weil [Sat, 11 Aug 2012 15:13:39 +0000 (08:13 -0700)]
msg/Pipe: discard_queue() -> discard_out_queue()

We only discard outgoing messages; incoming messages are handled by the
IncomingQueue.. but this method doesn't touch that.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsg/Pipe: simplify Pipe::tcp_read() return value
Sage Weil [Sat, 11 Aug 2012 15:10:14 +0000 (08:10 -0700)]
msg/Pipe: simplify Pipe::tcp_read() return value

0 for success; no reason to return length (always == len).

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsg/Pipe: document tcp_*()
Sage Weil [Sat, 11 Aug 2012 15:03:52 +0000 (08:03 -0700)]
msg/Pipe: document tcp_*()

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsg/Accepter: use learned_addr() from Accepter::bind()
Sage Weil [Sat, 11 Aug 2012 14:52:28 +0000 (07:52 -0700)]
msg/Accepter: use learned_addr() from Accepter::bind()

Normally we never go from need_addr == false to need_addr == true.
It always starts out as true, so this else is useless on the first
call to Accepter::bind().

The only exception is rebind().  Add an unlearn_addr() that will clear
need_addr.  This is almost unnecessary, but doing so fixes a small bug
where the local_connection->peer_addr doesn't get updated when we do a
rebind().

Drop now-unused set_need_addr().  We keep get_need_addr() only because
it is useful in the debug output and for the assert.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsg/SimpleMessenger: push need_addr check into learned_addr()
Sage Weil [Sat, 11 Aug 2012 14:45:18 +0000 (07:45 -0700)]
msg/SimpleMessenger: push need_addr check into learned_addr()

This puts all of the do/do not lock logic in one place, and documents
it.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsg/Accepter: pass nonce on start
Sage Weil [Sat, 11 Aug 2012 14:37:45 +0000 (07:37 -0700)]
msg/Accepter: pass nonce on start

This lets us drop the otherwise awkward SimpleMessenger::get_nonce()
accessor.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsgr: protect set_myaddr()
Sage Weil [Sat, 11 Aug 2012 14:31:35 +0000 (07:31 -0700)]
msgr: protect set_myaddr()

This is used by Messenger implementation (and their constituent
components).

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsg/Accepter: make members private
Sage Weil [Sat, 11 Aug 2012 14:29:38 +0000 (07:29 -0700)]
msg/Accepter: make members private

Nobody uses these.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsgr: remove useless SimpleMessenger::msgr
Sage Weil [Sat, 11 Aug 2012 14:28:32 +0000 (07:28 -0700)]
msgr: remove useless SimpleMessenger::msgr

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agomsgr: some SimpleMessenger docs
Sage Weil [Sat, 11 Aug 2012 14:24:04 +0000 (07:24 -0700)]
msgr: some SimpleMessenger docs

Document basic modules and the lock ordering.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agocephtool: send keepalive to tell target
Sage Weil [Tue, 31 Jul 2012 22:02:55 +0000 (15:02 -0700)]
cephtool: send keepalive to tell target

If we 'ceph tell <foo> ...' to a non-monitor, we need to send keepalives to
ensure we detect a tcp drop.  (Not so for monitors; monclient already does
its own keepalive thing.)

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agocephtool: retry 'ceph tell <who> ...' command if connection fails
Sage Weil [Tue, 31 Jul 2012 21:47:26 +0000 (14:47 -0700)]
cephtool: retry 'ceph tell <who> ...' command if connection fails

It was easy to reproduce a hang with 'ceph osd tell osd.0 foo' and
messenger failure injection.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agocephtool: set messenger policy
Sage Weil [Tue, 31 Jul 2012 21:46:13 +0000 (14:46 -0700)]
cephtool: set messenger policy

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agocephtool: fix deadlock on fault when waiting for osdmap
Sage Weil [Tue, 31 Jul 2012 21:45:51 +0000 (14:45 -0700)]
cephtool: fix deadlock on fault when waiting for osdmap

send_command() was blocking for the osdmap, and also called from the
connect callback.  Instead, re-call it from the handle_osd_map() callback
so that it never blocks.

This was easy to trigger with 'ceph osd tell osd.0 foo' and ms failure
injection.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMonMap: return error on failure in build_initial
Josh Durgin [Wed, 8 Aug 2012 22:24:57 +0000 (15:24 -0700)]
MonMap: return error on failure in build_initial

If mon_host fails to parse, return an error instead of success.
This avoids failing later on an assert monmap.size() > 0 in the
monmap in MonClient.

Fixes: #2913
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
13 years agoaddr_parsing: report correct error message
Josh Durgin [Wed, 8 Aug 2012 22:10:27 +0000 (15:10 -0700)]
addr_parsing: report correct error message

getaddrinfo uses its return code to report failures.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
13 years agorgw: modify some error messages
Yehuda Sadeh [Thu, 9 Aug 2012 20:54:15 +0000 (13:54 -0700)]
rgw: modify some error messages

Make them more correct, clearer.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agoMerge remote-tracking branch 'origin/wip-rgw-admin'
Yehuda Sadeh [Thu, 9 Aug 2012 20:39:20 +0000 (13:39 -0700)]
Merge remote-tracking branch 'origin/wip-rgw-admin'

13 years agorgw: use multiple notification objects
Yehuda Sadeh [Mon, 18 Jun 2012 20:25:44 +0000 (13:25 -0700)]
rgw: use multiple notification objects

Issue #2504. This makes us listen and notify on more than
a single object, which reduces the contention of cache
notifications.

NOTE: This change requires that any radosgw and radosgw-admin
use the same 'rgw num control oids' config value. A config value
of 0 will maintain old compatibility, and will allow an upgraded
process run in conjuction with an old one. Setting value other
than 0 (or using the non-zero default) will require upgrading
and restarting all the gateways together. Failing to do so
might lead to inconsistent user and buckets metadata (which
will be resolved once gateways are restarted).

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agoradosgw-admin.rst: Misc doccumentation update.
caleb miles [Wed, 25 Jul 2012 19:56:59 +0000 (12:56 -0700)]
radosgw-admin.rst: Misc doccumentation update.

Signed-off-by: caleb miles <caleb.miles@inktank.com>
13 years agorgw_admin.cc: Allow removal of a user's buckets during user removal.
caleb miles [Thu, 9 Aug 2012 20:27:21 +0000 (13:27 -0700)]
rgw_admin.cc: Allow removal of a user's buckets during user removal.

Allow the buckets, and any child objects, of a user to be deleted when the
user is deleted through radosgw-admin. In reference to feature request
2499: http://tracker.newdream.net/issues/2499.

Signed-off-by: caleb miles <caleb.miles@inktank.com>
13 years agorgw_admin.cc: Allow for deletion of objects through radosgw-admin.
caleb miles [Thu, 9 Aug 2012 16:55:27 +0000 (09:55 -0700)]
rgw_admin.cc: Allow for deletion of objects through radosgw-admin.

Allow objects to be deleted through radosgw-admin with an optional flag
to delete the tail of that object during the processing of the intent log.

Signed-off-by: caleb miles <caleb.miles@inktank.com>
13 years agodoc: New example usage.
John Wilkins [Thu, 9 Aug 2012 16:21:38 +0000 (09:21 -0700)]
doc: New example usage.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
13 years agorgw: fix usage trim call encoding
Yehuda Sadeh [Wed, 1 Aug 2012 20:22:38 +0000 (13:22 -0700)]
rgw: fix usage trim call encoding

Fixes: #2841.
Usage trim operation was encoding the wrong op structure (usage read).
Since the structures somewhat overlapped it somewhat worked, but user
info wasn't encoded.

Backport: argonaut
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agocls_rgw: fix rgw_cls_usage_log_trim_op encode/decode
Yehuda Sadeh [Wed, 8 Aug 2012 22:21:53 +0000 (15:21 -0700)]
cls_rgw: fix rgw_cls_usage_log_trim_op encode/decode

It was not encoding user, adding that and reset version
compatibility.
This changes affects command interface, makes use of
radosgw-admin usage trim incompatible. Use of old
radosgw-admin usage trim should be avoided, as it may
remove more data than requested. In any case, upgraded
server code will not handle old client's trim requests.

backport: argonaut
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agorgw: expand date format support
Yehuda Sadeh [Tue, 31 Jul 2012 23:17:22 +0000 (16:17 -0700)]
rgw: expand date format support

Relaxing the date format parsing function to allow UTC
instead of GMT.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agorgw: complete multipart upload can handle chunked encoding
Yehuda Sadeh [Thu, 2 Aug 2012 18:13:05 +0000 (11:13 -0700)]
rgw: complete multipart upload can handle chunked encoding

Fixes: #2878
We now allow complete multipart upload to use chunked encoding
when sending request data. With chunked encoding the HTTP_LENGTH
header is not required.

Backport: argonaut
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agorgw_xml: xml_handle_data() appends data string
Yehuda Sadeh [Wed, 1 Aug 2012 18:19:32 +0000 (11:19 -0700)]
rgw_xml: xml_handle_data() appends data string

Fixes: #2879.
xml_handle_data() appends data to the object instead of just
replacing it. Parsed data can arrive in pieces, specifically
when data is escaped.

Backport: argonaut
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agorgw: ETag is unquoted in multipart upload complete
Yehuda Sadeh [Wed, 1 Aug 2012 20:09:41 +0000 (13:09 -0700)]
rgw: ETag is unquoted in multipart upload complete

Fixes #2877.
Removing quotes from ETag before comparing it to what we
have when completing a multipart upload.

Backport: argonaut
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agodoc: Added debug and logging reference.
John Wilkins [Wed, 8 Aug 2012 22:06:57 +0000 (15:06 -0700)]
doc: Added debug and logging reference.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
13 years agomkcephfs: use default osd_data, _journal values
Sage Weil [Wed, 8 Aug 2012 21:01:53 +0000 (14:01 -0700)]
mkcephfs: use default osd_data, _journal values

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
13 years agomkcephfs: use new default keyring locations
Sage Weil [Wed, 8 Aug 2012 21:01:35 +0000 (14:01 -0700)]
mkcephfs: use new default keyring locations

The ceph-conf command only parses the conf; it does not apply default
config values.  This breaks mkcephfs if values are not specified in the
config.

Let ceph-osd create its own key, fix copying, and fix creation/copying for
the mds.

Fixes: #2845
Reported-by: Florian Haas <florian@hastexo.com>
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
13 years agoMerge remote-tracking branch 'gh/next'
Sage Weil [Wed, 8 Aug 2012 20:05:12 +0000 (13:05 -0700)]
Merge remote-tracking branch 'gh/next'

13 years agobuffer: make release() private
Sage Weil [Wed, 8 Aug 2012 15:09:59 +0000 (08:09 -0700)]
buffer: make release() private

This should only be called by ~ptr or when we are replacing the current
target with something new.  It is not suitable for external consumption
Because it doesn't reset length and offset.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agorados.py: add binding for rados_trunc
Evan Felix [Sat, 4 Aug 2012 00:56:25 +0000 (17:56 -0700)]
rados.py: add binding for rados_trunc

Fixes: #2909
Signed-off-by: Evan Felix <evan.felix@pnnl.gov>
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
13 years agodoc: Explicitly state mount.ceph two first arguments are fixed.
Tommi Virtanen [Thu, 2 Aug 2012 23:03:19 +0000 (16:03 -0700)]
doc: Explicitly state mount.ceph two first arguments are fixed.

I've hurt myself too many times with this.

Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agodoc: mount.ceph is also needed for cephx.
Tommi Virtanen [Thu, 2 Aug 2012 23:00:15 +0000 (16:00 -0700)]
doc: mount.ceph is also needed for cephx.

Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agodoc: Fix toctree structure for man obsync(1).
Tommi Virtanen [Thu, 2 Aug 2012 22:56:57 +0000 (15:56 -0700)]
doc: Fix toctree structure for man obsync(1).

Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agorgw_admin.cc: Disallow addition of S3 keys with subuser creation
caleb miles [Fri, 27 Jul 2012 18:26:21 +0000 (11:26 -0700)]
rgw_admin.cc: Disallow addition of S3 keys with subuser creation

Fixes: #1855
It is no longer possible to create a subuser and new S3 key associated
with that user through the radosgw-admin utility. In reference to Bug 1855
http://tracker.newdream.net/issues/1855.

Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
Signed-off-by: caleb miles <caleb.miles@inktank.com>
13 years agoceph-authtool: Fix usage, it's --print-key not --print.
Tommi Virtanen [Thu, 2 Aug 2012 20:02:04 +0000 (13:02 -0700)]
ceph-authtool: Fix usage, it's --print-key not --print.

Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agoRevert "osd: peering: detect when log source osd goes down"
Samuel Just [Thu, 2 Aug 2012 17:58:31 +0000 (10:58 -0700)]
Revert "osd: peering: detect when log source osd goes down"

This reverts commit 0d3d75ec0d17e2f6bc5d42058f51eb2ff19ffb71.

Accidental double push.

13 years agodoc: cd to repository before running git status.
Tommi Virtanen [Thu, 2 Aug 2012 15:31:26 +0000 (08:31 -0700)]
doc: cd to repository before running git status.

Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agodoc: Say what to do if submodules are out of date.
Tommi Virtanen [Thu, 2 Aug 2012 15:29:50 +0000 (08:29 -0700)]
doc: Say what to do if submodules are out of date.

Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agodoc: Simplify submodules explanation.
Tommi Virtanen [Thu, 2 Aug 2012 15:27:55 +0000 (08:27 -0700)]
doc: Simplify submodules explanation.

``git clone --recursive`` does ``init`` & ``update`` for us. Also
avoids incorrect language; there never were submodules called ``init``
and ``update``.

Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agodoc: Correct Git URL for clone
Wido den Hollander [Thu, 2 Aug 2012 10:48:26 +0000 (12:48 +0200)]
doc: Correct Git URL for clone

Using git@github.com would mean SSHing in, and your average open
source consumer probably won't have a Github account.

Using HTTPS offers the best combination of resisting man-in-the-middle
attacks and passing through corporate firewalls.

Signed-off-by: Wido den Hollander <wido@widodh.nl>
Signed-off-by: Tommi Virtanen <tv@inktank.com>
13 years agoosd: peering: detect when log source osd goes down
Sage Weil [Tue, 31 Jul 2012 21:01:57 +0000 (14:01 -0700)]
osd: peering: detect when log source osd goes down

The Peering state has a generic check based on the prior set osds that
will restart peering if one of them goes down (or one of the interesting
down ones comes up).  The GetLog state, however, can pull the log from
a peer that is not in the prior set if it got a notify from them (e.g., an
osd in an old interval that was down when the prior set was calculated).
If that osd goes down, we don't detect it and will block forward.

Fix by adding a simple check in GetLog for the newest_update_osd going
down.

(BTW GetMissing does not suffer from this problem because
peer_missing_requested is a subset of the prior set, so the Peering check
is sufficient.)

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
13 years agoosd: peering: detect when log source osd goes down
Sage Weil [Tue, 31 Jul 2012 21:01:57 +0000 (14:01 -0700)]
osd: peering: detect when log source osd goes down

The Peering state has a generic check based on the prior set osds that
will restart peering if one of them goes down (or one of the interesting
down ones comes up).  The GetLog state, however, can pull the log from
a peer that is not in the prior set if it got a notify from them (e.g., an
osd in an old interval that was down when the prior set was calculated).
If that osd goes down, we don't detect it and will block forward.

Fix by adding a simple check in GetLog for the newest_update_osd going
down.

(BTW GetMissing does not suffer from this problem because
peer_missing_requested is a subset of the prior set, so the Peering check
is sufficient.)

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
13 years agowireshark: update patch
Yehuda Sadeh [Tue, 17 Jul 2012 18:37:30 +0000 (11:37 -0700)]
wireshark: update patch

Update to latest source tree (svn 43768).

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
13 years agoReplicatedPG: clear waiting_for_ack when we send the commit
Samuel Just [Mon, 30 Jul 2012 23:58:56 +0000 (16:58 -0700)]
ReplicatedPG: clear waiting_for_ack when we send the commit

Otherwise, we might send the ack anyway later, after a subsequent
commit is sent resulting in an out-of-order op.

This resulted in a a crash when the client encountered out of
order ops.

Signed-off-by: Samuel Just <sam.just@inktank.com>
13 years agoMerge remote-tracking branch 'upstream/wip-leveldb-iterators'
Samuel Just [Tue, 31 Jul 2012 20:51:49 +0000 (13:51 -0700)]
Merge remote-tracking branch 'upstream/wip-leveldb-iterators'

13 years agorbd: fix off-by-one error in key name
Sylvain Munaut [Tue, 31 Jul 2012 18:55:56 +0000 (11:55 -0700)]
rbd: fix off-by-one error in key name

Fixes: #2846
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
13 years agosecret: return error on empty secret
Sylvain Munaut [Tue, 31 Jul 2012 18:54:29 +0000 (11:54 -0700)]
secret: return error on empty secret

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
13 years agoPG,ReplicatedPG: clarify scrub state clearing
Samuel Just [Mon, 30 Jul 2012 20:43:51 +0000 (13:43 -0700)]
PG,ReplicatedPG: clarify scrub state clearing

scrub_clear_state takes care of clearing the SCRUB and REPAIR
flags.  Thus, PG::scrub() needn't clear them again since
any change that would have caused that if block to occur
would have triggered ReplicatedPG::on_change(), which also
clears the scrub reservations.

Signed-off-by: Samuel Just <sam.just@inktank.com>
13 years agoPG::mark_clean(): queue_snap_trim if snap_trimq is not empty
Samuel Just [Mon, 30 Jul 2012 20:38:08 +0000 (13:38 -0700)]
PG::mark_clean(): queue_snap_trim if snap_trimq is not empty

Currently, we won't queue for snap trim until the next map
update.

Noticed while reviewing another patch, this would result in
snaps not being trimmed until the next map update.

Signed-off-by: Samuel Just <sam.just@inktank.com>
13 years agoReplicatedPG::snap_trimmer: requeue if scrub_block_writes
Samuel Just [Mon, 30 Jul 2012 20:36:39 +0000 (13:36 -0700)]
ReplicatedPG::snap_trimmer: requeue if scrub_block_writes

Otherwise, we do not continue snap_trimming once scrub is
complete.

Noticed while revewing another patch.  This would result
in snaps not being trimmed again until the next map
update.

Signed-off-by: Samuel Just <sam.just@inktank.com>
13 years agoMerge branch 'wip-osd'
Sage Weil [Mon, 30 Jul 2012 17:49:44 +0000 (10:49 -0700)]
Merge branch 'wip-osd'

Reviewed-by: Samuel Just <sam.just@inktank.com>
13 years agoosd: initialize send_notify on pg load
Sage Weil [Sat, 28 Jul 2012 16:19:03 +0000 (09:19 -0700)]
osd: initialize send_notify on pg load

When the PG is loaded, we need to set send_notify if we are not the
primary.  Otherwise, if the PG does not go through
start_peering_interval() or experience a role change, we will not set
the flag and tell the primary that we exist.  This can cause problems
for example if we have unfound objects that the primary needs, although
I'm sure there are other bad implications as well.

Fixes: #2866
Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoosd: replace STRAY bit with bool
Sage Weil [Sat, 28 Jul 2012 16:17:34 +0000 (09:17 -0700)]
osd: replace STRAY bit with bool

We were setting a bit in pg->state that is private to the non-primary
PG.  The other bits get shared with the mon etc, but this one didn't.

Replace it with a simple bool.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agotest: test_keyvaluedb_iterators: Test KeyValueDB implementations iterators
Joao Eduardo Luis [Wed, 18 Jul 2012 21:26:29 +0000 (22:26 +0100)]
test: test_keyvaluedb_iterators: Test KeyValueDB implementations iterators

This set of tests focus on testing the expected behavior of LevelDBStore's
and KeyValueDBMemory's iterators.

We test a grand total of six use cases, each one with several test
units, being tested for both the LevelDBStore and the in-memory mock
(totalling 48 test units, plus two disabled by default):

 * Removing keys:
  - Using both the whole-space iterator and the whole-space snapshot
    iterator
  - Tests key removal while iterating the store, either by prefix or by
    removing specific (prefix,key) pairs

 * Setting keys:
  - Using both the whole-space iterator and the whole-space snapshot
    iterator
  - Tests key insertion while iterating the store
  - Tests value update while iterating the store
  - This use case has two disabled tests: one when setting keys, other
    when updating values, both on LevelDBStore and using the whole-space
    iterator; this is because they will fail, unlike when using the
    in-memory mock implementation, because leveldb implicitely creates
    an iterator that will read from a snapshot instead of directly from
    the underlying store.

 * Using Upper/Lower Bounds:
  - Using the whole-space iterator (we don't modify the store's state,
    so there is no need to also test the whole-space snapshot iterator)
  - Tests upper/lower bounds when the key, the prefix or both are empty
  - Tests upper/lower bounds when both the key and the prefix are set

 * Seeking:
  - Using the whole-space iterator (we don't modify the store's state,
    so there is no need to also test the whole-space snapshot iterator)
  - Tests seeking to first and to last
  - Tests seeking to first and to last using a prefix

 * Key-Space Iteration:
  - Using the whole-space iterator (we don't modify the store's state,
    so there is no need to also test the whole-space snapshot iterator)
  - Tests forward and backward iteration over the key-space

 * Empty Store:
  - Using the whole-space iterator (we don't modify the store's state,
    so there is no need to also test the whole-space snapshot iterator)
  - Tests seeking and using bounds functions when the store is empty

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
13 years agoos: KeyValueDB: implement snapshot iterators
Joao Eduardo Luis [Mon, 23 Jul 2012 10:56:50 +0000 (11:56 +0100)]
os: KeyValueDB: implement snapshot iterators

Create a set of functions, to be implemented by derivative classes of
KeyValueDB, responsible for returning an iterator with strong
read-consistency guarantees. How this iterator is implemented, or by what
is it backed up, is implementation specific, but it must guarantee that
all reads made using this iterator are as if there were no subsequent
writes to the store since we created the iterator.

For instance, LevelDBStore will back this iterator with a leveldb Snapshot,
while KeyValueDBMemory will perform a copy of its in-memory map.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
13 years agoos: KeyValueDB: re-implement (prefix) iter in terms of whole-space iter
Joao Eduardo Luis [Mon, 23 Jul 2012 10:47:00 +0000 (11:47 +0100)]
os: KeyValueDB: re-implement (prefix) iter in terms of whole-space iter

In-a-nutshell-version: Create a whole-space iterator interface, and
implement the already existing, prefix-based iterator in terms of the
new whole-space iterator;

This patch introduces a significant change on the architecture of
KeyValueDB's iterator, although its interface remains the same.

Before this patch, KeyValueDB simply defined an interface for a
prefix-based interface, to be implemented by derivative classes. Being
constrained by a prefix-based approach to iterate over the store only makes
sense when we know which prefixes we want to iterate over, but for that we
must know about the prefixes beforehand. This approach didn't work when one
wanted to iterate over the whole key space, without any previous awareness
about the keys and their prefixes.

This patch introduces a new interface for a whole-space iterator, to be
implemented by derivative classes, which is prefix-independent. We also
define an abstract function to obtain this iterator, which must also be
implemented by the derivative class. With this interface in place, we are
then able to implement a prefix-dependent iterator in terms of the
whole-space iterator, which will be offered by the KeyValueDB class itself.

Furthermore, we implement these changes on LevelDBStore and KeyValueDBMemory,
the in-memory mock store, which leads to significant changes on both:

  * LevelDBStore
    - Substitute the previously existing LevelDBIteratorImpl, which
      followed a prefix-based iteration, for
      LevelDBWholeSpaceIteratorImpl, which now iterates over the whole
      key space of the store;

  * KeyValueDBMemory:
    - Substitute the previously existing MemIterator, which followed a
      prefix-based iteration, for WholeSpaceMemIterator, which now
      iterates over the whole key space of the in-memory mock store;
    - Change the in-memory mock store data structure. Previously, we
      used a map-of-maps, mapping prefixes to a key/value map; now we
      keep a single map, mapping (prefix,key) pairs to values.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
13 years agotest: workloadgen: Don't linearly iterate over a map to obtain a collection
Joao Eduardo Luis [Tue, 24 Jul 2012 20:53:20 +0000 (21:53 +0100)]
test: workloadgen: Don't linearly iterate over a map to obtain a collection

We were iterating over the collections map a certain amount of times, in
order to obtain the collection in that position. To avoid this kind of
behavior in a function that may be called a large amount of times, and
that may iterate over a rather large map, we now keep the collection ids
in a vector. In order to obtain a given collection on position X, we will
simply look for the collection id on position X of the vector, and then
obtain the collection from the map using its collection id.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
13 years agoosd: peering: make Incomplete a Peering substate
Sage Weil [Fri, 27 Jul 2012 23:03:26 +0000 (16:03 -0700)]
osd: peering: make Incomplete a Peering substate

This allows us to still catch changes in the prior set that would affect
our conclusions (that we are incomplete) and, when they happen, restart
peering.

Consider:
 - calc prior set, osd A is down
 - query everyone else, no good info
 - set down, go to Incomplete (previously WaitActingChange) state.
 - osd A comes back up (we do nothing)
 - osd A sends notify message with good info (we ignore)

By making this a Peering substate, we catch the Peering AdvMap reaction,
which will notice a prior set down osd is now up and move to Reset.

Fixes: #2860
Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoosd: peering: move to Incomplete when.. incomplete
Sage Weil [Fri, 27 Jul 2012 22:39:40 +0000 (15:39 -0700)]
osd: peering: move to Incomplete when.. incomplete

PG::choose_acting() may return false and *not* request an acting set change
if it can't find any suitable peers with enough info to recover.  In that
case, we should move to Incomplete, not WaitActingChange, just like we do
a bit lower in GetLog() if we have non-contiguous logs.  The state name is
more accurate, and this is also needed to fix bug #2860.

Signed-off-by: Sage Weil <sage@inktank.com>
13 years agoMerge remote-tracking branch 'gh/wip-msgr-masterbits'
Sage Weil [Sat, 28 Jul 2012 14:21:05 +0000 (07:21 -0700)]
Merge remote-tracking branch 'gh/wip-msgr-masterbits'

Reviewed-by: Greg Farnum <greg@inktank.com>
13 years agoconfig: send warnings to a ostream* argument
Sage Weil [Sat, 28 Jul 2012 14:39:27 +0000 (07:39 -0700)]
config: send warnings to a ostream* argument

We shouldn't always send these to stderr.  (Among other things, the
warning: prefix breaks the gitbuilder error detection.)

Signed-off-by: Sage Weil <sage@inktank.com>