]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
12 years agomsgr: queue reset when marking down pipes on shutdown
Sage Weil [Thu, 13 Jun 2013 00:58:36 +0000 (17:58 -0700)]
msgr: queue reset when marking down pipes on shutdown

This lets the callbacks clean up ref cycles.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsg/DispatchQueue: do not discard queued events on stop
Sage Weil [Wed, 12 Jun 2013 02:27:01 +0000 (19:27 -0700)]
msg/DispatchQueue: do not discard queued events on stop

When the shutdown/stop flag is set, continue to work through the queue.
Process events, but discard messages.  This avoids the loss of reset events
on shutdown that are necessary to clean up ref cycles.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsgr: queue reset exactly once on any connection
Sage Weil [Tue, 11 Jun 2013 23:44:05 +0000 (16:44 -0700)]
msgr: queue reset exactly once on any connection

Use the atomic pipe link removal as a signal that we are the one failing
the con and use that to queue the reset event.

This fixes the case where we have an open, the session gets set up via the
handle_accept callback, and then race with another connection and go into
wait + close, or just close.  In that case, fault() needs to queue a reset
event to match the accept.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsg/Pipe: include con reef in debug prestring
Sage Weil [Tue, 11 Jun 2013 18:51:14 +0000 (11:51 -0700)]
msg/Pipe: include con reef in debug prestring

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsg/Pipe: reset replaced pipes
Sage Weil [Tue, 11 Jun 2013 18:38:44 +0000 (11:38 -0700)]
msg/Pipe: reset replaced pipes

This gives the ms_handle_reset call a chance to clean up (for example, by
breaking a con->priv <-> session reference cycle).

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsgr: use ConnectionRef throughout
Sage Weil [Mon, 10 Jun 2013 03:21:49 +0000 (20:21 -0700)]
msgr: use ConnectionRef throughout

Make RefCountedObject a private parent of Connection so that users are
forced to use ConnectionRef whenever references are taken.

Many methods can still take a raw Connection* when they are using the
caller's reference but not taking their own; this is cheaper than
twiddling the reference count, and the lifetime is still well defined.
Local variables generally use ConnectionRef, though.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon/MonClient: tear down version requests on shutdown
Sage Weil [Mon, 10 Jun 2013 17:31:22 +0000 (10:31 -0700)]
mon/MonClient: tear down version requests on shutdown

Make sure all callers can handle ECANCELED.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon/PaxosService: discard messages during shutdown
Sage Weil [Tue, 11 Jun 2013 00:34:24 +0000 (17:34 -0700)]
mon/PaxosService: discard messages during shutdown

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon: add is_shutdown() state helper/accessor
Sage Weil [Tue, 11 Jun 2013 00:34:12 +0000 (17:34 -0700)]
mon: add is_shutdown() state helper/accessor

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon: shut down Paxos on shutdown
Sage Weil [Tue, 11 Jun 2013 00:28:51 +0000 (17:28 -0700)]
mon: shut down Paxos on shutdown

This cleans up the completions for any paxos waiters.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: break con <-> session cycle on reset
Sage Weil [Tue, 11 Jun 2013 18:59:24 +0000 (11:59 -0700)]
osd: break con <-> session cycle on reset

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: do not leak HeartbeatSession on shutdown
Sage Weil [Tue, 11 Jun 2013 18:51:05 +0000 (11:51 -0700)]
osd: do not leak HeartbeatSession on shutdown

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: close classes on shutdown
Sage Weil [Mon, 10 Jun 2013 18:55:16 +0000 (11:55 -0700)]
osd: close classes on shutdown

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: do not leak MOSDPings on shutdown
Sage Weil [Mon, 10 Jun 2013 18:51:37 +0000 (11:51 -0700)]
osd: do not leak MOSDPings on shutdown

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd/ReplicatedPG: don't leak Session refs in do_osd_op_effects()
Sage Weil [Sun, 9 Jun 2013 04:50:53 +0000 (21:50 -0700)]
osd/ReplicatedPG: don't leak Session refs in do_osd_op_effects()

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomessages/MMonSync: initialize crc in ctor
Sage Weil [Tue, 11 Jun 2013 00:28:22 +0000 (17:28 -0700)]
messages/MMonSync: initialize crc in ctor

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agovstart.sh: put exports at top
Sage Weil [Thu, 13 Jun 2013 17:52:00 +0000 (10:52 -0700)]
vstart.sh: put exports at top

