]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
12 years agolibrados: wait for osdmap for commands that need it
Sage Weil [Thu, 13 Jun 2013 23:39:30 +0000 (16:39 -0700)]
librados: wait for osdmap for commands that need it

In commit 7e1cf87b5158c870e2a118ed6d316be8cb9818ce we stopped waiting for
the osdmap on start because the Objecter will normally wait, but for some
commands we assume the osdmap is recent(ish).

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
12 years agoMerge branch 'wip-objecter' into next
Sage Weil [Thu, 13 Jun 2013 23:15:44 +0000 (16:15 -0700)]
Merge branch 'wip-objecter' into next

Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
12 years agoosdc/Objecter: dump command ops
Sage Weil [Thu, 13 Jun 2013 23:01:31 +0000 (16:01 -0700)]
osdc/Objecter: dump command ops

Dump command_ops along with everything else.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosdc/Objecter: ping osds for which we have pending commands
Sage Weil [Thu, 13 Jun 2013 22:57:57 +0000 (15:57 -0700)]
osdc/Objecter: ping osds for which we have pending commands

As with ops and linger_ops, this ensures we detect connection resets.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoceph.in: refuse 'ceph <type> tell' commands; suggest 'ceph tell <type>'
Dan Mick [Thu, 13 Jun 2013 22:48:32 +0000 (15:48 -0700)]
ceph.in: refuse 'ceph <type> tell' commands; suggest 'ceph tell <type>'

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoceph.in: argparsing cleanup: suppress --completion, add help
Dan Mick [Thu, 13 Jun 2013 22:30:38 +0000 (15:30 -0700)]
ceph.in: argparsing cleanup: suppress --completion, add help

Options -v, --verbose, --concise didn't have helpstrings
Option --completion doesn't quite work yet, and should be hidden anyway

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoosdc/Objecter: kick command ops on osd con resets
Sage Weil [Thu, 13 Jun 2013 22:13:47 +0000 (15:13 -0700)]
osdc/Objecter: kick command ops on osd con resets

Resend osd/pg commands on the OSDSession, just as we do with other request
types.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosdc/Objecter: add perfcounters for commands
Sage Weil [Thu, 13 Jun 2013 22:13:18 +0000 (15:13 -0700)]
osdc/Objecter: add perfcounters for commands

This matches the other counters we maintain for other kinds of ops.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon: fix idempotency of 'osd crush add'
Sage Weil [Thu, 13 Jun 2013 21:01:01 +0000 (14:01 -0700)]
mon: fix idempotency of 'osd crush add'

If we add an item that already exists in particular position, we should
update instead of inserting it; the CrushWrapper methods are not
idempotent.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agolibrados: do not wait for osdmap on start
Sage Weil [Thu, 13 Jun 2013 21:42:03 +0000 (14:42 -0700)]
librados: do not wait for osdmap on start

If we abort while waiting, we incorrect clean up (we switch the state value
incorrectly, and also fail to clean up the initialized objecter).

Intead, skip this wait.. it's useless!

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
12 years agomon/MonmapMonitor: remove unused label
Sage Weil [Thu, 13 Jun 2013 18:27:49 +0000 (11:27 -0700)]
mon/MonmapMonitor: remove unused label

mon/MonmapMonitor.cc: In member function 'bool MonmapMonitor::preprocess_command(MMonCommand*)':
mon/MonmapMonitor.cc:273:2: warning: label 'out' defined but not used [-Wunused-label]

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon/MonCap: bootstrap-* need to subscribe to osdmap, monmap
Sage Weil [Thu, 13 Jun 2013 18:27:23 +0000 (11:27 -0700)]
mon/MonCap: bootstrap-* need to subscribe to osdmap, monmap

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge branch 'wip-tell' into next
Sage Weil [Thu, 13 Jun 2013 16:27:15 +0000 (09:27 -0700)]
Merge branch 'wip-tell' into next

Reviewed-by: Dan Mick <dan.mick@inktank.com>
12 years agomon: remove support for 'mon tell ...' and 'osd tell ...'
Sage Weil [Wed, 12 Jun 2013 23:56:45 +0000 (16:56 -0700)]
mon: remove support for 'mon tell ...' and 'osd tell ...'

It doesn't work.  The commands the ceph cli sends are vector<string>, and
the mon expects json.