Where I can 'head vstart.sh' to find them quickly.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoPendingReleaseNotes: notes on CLI changes
Sage Weil [Thu, 13 Jun 2013 17:46:45 +0000 (10:46 -0700)]
PendingReleaseNotes: notes on CLI changes

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoPendingReleaseNotes: cli changes, and ceph tell ...
Sage Weil [Thu, 13 Jun 2013 17:21:59 +0000 (10:21 -0700)]
PendingReleaseNotes: cli changes, and ceph tell ...

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agodoc/release-notes: add missed notes for 0.63 and 0.64
Sage Weil [Thu, 13 Jun 2013 17:19:39 +0000 (10:19 -0700)]
doc/release-notes: add missed notes for 0.63 and 0.64

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge pull request #360 from dachary/master
Sage Weil [Thu, 13 Jun 2013 15:23:00 +0000 (08:23 -0700)]
Merge pull request #360 from dachary/master

add apt-get update to installation instructions

12 years agoadd apt-get update to installation instructions 360/head
Loic Dachary [Thu, 13 Jun 2013 06:53:26 +0000 (08:53 +0200)]
add apt-get update to installation instructions

Without apt-get update the repository added to the sources.list is not taken into consideration and an older version of ceph-deploy is going to be installed.

Signed-off-by: Loic Dachary <loic@dachary.org>
12 years agoconfig: fix run_dir typo
Sage Weil [Thu, 13 Jun 2013 04:47:09 +0000 (21:47 -0700)]
config: fix run_dir typo

From 654299108bfb11e7dce45f54946d1505f71d2de8.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge remote-tracking branch 'gh/next'
Sage Weil [Thu, 13 Jun 2013 04:26:17 +0000 (21:26 -0700)]
Merge remote-tracking branch 'gh/next'

12 years agoMerge pull request #351 from ceph/wip-var-run
Sage Weil [Thu, 13 Jun 2013 04:24:16 +0000 (21:24 -0700)]
Merge pull request #351 from ceph/wip-var-run

Reviewed-by: Dan Mick <dan.mick@inktank.com>
12 years agovstart.sh: set run_dir to out 351/head
Sage Weil [Thu, 13 Jun 2013 04:23:46 +0000 (21:23 -0700)]
vstart.sh: set run_dir to out

This avoids annoying errors about creating /var/run/ceph from
init-ceph.

Fixes: #4036
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agorbd image_read.sh: wait for rbd sysfs files to appear
Josh Durgin [Thu, 13 Jun 2013 03:34:09 +0000 (20:34 -0700)]
rbd image_read.sh: wait for rbd sysfs files to appear

Poll until they are available for chmoding.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoosdc/Objecter: fix handling for osd_command dne/down cases
Sage Weil [Thu, 13 Jun 2013 01:13:12 +0000 (18:13 -0700)]
osdc/Objecter: fix handling for osd_command dne/down cases

Generalize the map check machinery that the pool dne check uses to also
get the latest map for OSD down/dne checks.  This is better semantics, but
more important fixes the more immediate bug of returning the error code
to the caller from the osd_command -> _submit_command (that is ignored by
pretty much any caller) and then never triggering the callback.

Fixes: #5331
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
12 years agoinit-ceph: look to ceph.conf instead of hard-coding /var/run/ceph
Sage Weil [Sat, 8 Jun 2013 00:04:04 +0000 (17:04 -0700)]
init-ceph: look to ceph.conf instead of hard-coding /var/run/ceph

It could be elsewhere!

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoglobal: create /var/run/ceph on daemon startup
Sage Weil [Sat, 8 Jun 2013 00:03:41 +0000 (17:03 -0700)]
global: create /var/run/ceph on daemon startup

This handles cases where the daemon is started without the benefit of
sysvinit or upstart (as with teuthology or ceph-fuse).

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoceph: only use readline when in interactive mode
Sage Weil [Wed, 12 Jun 2013 23:22:45 +0000 (16:22 -0700)]
ceph: only use readline when in interactive mode

A mere

  import readline

line is dumping this to stdout on CentOS 6.3:

  00000000  1b 5b 3f 31 30 33 34 68  .[?1034h

That confuses non-terminals that read from stdout, so only import when we
are in the interactive mode.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
12 years agomon: fix read of format_version out of leveldb
Sage Weil [Wed, 12 Jun 2013 18:23:23 +0000 (11:23 -0700)]
mon: fix read of format_version out of leveldb

The get_version(string, string) is the wrong method; it combines the two
args into a key that is nested inside prefix (so it's prefix/a/b), but we
want perfix/format_version.  Add a method to grab an int for this
particular combo and use that.

This fixes an infinite loop when we actually trigger this code.

Bug introduced by f43c974571beac0c8e54fa699bfa96a1befaf56c.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agodoc/release-notes: v0.63 and v0.64 notes
Sage Weil [Wed, 12 Jun 2013 22:29:42 +0000 (15:29 -0700)]
doc/release-notes: v0.63 and v0.64 notes

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge branch 'next'
Gary Lowell [Wed, 12 Jun 2013 22:00:05 +0000 (15:00 -0700)]
Merge branch 'next'

12 years agoceph: make life easier on developers by handling in-tree runs
Dan Mick [Wed, 12 Jun 2013 02:46:53 +0000 (19:46 -0700)]
ceph: make life easier on developers by handling in-tree runs

If <path-to-ceph> contains pybind and .libs:
- prepend <path-to-ceph>/pybind to PYTHONPATH
- append <path-to-ceph>/.libs to LD_LIBRARY_PATH if not already there
  and exec self so it takes effect

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoqa/workunits/cephtool/test.sh: look for 'ceph log' via -w, not in log file
Sage Weil [Wed, 12 Jun 2013 21:00:24 +0000 (14:00 -0700)]
qa/workunits/cephtool/test.sh: look for 'ceph log' via -w, not in log file

'ceph-conf ...' doesn't give you final/default values, only what is in the
conf file.  Use -w output to test this instead.

Fixes: #5327
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoceph: flush stdout on watch print
Sage Weil [Wed, 12 Jun 2013 20:59:37 +0000 (13:59 -0700)]
ceph: flush stdout on watch print

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge pull request #357 from atwardowski/patch-1
Sage Weil [Wed, 12 Jun 2013 20:50:15 +0000 (13:50 -0700)]
Merge pull request #357 from atwardowski/patch-1

Usage log and ops log are disabled by defaults since 0.56

12 years agoUsage log and ops log are disabled by defaults since 0.56 357/head
atwardowski [Wed, 12 Jun 2013 20:48:44 +0000 (17:48 -0300)]
Usage log and ops log are disabled by defaults since 0.56

http://ceph.com/docs/next/release-notes/#v0-56-bobtail

12 years agomon: fix 'pg dump_stuck' stuckops type
Sage Weil [Wed, 12 Jun 2013 20:39:30 +0000 (13:39 -0700)]
mon: fix 'pg dump_stuck' stuckops type

It's a list.

Fixes: #5332
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
12 years agoMerge remote-tracking branch 'gh/wip_5238'
Sage Weil [Wed, 12 Jun 2013 20:31:22 +0000 (13:31 -0700)]
Merge remote-tracking branch 'gh/wip_5238'

Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoqa: multiple_rsync.sh: more output
Sage Weil [Wed, 12 Jun 2013 20:26:03 +0000 (13:26 -0700)]
qa: multiple_rsync.sh: more output

Trying to track down this failure:

2013-06-12T06:11:13.430 INFO:teuthology.task.workunit.client.0.err:+ rsync -auv --exclude local/ /usr/ usr.2
2013-06-12T06:11:13.430 INFO:teuthology.task.workunit.client.0.err:+ tee a
2013-06-12T06:11:13.527 INFO:teuthology.task.workunit.client.0.out:sending incremental file list
2013-06-12T06:11:46.206 INFO:teuthology.task.workunit.client.0.out:
2013-06-12T06:11:46.208 INFO:teuthology.task.workunit.client.0.out:sent 1689627 bytes  received 8302 bytes  50684.45 bytes/sec
2013-06-12T06:11:46.208 INFO:teuthology.task.workunit.client.0.out:total size is 3274130495  speedup is 1928.31
2013-06-12T06:11:46.209 INFO:teuthology.task.workunit.client.0.err:+ wc -l a
2013-06-12T06:11:46.209 INFO:teuthology.task.workunit.client.0.err:+ grep 4
2013-06-12T06:11:46.211 INFO:teuthology.task.workunit:Stopping misc on client.0...

...and am perplexed!

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agov0.64 v0.64
Gary Lowell [Wed, 12 Jun 2013 16:54:06 +0000 (09:54 -0700)]
v0.64

12 years agoceph-fuse: older libfuses don't support FUSE_IOCTL_COMPAT
Dan Mick [Wed, 12 Jun 2013 01:33:08 +0000 (18:33 -0700)]
ceph-fuse: older libfuses don't support FUSE_IOCTL_COMPAT

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoceph-create-keys: Make sure directories for admin and bootstrap keys exist
Peter Wienemann [Tue, 11 Jun 2013 19:38:51 +0000 (21:38 +0200)]
ceph-create-keys: Make sure directories for admin and bootstrap keys exist

Signed-off-by: Peter Wienemann <wienemann@physik.uni-bonn.de>
12 years agostore_test: create_collection prior to split
Samuel Just [Tue, 11 Jun 2013 18:24:54 +0000 (11:24 -0700)]
store_test: create_collection prior to split

Fixes: #5310
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: David Zafman <david.zafman@inktank.com>
12 years agomon: adjust trim defaults
Sage Weil [Tue, 11 Jun 2013 23:30:41 +0000 (16:30 -0700)]
mon: adjust trim defaults

User testing has shown that smaller values yield better results; see #4917.
Jim's testing has had good results with even more aggressive trimming, but I
would like to do more validation yet before changing defaults.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agodoc: Reworked the landing page.
John Wilkins [Tue, 11 Jun 2013 22:32:23 +0000 (15:32 -0700)]
doc: Reworked the landing page.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agodoc: Added a hostname resolution section for local host execution.
John Wilkins [Tue, 11 Jun 2013 21:46:35 +0000 (14:46 -0700)]
doc: Added a hostname resolution section for local host execution.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agodoc: Added some tips and re-organized to simplify the process.
John Wilkins [Tue, 11 Jun 2013 21:46:12 +0000 (14:46 -0700)]
doc: Added some tips and re-organized to simplify the process.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agoclient: set issue_seq (not seq) in cap release
Sage Weil [Sun, 9 Jun 2013 00:38:07 +0000 (17:38 -0700)]
client: set issue_seq (not seq) in cap release

We regularly have been observing a stall where the MDS is blocked waiting
for a cap revocation (Ls, in our case) and never gets a reply.  We finally
tracked down the sequence:

 - mds issues cap seq 1 to client
 - mds does revocation (seq 2)
 - client replies
 - much time goes by
 - client trims inode from cache, sends release with seq == 2
 - mds ignores release because its issue_seq is 1
 - mds later tries to revoke other caps
 - client discards message because it doesn't have the inode in cache

The problem is simply that we are using seq instead of issue_seq in the
cap release message.  Note that the other release call site in
encode_inode_release() is correct.  That one is much more commonly
triggered by short tests, as compared to this case where the inode needs to
get pushed out of the client cache.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
12 years agodoc: Added some Java S3 API troubleshooting entries.
John Wilkins [Tue, 11 Jun 2013 19:12:46 +0000 (12:12 -0700)]
doc: Added some Java S3 API troubleshooting entries.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agodoc: Added install ceph-common instruction.
John Wilkins [Tue, 11 Jun 2013 19:11:51 +0000 (12:11 -0700)]
doc: Added install ceph-common instruction.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agodoc: Added install ceph-common instruction.
John Wilkins [Tue, 11 Jun 2013 19:11:26 +0000 (12:11 -0700)]
doc: Added install ceph-common instruction.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agodoc: Fixed :term" syntax.
John Wilkins [Tue, 11 Jun 2013 19:10:52 +0000 (12:10 -0700)]
doc: Fixed :term" syntax.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agoceph-create-keys: Remove unused caps parameter on bootstrap_key()
Gary Lowell [Tue, 11 Jun 2013 15:25:36 +0000 (08:25 -0700)]
ceph-create-keys:  Remove unused caps parameter on bootstrap_key()

The caps parameter was removed except for one place.

Signed-off-by: Gary Lowell <gary.lowell@inktank.com>
12 years agoMerge branch 'next'
Sage Weil [Tue, 11 Jun 2013 06:22:49 +0000 (23:22 -0700)]
Merge branch 'next'

12 years agoosd: fix con -> session ref change after hb reset
Sage Weil [Tue, 11 Jun 2013 06:21:50 +0000 (23:21 -0700)]
osd: fix con -> session ref change after hb reset

set_priv() expects to be given a reference to own; take one.  This fixes
various crashes after we see a hb connection reset.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agocommon/admin_socket: fix leak of new m_getdescs_hook
Sage Weil [Sat, 8 Jun 2013 20:56:00 +0000 (13:56 -0700)]
common/admin_socket: fix leak of new m_getdescs_hook

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agocommon/cmdparse: no need to use (and leak to) the heap
Sage Weil [Tue, 11 Jun 2013 00:11:44 +0000 (17:11 -0700)]
common/cmdparse: no need to use (and leak to) the heap

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
12 years agoCrushWrapper: dump tunables along with crush map
Dan Mick [Tue, 11 Jun 2013 00:25:55 +0000 (17:25 -0700)]
CrushWrapper: dump tunables along with crush map

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoceph: --keyring must be passed to parse_argv, which means not argparse
Dan Mick [Tue, 11 Jun 2013 01:08:31 +0000 (18:08 -0700)]
ceph: --keyring must be passed to parse_argv, which means not argparse

If argparse gets its hands on it, it's not available for parse_argv()
and is therefore ignored.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoOSD: create collection in handle_pg_create before _create_lock_pg
Samuel Just [Tue, 11 Jun 2013 00:01:02 +0000 (17:01 -0700)]
OSD: create collection in handle_pg_create before _create_lock_pg

Fixes: #5270
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoObjecter: fail osd_command if OSD is down
Dan Mick [Mon, 10 Jun 2013 22:03:37 +0000 (15:03 -0700)]
Objecter: fail osd_command if OSD is down

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agomon: send "osd create" output to stdout; tests rely on it
Dan Mick [Mon, 10 Jun 2013 20:26:06 +0000 (13:26 -0700)]
mon: send "osd create" output to stdout; tests rely on it

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoMerge pull request #349 from dachary/wip-5213
athanatos [Mon, 10 Jun 2013 23:08:46 +0000 (16:08 -0700)]
Merge pull request #349 from dachary/wip-5213

unit tests for PGLog::merge_log

Reviewed-by: Sam Just <sam.just@inktank.com>
12 years agoMerge pull request #350 from ceph/wip-osd-scrub-chunk
Sage Weil [Mon, 10 Jun 2013 16:50:52 +0000 (09:50 -0700)]
Merge pull request #350 from ceph/wip-osd-scrub-chunk

Reviewed-by: Samuel Just <sam.just@inktank.com>
12 years agounit tests for PGLog::rewind_divergent_log 349/head
Loic Dachary [Sat, 8 Jun 2013 07:45:58 +0000 (09:45 +0200)]
unit tests for PGLog::rewind_divergent_log

The tests covers 100% of the LOC of rewind_divergent_log. There are
three situations :

 * throw an assert because the data is inconsistent

 * special case when the entire logs is divergent

 * regular workflow where all divergent entries are run to
   merge_old_entry

http://tracker.ceph.com/issues/5213 refs #5213

Signed-off-by: Loic Dachary <loic@dachary.org>
12 years agounit tests for PGLog::merge_log
Loic Dachary [Fri, 7 Jun 2013 13:51:28 +0000 (15:51 +0200)]
unit tests for PGLog::merge_log

The tests covers 100% of the LOC of merge_log. It is broken down
in 7 cases to enumerate all the situations it must address. Each case
is isolated in a independant code block where the conditions are
reproduced. Where possible and sensible to read, a code block covers
as much lines as possible. For instance:

  The log entry (1,3) deletes the object x9 but the olog entry (2,3)
  modifies it and is authoritative : the log entry (1,3) is divergent.

is the only test case covering a dozen "if" statements and half a
dozen "while/for" loops. It covers all the lines but it would be
useful to create others scenarii in the future.

Each test is made of a comment describing the test case, the
definition of the data structures to create the desired conditons, a
sequence of EXPECT_* checking that they are met, a single call to
merge_log and another sequence of EXPECT_* ( ordered to be easy to
compare with the first sequence ) checking all the desired side
effects.

The TestPGLog.cc file was untabified to improve the display of ascii
art when it is output as part of a diff.

http://tracker.ceph.com/issues/5213 refs #5213

Signed-off-by: Loic Dachary <loic@dachary.org>
12 years agomessages/MMonProbe: fix uninit vars (again)
Sage Weil [Sat, 8 Jun 2013 17:53:08 +0000 (10:53 -0700)]
messages/MMonProbe: fix uninit vars (again)

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosdc/Objecter: clear osd session command ops xlist on close
Sage Weil [Sat, 8 Jun 2013 15:07:45 +0000 (08:07 -0700)]
osdc/Objecter: clear osd session command ops xlist on close

Clear the command ops list, just as we do the ops and linger_ops xlists.
This fixes a crash like this on shutdown:

2013-06-07 23:06:21.089275 7fc7e8655700 10 client.4124.objecter close_session for osd.0
2013-06-07 23:06:21.089279 7fc7e8655700  1 -- 10.3.64.22:0/1026843 mark_down 0x7fc7e0001260 -- 0x7fc7e0001000
./include/xlist.h: In function 'xlist<T>::~xlist() [with T = Objecter::CommandOp*]' thread 7fc7e8655700 time 2013-06-07 23:06:21.089401
./include/xlist.h: 69: FAILED assert(_size == 0)
 ceph version 0.63-553-ge8300d0 (e8300d0afb5154d4d13536abdcf47bd5cc8ce810)
 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x80) [0x7fc7ec111f14]
 2: (xlist<Objecter::CommandOp*>::~xlist()+0x36) [0x7fc7ec09f95e]
 3: (Objecter::OSDSession::~OSDSession()+0x1d) [0x7fc7ec09e451]
 4: (Objecter::close_session(Objecter::OSDSession*)+0x1fc) [0x7fc7ec08a146]
 5: (Objecter::handle_osd_map(MOSDMap*)+0xe68) [0x7fc7ec087864]
 6: (librados::RadosClient::_dispatch(Message*)+0x84) [0x7fc7ec0615f0]
 7: (librados::RadosClient::ms_dispatch(Message*)+0x16b) [0x7fc7ec0613c1]
 8: (Messenger::ms_deliver_dispatch(Message*)+0x8c) [0x7fc7ec21d0f6]
 9: (DispatchQueue::entry()+0x52f) [0x7fc7ec21c653]
 10: (DispatchQueue::DispatchThread::entry()+0x1c) [0x7fc7ec2bdcc2]
 11: (Thread::_entry_func(void*)+0x23) [0x7fc7ec34d8cd]
 12: (()+0x6b50) [0x7fc7eb2feb50]
 13: (clone()+0x6d) [0x7fc7eab2c6dd]

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agolibrados: fix pg command test
Sage Weil [Sun, 9 Jun 2013 04:38:18 +0000 (21:38 -0700)]
librados: fix pg command test

Stat a bunch of (non-existent) random objects in the pool so ensure the
pg exists on the OSD before we assert that we get a 0 from querying it.

Although it is somewhat tempting to make the pg commands block until the
pg exists, that defeats much of the value of the command as a diagnostic
tool as it could block indefinitely instead of informing the admin/dev
that "the pg isn't there yet".

In any case, this fixes the api test failure.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agolibrados.h: Fix up some doxygen problems
Dan Mick [Sat, 8 Jun 2013 05:50:09 +0000 (22:50 -0700)]
librados.h: Fix up some doxygen problems

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agomds: fix filelock eval_gather
Sage Weil [Sat, 8 Jun 2013 05:04:09 +0000 (22:04 -0700)]
mds: fix filelock eval_gather

Broken by a08d62045657713bf0a5372bf14136082ec3b17e

Reported-by: Yan, Zheng <yan.zheng@intel.com>
Signed-off-by: Sage Weil <sage@inktank.com>
12 years ago.gitignore: add 'ceph', now a generated file
Dan Mick [Sat, 8 Jun 2013 04:47:11 +0000 (21:47 -0700)]
.gitignore: add 'ceph', now a generated file

12 years agoceph: old daemons output to outs and outbuf, combine
Dan Mick [Fri, 7 Jun 2013 23:39:34 +0000 (16:39 -0700)]
ceph: old daemons output to outs and outbuf, combine

When talking to old daemons, if a command succeeds, there may be
output on outs, outbuf, or both; combine them if there's no error,
and clear outs so it's not treated as stderr fodder.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoceph: handle old OSDs as command destinations, fix status part of -w
Dan Mick [Fri, 7 Jun 2013 23:24:28 +0000 (16:24 -0700)]
ceph: handle old OSDs as command destinations, fix status part of -w

For osd tell or pg <pgid> commands, the CLI sends the command directly
to the OSD; if the OSDs are still old, the command needs to be sent
in 'plain' (non-JSON) form.  Also, the 'ceph status' from -w needs to
handle failure/fallback-to-old-command.

Refactor the guts of json_command() into send_command(), and call it
from json_command() and where needed for old-style commands.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoMerge pull request #352 from ceph/wip-4832
Gregory Farnum [Sat, 8 Jun 2013 00:24:01 +0000 (17:24 -0700)]
Merge pull request #352 from ceph/wip-4832

mds: do not double-queue file recovery in eval_gather
Reviewed-by: Greg Farnum <greg@inktank.com>
12 years agoceph: add -v for version. Makefile processes ceph_ver.h
Dan Mick [Fri, 7 Jun 2013 03:58:51 +0000 (20:58 -0700)]
ceph: add -v for version.  Makefile processes ceph_ver.h

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoMerge pull request #343 from dalgaaf/wip-da-SCA-cppcheck
Sage Weil [Sat, 8 Jun 2013 00:12:10 +0000 (17:12 -0700)]
Merge pull request #343 from dalgaaf/wip-da-SCA-cppcheck

Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoosd: make scrub chunk size tunable 350/head
Sage Weil [Fri, 7 Jun 2013 22:16:42 +0000 (15:16 -0700)]
osd: make scrub chunk size tunable

It was hard-coded at 5.  Make it range from 5-15 by default, for now.

We should still keep this smallish since this range is locked for the
duration of the scrub on this chunk.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agorados: --num-objects will now cause bench to stop after that many objects
Samuel Just [Wed, 5 Jun 2013 19:27:56 +0000 (12:27 -0700)]
rados: --num-objects will now cause bench to stop after that many objects

Reviewed-by: David Zafman <david.zafman@inktank.com>
Signed-off-by: Samuel Just <sam.just@inktank.com>
12 years agotest_filestore_idempotent: use obj name from source coll add
Samuel Just [Wed, 5 Jun 2013 21:28:02 +0000 (14:28 -0700)]
test_filestore_idempotent: use obj name from source coll add

Fixes: #5240
Reviewed-by: David Zafman <david.zafman@inktank.com>
Signed-off-by: Samuel Just <sam.just@inktank.com>
12 years agoMerge remote-tracking branch 'gh/next'
Sage Weil [Fri, 7 Jun 2013 21:23:48 +0000 (14:23 -0700)]
Merge remote-tracking branch 'gh/next'

Conflicts:
src/messages/MMonProbe.h

12 years agorgw: handle deep uri resources
Yehuda Sadeh [Fri, 7 Jun 2013 04:53:00 +0000 (21:53 -0700)]
rgw: handle deep uri resources

In case of deep uri resources (ones created beyond a single level
of hierarchy, e.g. auth/v1.0) we want to create a new empty
handlers for the path if no handlers exists. E.g., for
auth/v1.0 we need to have a handler for 'auth', otherwise
the default S3 handler will be used, which we don't want.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
12 years agorgw: fix get_resource_mgr() to correctly identify resource
Yehuda Sadeh [Fri, 7 Jun 2013 04:47:21 +0000 (21:47 -0700)]
rgw: fix get_resource_mgr() to correctly identify resource

Fixes: #5262
The original test was not comparing the correct string, ended up
with the effect of just checking the substring of the uri to match
the resource.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
12 years agorgw: add 'cors' to the list of sub-resources
Yehuda Sadeh [Thu, 6 Jun 2013 18:22:38 +0000 (11:22 -0700)]
rgw: add 'cors' to the list of sub-resources

Fixes: #5261
Backport: cuttlefish
Add 'cors' to the list of sub-resources, otherwise auth signing
is wrong.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
12 years agoMerge branch 'wip-ceph-cli'
Dan Mick [Fri, 7 Jun 2013 17:57:51 +0000 (10:57 -0700)]
Merge branch 'wip-ceph-cli'

Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoosd: do not include logbl in scrub map
Sage Weil [Thu, 6 Jun 2013 23:35:54 +0000 (16:35 -0700)]
osd: do not include logbl in scrub map

This is a potentially use object/file, usually prefixed by a zeroed region
on disk, that is not used by scrub at all.  It dates back to
f51348dc8bdd5071b7baaf3f0e4d2e0496618f08 (2008) and the original version of
scrub.

This *might* fix #4179.  It is not a leak per se, but I observed 1GB
scrub messages going over the write.  Maybe the allocations are causing
fragmentation, or the sub_op queues are growing.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
12 years agodoc: Updated for glossary terms and added indexing.
John Wilkins [Fri, 7 Jun 2013 16:51:05 +0000 (09:51 -0700)]
doc: Updated for glossary terms and added indexing.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agodoc: Added indexing and did a bit of cleanup.
John Wilkins [Fri, 7 Jun 2013 16:50:03 +0000 (09:50 -0700)]
doc: Added indexing and did a bit of cleanup.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
12 years agomds: do not double-queue file recovery in eval_gather 352/head
Sage Weil [Fri, 7 Jun 2013 04:38:56 +0000 (21:38 -0700)]
mds: do not double-queue file recovery in eval_gather

This fixes a specific case of double-queuing seen in #4832:

 - client goes stale, inode marked NEEDSRECOVER
 - eval does sync, queued, -> RECOVERING
 - client resumes
 - client goes stale (again), inode marked NEEDSRECOVER
 - eval_gather queues *again*

Note that a cursory look at the recovery code makes me think this needs
a much more serious overhaul.  In particular, I don't think we should
be triggering recovery when transitioning *from* a stable state, but
explicitly when we are flagged, or when gathering.  We should probably
also hold a wrlock over the recovery period and remove the force_wrlock
kludge from the final size check.  Opened ticket #5268.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge branch 'wip-ceph-cli' into master
Dan Mick [Fri, 7 Jun 2013 02:12:32 +0000 (19:12 -0700)]
Merge branch 'wip-ceph-cli' into master

Conflicts:
src/include/rados/librados.h
src/librados/librados.cc
src/osdc/Objecter.cc
src/pybind/rados.py

Required modifications to:
src/osd/OSD.cc

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoMDSMonitor: dead debugging code
Dan Mick [Fri, 7 Jun 2013 00:40:53 +0000 (17:40 -0700)]
MDSMonitor: dead debugging code

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agorados.py: make exception with errno string instead of int
Dan Mick [Thu, 6 Jun 2013 20:56:54 +0000 (13:56 -0700)]
rados.py: make exception with errno string instead of int

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph, librados, rados.py, librados tests: pass cmd as array
Dan Mick [Fri, 7 Jun 2013 00:40:28 +0000 (17:40 -0700)]
ceph, librados, rados.py, librados tests: pass cmd as array

Using ceph to pass commands to the old monitor requires the
message to have words in a vector; this means that we need to pass
the command as an array to rados_mon_command.  Really, all of the
rados_X_command functions should take an array for flexibility and
parallel structure, so change them all, and the Python bindings,
and the test programs that use them.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph: -v should mean version, not --verbose
Dan Mick [Fri, 7 Jun 2013 00:35:37 +0000 (17:35 -0700)]
ceph: -v should mean version, not --verbose

To be implemented soon with ceph_ver.h

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph: error and verbose message improvement
Dan Mick [Thu, 6 Jun 2013 21:57:20 +0000 (14:57 -0700)]
ceph: error and verbose message improvement

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph: refactor -s -> status to common code, pass childargs to old mons
Dan Mick [Thu, 6 Jun 2013 21:57:03 +0000 (14:57 -0700)]
ceph: refactor -s -> status to common code, pass childargs to old mons

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agolibrados: rados_X_command need to assemble a vector from char *cmd
Dan Mick [Thu, 6 Jun 2013 20:41:38 +0000 (13:41 -0700)]
librados: rados_X_command need to assemble a vector from char *cmd

The old monitors take a vector with words split; new monitors don't
care, but the old ones do

Signed-off-by: Dan Mick <dan.mick@inktank.com>