Leave the MDS on in place since ceph-mds still takes strings.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoceph: add support for 'tell mon.X ...'
Sage Weil [Wed, 12 Jun 2013 23:55:03 +0000 (16:55 -0700)]
ceph: add support for 'tell mon.X ...'

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agolibrados: new rados_mon_command_target to talk to a specific monitor
Sage Weil [Wed, 12 Jun 2013 23:36:39 +0000 (16:36 -0700)]
librados: new rados_mon_command_target to talk to a specific monitor

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoUpdate README dependency lists
Dan Mick [Thu, 13 Jun 2013 05:25:04 +0000 (22:25 -0700)]
Update README dependency lists

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph-disk: extra dash in error message
Dan Mick [Thu, 13 Jun 2013 05:22:42 +0000 (22:22 -0700)]
ceph-disk: extra dash in error message

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoClean up CrushWrapper methods that take string: no c_str() necessary
Dan Mick [Thu, 13 Jun 2013 03:59:49 +0000 (20:59 -0700)]
Clean up CrushWrapper methods that take string: no c_str() necessary

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoOSDMonitor: osd id when id already exists needs to come to stdout too
Dan Mick [Thu, 13 Jun 2013 03:59:08 +0000 (20:59 -0700)]
OSDMonitor: osd id when id already exists needs to come to stdout too

Found by qa/workunits/mon/osd.sh

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoceph, mon/OSDMonitor: fix up osd crush commands for <osd.N> or <N>
Dan Mick [Thu, 13 Jun 2013 01:08:17 +0000 (18:08 -0700)]
ceph, mon/OSDMonitor: fix up osd crush commands for <osd.N> or <N>

The new parsing code had been trying to allow flexibility for the
'old form' commands (where id could be different from N in osd.N),
but also accept 'new form' commands.  The new rule is that where
there's an OSD specified in the osd crush command, it is of type
CephOsdName, which can be an id *or* 'osd.<id>', but not both.

Pass CephOsdName as int64_t 'id' for convenience in mon code

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agomon/MonClient: send commands to a specific monitor
Sage Weil [Wed, 12 Jun 2013 23:36:21 +0000 (16:36 -0700)]
mon/MonClient: send commands to a specific monitor

This implementation is limited: we direct our command by reopening
a session with the specific monitor.  If there is more than one of these
queued we will fail to reach either.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoceph: implement 'ceph tell osd.* ...'
Sage Weil [Wed, 12 Jun 2013 21:55:15 +0000 (14:55 -0700)]
ceph: implement 'ceph tell osd.* ...'

Send the command to each target.  Do this in series, for now.  Error out if
any one fails.

Later, we should do them in parallel.

Signed-off-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 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 agoMerge branch 'next'
Gary Lowell [Wed, 12 Jun 2013 22:00:05 +0000 (15:00 -0700)]
Merge branch 'next'

12 years agoceph: filter out empty lines from osdids()
Sage Weil [Wed, 12 Jun 2013 21:54:10 +0000 (14:54 -0700)]
ceph: filter out empty lines from osdids()

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoceph: accept osd.* as a valid name
Sage Weil [Wed, 12 Jun 2013 21:53:56 +0000 (14:53 -0700)]
ceph: accept osd.* as a valid name

This will be used for 'ceph tell osd.* ...'

Signed-off-by: Sage Weil <sage@inktank.com>
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>
12 years agolibrados, ceph, rados.py: -EINVAL for create with null/invalid name
Dan Mick [Thu, 6 Jun 2013 20:01:12 +0000 (13:01 -0700)]
librados, ceph, rados.py: -EINVAL for create with null/invalid name

Means setting defaults should be more careful throughout as well

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph: improve error reporting on failure to connect to cluster
Dan Mick [Thu, 6 Jun 2013 20:57:17 +0000 (13:57 -0700)]
ceph: improve error reporting on failure to connect to cluster

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph: fix up old-monitor handling
Dan Mick [Thu, 6 Jun 2013 03:12:26 +0000 (20:12 -0700)]
ceph: fix up old-monitor handling

Finish command after submitting to old monitor, rather than falling
through to new-command handling
Also, translate -s to status for old mons as well

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph: catch/handle exceptions in admin socket commands
Dan Mick [Thu, 6 Jun 2013 01:17:26 +0000 (18:17 -0700)]
ceph: catch/handle exceptions in admin socket commands

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agoceph: collect/use clustername, and set defaults like other utilities
Dan Mick [Thu, 6 Jun 2013 01:16:52 +0000 (18:16 -0700)]
ceph: collect/use clustername, and set defaults like other utilities

(defaults like log_to_stderr, err_to_stderr)

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