]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
12 years agoosd: use OSDService send_message helper from PG context
Sage Weil [Thu, 29 Nov 2012 17:21:49 +0000 (09:21 -0800)]
osd: use OSDService send_message helper from PG context

Use the OSDService helper to send messages to peers.  This ensures that if
we are on an older OSDMap the messages don't actually get sent to down
OSDs that handle_osd_map has done mark_down() on.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: simplify active_committed
Sage Weil [Thu, 29 Nov 2012 00:08:04 +0000 (16:08 -0800)]
osd: simplify active_committed

Way back in 4b3bb5ab37a05fa001d59f24da7d9c30d650321b we changed this to
pass an entity_inst_t down to fix a race. The refactor of the PG map
handling made this unnecessary; remove it.  The PG's OSDMap is not coherent
with respect to the PG when we take the lock, which is all that is
needed here.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: use safe OSDService msgr helpers for heartbeats
Sage Weil [Thu, 29 Nov 2012 00:04:44 +0000 (16:04 -0800)]
osd: use safe OSDService msgr helpers for heartbeats

Get connections via the OSDService helper.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: helpers to blacklist messages to down osds
Sage Weil [Thu, 29 Nov 2012 00:02:59 +0000 (16:02 -0800)]
osd: helpers to blacklist messages to down osds

There is a race between handle_osd_map -> note_down_osd() and PG threads:

 - handle_osd_map -> note_down_osd marks down an osd for epoch N
 - a pg thread with epoch <N sends a message to the (old) peer, reopening
   the msgr connection
 - nobody cleans up

Introduce a pre_publish_map() OSDService method and helpers for sending
messages to peers.  Pass in the epoch we are working from, and drop the
message on the floor if the target OSD has been since marked down.

See #3548.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agocreate qa/workunits/rbd/map-unmap.sh
Alex Elder [Wed, 28 Nov 2012 23:07:43 +0000 (17:07 -0600)]
create qa/workunits/rbd/map-unmap.sh

This adds a bash script that creates an rbd image, then repeatedly
maps and unmaps it for a specified duration (5 minutes by default).

Signed-off-by: Alex Elder <elder@inktank.com>
12 years agolog: 10,000 recent log entries
Sage Weil [Wed, 28 Nov 2012 21:00:36 +0000 (13:00 -0800)]
log: 10,000 recent log entries

This is what we were (wrongly) doing before, so there are no memory
utilization surprises.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agolog: fix log_max_recent config
Sage Weil [Wed, 28 Nov 2012 20:59:43 +0000 (12:59 -0800)]
log: fix log_max_recent config

<facepalm>

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agorbd: fix import from stdin, add test
Dan Mick [Wed, 28 Nov 2012 00:54:43 +0000 (16:54 -0800)]
rbd: fix import from stdin, add test

Make import work; do I/O in image native block size.
Note: creating sparse images is not currently attempted; could
scan for runs of zeros and write discontiguous chunks to image.

Fixes: #3503
Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit c99d9c3ae782597984f0c67dd1488fb95bd2ce54)

12 years agorbd: allow export to stdout, add tests
Dan Mick [Wed, 28 Nov 2012 01:06:43 +0000 (17:06 -0800)]
rbd: allow export to stdout, add tests

Fixes: #3502
Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit a738f44bc4e23c8ad18f24a835fe253d5b27b9d9)

12 years agomon: fix compiler warning
Sage Weil [Wed, 28 Nov 2012 19:11:53 +0000 (11:11 -0800)]
mon: fix compiler warning

signed/unsigned comparison

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon: do not crash on invalid 'mon tell N ...' target
Sage Weil [Wed, 28 Nov 2012 04:47:31 +0000 (20:47 -0800)]
mon: do not crash on invalid 'mon tell N ...' target

Fixes: #3545
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoconfig: make $pid a metavariable
Sage Weil [Tue, 27 Nov 2012 01:46:14 +0000 (17:46 -0800)]
config: make $pid a metavariable

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agotest_rados_api_misc: fix TMAPPUT sorting test
Sage Weil [Wed, 28 Nov 2012 00:52:30 +0000 (16:52 -0800)]
test_rados_api_misc: fix TMAPPUT sorting test

Several things wrong here.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoREADME: add the libboost-thread-dev dep to the list
Sam Lang [Tue, 27 Nov 2012 23:21:40 +0000 (17:21 -0600)]
README: add the libboost-thread-dev dep to the list

Signed-off-by: Sam Lang <sam.lang@inktank.com>
12 years agoMerge branch 'wip-mds-next' into next
Sage Weil [Tue, 27 Nov 2012 22:13:09 +0000 (14:13 -0800)]
Merge branch 'wip-mds-next' into next

OSD bits Reviewed-by: Sam Just <sam.just@inktank.com>
MDS bits Reviewed-by: Sage Weil <sage@inktank.com>

12 years agoosd: detect (some) misordered ondisk tmaps
Sage Weil [Mon, 26 Nov 2012 21:17:30 +0000 (13:17 -0800)]
osd: detect (some) misordered ondisk tmaps

Detect a misordered ondisk tmap... if we are already decoding it.  We still
leave the trailing bits unchecked.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: verify TMAPPUT data is sorted
Sage Weil [Mon, 26 Nov 2012 16:25:20 +0000 (08:25 -0800)]
osd: verify TMAPPUT data is sorted

The MDS may try to write unsorted data; make sure it is sorted before
we write it.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: do not ENOENT on missing key on remove
Sage Weil [Sun, 25 Nov 2012 22:27:23 +0000 (14:27 -0800)]
osd: do not ENOENT on missing key on remove

The MDS may include RM ops in a tmap update for items that were already
removed: after restarting and replaying the journal, it doesn't know
which dentries were previously committed and which were not.

No other (known) users care about the error code.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: tolerate misordered TMAP updates
Sage Weil [Sun, 25 Nov 2012 22:24:08 +0000 (14:24 -0800)]
osd: tolerate misordered TMAP updates

The previous tmap implementation requires that the update stream be
sorted or else it will behave erratically (by placing new keys in the
map out of order).  This can cause very strange failures: reads may
appear to return the correct result initially, but once intervening
keys are remove they will not... depending on how read is implemented
on the client side.

Fix this by doing the optimized updates initially, but falling back to
a slow implementation if an unsorted update is detected.  It is slow,
but such updates are rare.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosd: move tmapup into a helper
Sage Weil [Sun, 25 Nov 2012 21:54:08 +0000 (13:54 -0800)]
osd: move tmapup into a helper

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agorbd workunit: Add tests for clones across pools
Dan Mick [Tue, 27 Nov 2012 05:29:53 +0000 (21:29 -0800)]
rbd workunit: Add tests for clones across pools

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit ece11b0ed97ac6207980b412e3b2afe869065fff)

12 years agorbd workunit: Make "remove_images" silent
Dan Mick [Tue, 27 Nov 2012 05:29:37 +0000 (21:29 -0800)]
rbd workunit: Make "remove_images" silent

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit 0be9b15b7972252505cbd838fd9d45e0e04404bf)

12 years agorbd workunit: Add tests for cross-pool rename
Dan Mick [Tue, 27 Nov 2012 04:42:05 +0000 (20:42 -0800)]
rbd workunit: Add tests for cross-pool rename

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit a96ede944f1a227960877dee715b1f96895b4228)

12 years agorbd: tests for copy with explicit/implicit pool names
Dan Mick [Fri, 16 Nov 2012 06:49:16 +0000 (22:49 -0800)]
rbd: tests for copy with explicit/implicit pool names

Validate change to not assume dest pool == src pool

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit 39180430b9be14a94502b7e5bef30dd582ce3ad8)

12 years agorbd: fix import pool assumptions
Dan Mick [Fri, 16 Nov 2012 06:41:36 +0000 (22:41 -0800)]
rbd: fix import pool assumptions

import allows specifying one image, implicitly or explicitly the
"source" image, even though it's really the destination.  Fix up
the reassignment of 'source' to 'dest', and check for and complain
about specifying two different pools or images for import.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit c219698149c2fe4d2539f0bc1e2009b937aa4250)

12 years agorbd: change destpool assumptions.
Dan Mick [Thu, 15 Nov 2012 23:55:10 +0000 (15:55 -0800)]
rbd: change destpool assumptions.

Don't default destpool to srcpool; it's surprising, and
not useful/helpful enough to violate the convention that
"default pool is rbd"

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit 3b0c36052806a4574ede6a9f0594dc83f7997bcc)

12 years agorbd: --size fixes
Dan Mick [Thu, 15 Nov 2012 22:52:39 +0000 (14:52 -0800)]
rbd: --size fixes

* require --size/-s for both create *and* resize
* explicitly permit create with size 0.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit 08f47a42b5dcf77c40e3c1472739554452993412)

12 years agorbd: allow parsing image@snap even if --pool given
Dan Mick [Thu, 15 Nov 2012 22:41:46 +0000 (14:41 -0800)]
rbd: allow parsing image@snap even if --pool given

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit e452df6dadd443d135527b49784a47ad21429cc1)

12 years agoMerge remote-tracking branch 'gh/wip-mon-workloadgen' into next
Sage Weil [Tue, 27 Nov 2012 20:54:40 +0000 (12:54 -0800)]
Merge remote-tracking branch 'gh/wip-mon-workloadgen' into next

12 years agotest: mon: run_test.sh: helper script for the mon's workloadgen
Joao Eduardo Luis [Tue, 30 Oct 2012 21:47:33 +0000 (21:47 +0000)]
test: mon: run_test.sh: helper script for the mon's workloadgen

Takes advantage of qa/workunits/mon/workloadgen.sh to avoid duplicating
code.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agoqa: workunits: mon: add workloadgen's workunit
Joao Eduardo Luis [Sun, 4 Nov 2012 17:40:19 +0000 (17:40 +0000)]
qa: workunits: mon: add workloadgen's workunit

Uses test/mon/test_osd_workloadgen to generate a bunch of map
changes

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agotest: mon: workload generator
Joao Eduardo Luis [Fri, 26 Oct 2012 21:59:00 +0000 (22:59 +0100)]
test: mon: workload generator

User-space tool that interacts with the monitor, with the objective of
generating a workload mimicking a set of OSDs and clients.

As it is, the tool will mimic any number of OSDs, by keeping in-memory
stubs that will act as independent OSDs, generating random operations
that will induce map updates; the client stub, on the other hand,
performs no operations besides connecting to the monitor and whatever
happens between the Objecter class and the monitor (mainly keeping
updated with map updates).

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agomessages: MLog: make ctor's uuid argument a const
Joao Eduardo Luis [Sun, 4 Nov 2012 17:38:28 +0000 (17:38 +0000)]
messages: MLog: make ctor's uuid argument a const

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agomon: Monitor: use existing strict_strtol() on parse_pos_long()
Joao Eduardo Luis [Tue, 30 Oct 2012 22:46:24 +0000 (22:46 +0000)]
mon: Monitor: use existing strict_strtol() on parse_pos_long()

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agocrush: relax the order by which rules and buckets must be defined
Joao Eduardo Luis [Tue, 30 Oct 2012 21:37:47 +0000 (21:37 +0000)]
crush: relax the order by which rules and buckets must be defined

Before we only allowed buckets (say, 'root') to be defined *before*
rules.

With this patch, we allow buckets and rules to be defined by any order,
although some care should be taken when creating the plain-text crush
map, or the crushtool will error out when a rule uses a bucket only
defined later on in the file.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agocrushtool: rework how verbosity works
Joao Eduardo Luis [Tue, 30 Oct 2012 21:27:15 +0000 (21:27 +0000)]
crushtool: rework how verbosity works

'verbose' was a bool that would either be passed as one or zero to class
CrushCompile. However, most messages would only be outputted with a
verbose level > 1.

This patch makes it so that multiple '-v' increase the verbosity level;
i.e., -v mean verbose = 1; -v -v means verbose = 2; and so forth.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agoMerge remote-tracking branch 'gh/wip-perf' into next
Sage Weil [Tue, 27 Nov 2012 17:29:03 +0000 (09:29 -0800)]
Merge remote-tracking branch 'gh/wip-perf' into next

Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agoMerge remote-tracking branch 'gh/wip-crush' into next
Sage Weil [Tue, 27 Nov 2012 17:28:18 +0000 (09:28 -0800)]
Merge remote-tracking branch 'gh/wip-crush' into next

12 years agofix syncfs handling in error case
Danny Al-Gaaf [Tue, 27 Nov 2012 15:54:40 +0000 (16:54 +0100)]
fix syncfs handling in error case

If the call to syncfs() fails, don't try to call syncfs again via
syscall(). If HAVE_SYS_SYNCFS is defined, don't fall through to try
syscall() with SYS_syncfs or __NR_syncfs.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
12 years agomds: don't add not issued caps when confirming cap receipt
Yan, Zheng [Mon, 19 Nov 2012 02:43:35 +0000 (10:43 +0800)]
mds: don't add not issued caps when confirming cap receipt

There is message ordering race in cephfs kernel client. We compose
cap messages when i_ceph_lock is hold. But when adding messages
to the output queue, the kernel releases i_ceph_lock and acquires
a mutex. So it is possible that cap messages are send out of order.
If the kernel client send a cap update, then send a cap release,
but the two messages reach MDS out of order. The update message
will re-add the released caps. This patch adds code to check if
caps were actually issued when confirming cap receipt.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
12 years agomds: check parent inode's versionlock when propagating rstats
Yan, Zheng [Mon, 19 Nov 2012 02:43:41 +0000 (10:43 +0800)]
mds: check parent inode's versionlock when propagating rstats

To propagate rstats to one level up, we need lock both parent
inode's nestlock and versionlock.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
12 years agomds: fix anchor table update
Yan, Zheng [Mon, 19 Nov 2012 02:43:34 +0000 (10:43 +0800)]
mds: fix anchor table update

The reference count of an anchor table entry that corresponds to
directory is number of anchored inodes under the directory. But
when updating anchor trace for an directory inode, the code only
increases/decreases its new/old ancestor anchor table entries'
reference counts by one.

This patch probably resolves BUG #1850.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
12 years agomds: don't expire log segment before it's fully flushed
Yan, Zheng [Mon, 19 Nov 2012 02:43:33 +0000 (10:43 +0800)]
mds: don't expire log segment before it's fully flushed

Expiring log segment before it's fully flushed may cause various
issues during log replay.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
12 years agoosdc/ObjectCacher: remove unused waitfor_{rd,wr}
Sage Weil [Tue, 27 Nov 2012 05:11:13 +0000 (21:11 -0800)]
osdc/ObjectCacher: remove unused waitfor_{rd,wr}

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosdc/ObjectCacher: *do* pin object during write
Sage Weil [Tue, 27 Nov 2012 05:13:32 +0000 (21:13 -0800)]
osdc/ObjectCacher: *do* pin object during write

This hopefully resolves #3431.

We originally did this in 46897fd4ffc2fe2fc2cc0c39b5d4c510df1e6c25, and
then reverted in caed0e917f8044d389d01de5ee5ecbf0d16ff349.

The current conundrum:
 - commit_set() will issue a write and queue a waiter on a tid
 - discard will discard all BufferHeads and unpin the object
 - trim will try to close and fail assert(ob->can_close())

But:
 - we can't wake the waiter on discard because we don't know what range(s)
   it is waiting for; discard needn't be the whole object.

So: pin the object so it doesn't get trimmed, and unpin when we write.

Adjust can_close() so that it is based on the lru pin status, and assert
that pinned implies the previous conditions are all true.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Sam Lang <sam.lang@inktank.com>
12 years agomon, osd: adjust msgr requires for CRUSH_TUNABLES2 feature
Sage Weil [Mon, 26 Nov 2012 00:52:25 +0000 (16:52 -0800)]
mon, osd: adjust msgr requires for CRUSH_TUNABLES2 feature

Make this code a bit manageable for multiple features.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agocrush: introduce CRUSH_TUNABLES2 feature
Sage Weil [Mon, 26 Nov 2012 00:51:57 +0000 (16:51 -0800)]
crush: introduce CRUSH_TUNABLES2 feature

For the chooseleaf_descend_once flag.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agocrush: for chooseleaf rules, retry CRUSH map descent from root if leaf is failed
Jim Schutt [Mon, 10 Sep 2012 21:43:19 +0000 (15:43 -0600)]
crush: for chooseleaf rules, retry CRUSH map descent from root if leaf is failed

Consider the CRUSH rule
  step chooseleaf firstn 0 type <node_type>

This rule means that <n> replicas will be chosen in a manner such that
each chosen leaf's branch will contain a unique instance of <node_type>.

When an object is re-replicated after a leaf failure, if the CRUSH map uses
a chooseleaf rule the remapped replica ends up under the <node_type> bucket
that held the failed leaf.  This causes uneven data distribution across the
storage cluster, to the point that when all the leaves but one fail under a
particular <node_type> bucket, that remaining leaf holds all the data from
its failed peers.

This behavior also limits the number of peers that can participate in the
re-replication of the data held by the failed leaf, which increases the
time required to re-replicate after a failure.

For a chooseleaf CRUSH rule, the tree descent has two steps: call them the
inner and outer descents.

If the tree descent down to <node_type> is the outer descent, and the descent
from <node_type> down to a leaf is the inner descent, the issue is that a
down leaf is detected on the inner descent, so only the inner descent is
retried.

In order to disperse re-replicated data as widely as possible across a
storage cluster after a failure, we want to retry the outer descent. So,
fix up crush_choose() to allow the inner descent to return immediately on
choosing a failed leaf.  Wire this up as a new CRUSH tunable.

Note that after this change, for a chooseleaf rule, if the primary OSD
in a placement group has failed, choosing a replacement may result in
one of the other OSDs in the PG colliding with the new primary.  This
requires that OSD's data for that PG to need moving as well.  This
seems unavoidable but should be relatively rare.

Signed-off-by: Jim Schutt <jaschut@sandia.gov>
12 years agorgw: document ops logging setup
Yehuda Sadeh [Mon, 26 Nov 2012 23:54:06 +0000 (15:54 -0800)]
rgw: document ops logging setup

Fixes: #3530
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agorgw: usage REST api handles cateogories
Yehuda Sadeh [Mon, 26 Nov 2012 22:56:18 +0000 (14:56 -0800)]
rgw: usage REST api handles cateogories

Fixes: #3528
The usage REST api was missing the categories filter.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agoperfcounters: fl -> time, use u64 nsec instead of double
Sage Weil [Mon, 26 Nov 2012 22:34:44 +0000 (14:34 -0800)]
perfcounters: fl -> time, use u64 nsec instead of double

(Almost) all current float users are actually time values, so switch to
a utime_t-based interface and internally using nsec in a u64.  This avoids
using floating point in librbd, which is problematic for windows VMs that
leave the FPU in an unfriendly state.

There are two non-time users in the mds and osd that log the CPU load.
Just multiply those values by 100 and report as ints instead.

Fixes: #3521
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoperfcounters: add 'perf' option to disable perf counters
Sage Weil [Sat, 24 Nov 2012 17:30:07 +0000 (09:30 -0800)]
perfcounters: add 'perf' option to disable perf counters

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agologrotate on systems without invoke-rc.d
Alexandre Oliva [Mon, 26 Nov 2012 21:13:46 +0000 (13:13 -0800)]
logrotate on systems without invoke-rc.d

The which command doesn't output anything to stdout when it can't find
the given program name, and then [ -x ] passes.  Use the exit status
of which to tell whether the command exists, before testing whether
it's executable, to fix it.

Signed-off-by: Alexandre Oliva <oliva@lsd.ic.unicamp.br>
12 years agoSearch for srcdir/.git in check_version
Alexandre Oliva [Mon, 26 Nov 2012 21:13:45 +0000 (13:13 -0800)]
Search for srcdir/.git in check_version

Support srcdir != . looking for .git in srcdir when computing the ceph
release and git tag.

Signed-off-by: Alexandre Oliva <oliva@lsd.ic.unicamp.br>
12 years agorgw: POST requests not default to init multipart upload
Yehuda Sadeh [Mon, 26 Nov 2012 18:15:32 +0000 (10:15 -0800)]
rgw: POST requests not default to init multipart upload

Fixes: #3516
We don't default to init multipart upload request when
getting S3 POST. This way when the request is not really
init multipart upload we'd end up sending a 405 response
instead of 500. Also, it's cleaner this way.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agojava: add ceph_open_layout interface
Noah Watkins [Tue, 20 Nov 2012 21:07:00 +0000 (13:07 -0800)]
java: add ceph_open_layout interface

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
12 years agoclient: add ceph_open_layout interface
Noah Watkins [Tue, 20 Nov 2012 21:05:47 +0000 (13:05 -0800)]
client: add ceph_open_layout interface

Adds an interface identical to ceph_open() that takes additional
parameters specifying a file layout to use on new files.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
Reviewed-by: Sage Weil <sage@inktank.com>
12 years agoqa: add script to run objectcacher tests
Josh Durgin [Mon, 26 Nov 2012 18:37:17 +0000 (10:37 -0800)]
qa: add script to run objectcacher tests

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
12 years agoMerge remote-tracking branch 'gh/wip-upstart' into next
Sage Weil [Mon, 26 Nov 2012 16:38:25 +0000 (08:38 -0800)]
Merge remote-tracking branch 'gh/wip-upstart' into next

12 years agoinit-ceph: do not make noise about missing devs
Sage Weil [Mon, 26 Nov 2012 16:37:45 +0000 (08:37 -0800)]
init-ceph: do not make noise about missing devs

It is pretty normal not to include the devs line in the ceph.conf.  Do not
print/warn about it.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agosyncfs: check for __NR_syncfs too
Sage Weil [Sun, 25 Nov 2012 21:29:52 +0000 (13:29 -0800)]
syncfs: check for __NR_syncfs too

Also make the filestore startup tell us *all* variants that are
supported, not just the first one.

Tested-by: Stefan Priebe <s.priebe@profihost.ag>
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomonmap: fix crash from dup initial seed mons
Sage Weil [Sun, 25 Nov 2012 17:34:02 +0000 (09:34 -0800)]
monmap: fix crash from dup initial seed mons

Fix bug reproduced by

-m hostname,ip_that_hosthname_resolves_to

Backport: argonaut
Reported-by: Drunkard Zhang <gongfan193@gmail.com>
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoosdc/ObjectCacher: fix BufferHead leak on ENOENT
Sage Weil [Sat, 24 Nov 2012 17:37:35 +0000 (09:37 -0800)]
osdc/ObjectCacher: fix BufferHead leak on ENOENT

This was detected by fsstress over ceph-fuse under valgrind.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge remote-tracking branch 'gh/wip-mon-misc-fixes' into next
Sage Weil [Sat, 24 Nov 2012 17:16:13 +0000 (09:16 -0800)]
Merge remote-tracking branch 'gh/wip-mon-misc-fixes' into next

12 years agomake mkcephfs and init-ceph osd filesystem handling more flexible
Danny Al-Gaaf [Fri, 23 Nov 2012 17:31:10 +0000 (18:31 +0100)]
make mkcephfs and init-ceph osd filesystem handling more flexible

Remove btrfs specific keys and replace them by more generic
keys to be able to replace btrfs with e.g. xfs or ext4 easily.

Add new key to define the osd fs type: 'osd mkfs type', which can
get defined in the [osd] section for all OSDs.

Replaced config keys:
- 'btrfs devs' -> 'devs'
- 'btrfs path' -> 'fs path'
- 'btrfs options' -> 'osd mount options $fstype'

New config key:
- 'osd mkfs options $fstype': file system specific options for mkfs
- 'osd mkfs type': to define the filesystem for mkfs and also mount

Replaced in mkcephfs: --mkbtrfs with --mkfs

Replaced in init-ceph:
- --btrfs with --fsmount
- --nobtrfs with --nofsmount
- --btrfsumount with --fsumount

NOTE: old options from mkcephfs and init-ceph will still work, but
      get may removed in the future from the scripts.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
12 years agomon: Monitor: wake up contexts based on paxos machine's state
Joao Eduardo Luis [Fri, 23 Nov 2012 19:10:33 +0000 (19:10 +0000)]
mon: Monitor: wake up contexts based on paxos machine's state

When recovering the leader, only wake up a paxos machine's contexts if
the paxos machine is in a state that can handle said contexts.

Fixes: #3495
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agomon: AuthMonitor: increase log levels when logging secrets
Joao Eduardo Luis [Fri, 23 Nov 2012 14:22:52 +0000 (14:22 +0000)]
mon: AuthMonitor: increase log levels when logging secrets

Fixes: #3361
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agoauth: Keyring: increase log levels when logging secrets
Joao Eduardo Luis [Fri, 23 Nov 2012 14:23:05 +0000 (14:23 +0000)]
auth: Keyring: increase log levels when logging secrets

Fixes: #3361
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agoauth: cephx: increase log levels when logging secrets
Joao Eduardo Luis [Fri, 23 Nov 2012 14:06:38 +0000 (14:06 +0000)]
auth: cephx: increase log levels when logging secrets

We understand that logging secrets may be useful when debugging the root
causes for auth issues. However, logging secrets is far from a good idea.
Therefore, just increase the log levels to a high enough value so that
most other debug infos can be obtained without even logging the secrets.
If one really wants to log the secrets, then setting --debug-auth 30 should
do the trick.

Fixes: #3361
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agocrush: CrushWrapper: don't add item to a bucket with != type than wanted
Joao Eduardo Luis [Fri, 23 Nov 2012 00:32:38 +0000 (00:32 +0000)]
crush: CrushWrapper: don't add item to a bucket with != type than wanted

We take little consideration about the type of the bucket we are adding
an item to. Although this works for the vast majority of cases, it was
also leaving room for silly little mistakes to become problematic and
leading a monitor to crash.

For instance, say that we ran:
  'ceph osd crush set 0 osd.0 1 root=foo row=foo'

If root 'foo' exists, then this will work and 'row=foo' will be ignored.
However, if there is no bucket named 'foo', then we would (in order)
create a bucket for row 'foo', adding osd.0 to it, and would then add
osd.0 to bucket 'foo' again -- remember, little consideration regarding
the bucket type was given.

This would trigger a monitor crash due to the recursion done in
'adjust_item_weight'. A solution to this problem is to make sure that we
do not allow specifying multiple buckets with the same name when adding
an item to crush. Not only solves our crash problem, but will also render
invalid any mistake when specifying the wrong bucket type (say, using
'row=bar' when in fact 'bar' is a rack).

Fixes: #3515
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agomon: PGMonitor: check if pg exists when handling 'pg map <PG>'
Joao Eduardo Luis [Wed, 21 Nov 2012 17:48:25 +0000 (17:48 +0000)]
mon: PGMonitor: check if pg exists when handling 'pg map <PG>'

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
12 years agoMerge remote-tracking branch 'origin/next' into next
Yehuda Sadeh [Thu, 22 Nov 2012 22:59:25 +0000 (14:59 -0800)]
Merge remote-tracking branch 'origin/next' into next

12 years agomds: child directory inherits SGID bit
Sage Weil [Thu, 22 Nov 2012 21:53:29 +0000 (13:53 -0800)]
mds: child directory inherits SGID bit

Update the inode, not the local variable.

Reported-by: Giorgos Kappes <geokapp@gmail.com>
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoMerge remote-tracking branch 'origin/next' into next
Yehuda Sadeh [Thu, 22 Nov 2012 20:57:33 +0000 (12:57 -0800)]
Merge remote-tracking branch 'origin/next' into next

12 years agoMerge branch 'wip-opslog-socket2' into next
Yehuda Sadeh [Thu, 22 Nov 2012 20:55:35 +0000 (12:55 -0800)]
Merge branch 'wip-opslog-socket2' into next

Conflicts:
src/rgw/rgw_main.cc

12 years agocrush: prevent loops from insert_item
Sage Weil [Thu, 22 Nov 2012 17:17:34 +0000 (09:17 -0800)]
crush: prevent loops from insert_item

If the insertion would create a loop, return -EINVAL.

Fixes: #3515
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoTry using syscall() for syncfs if not supported directly by glibc
Dan Mick [Tue, 20 Nov 2012 01:31:55 +0000 (17:31 -0800)]
Try using syscall() for syncfs if not supported directly by glibc

Signed-off-by: Dan Mick <dan.mick@inktank.com>
12 years agorgw: fix usage accounting
Yehuda Sadeh [Wed, 21 Nov 2012 22:15:41 +0000 (14:15 -0800)]
rgw: fix usage accounting

bytes_sent and bytes_received are no longer accounted
in the req_state, needed to get them out of the ClientIO
object.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agorbd: make snap purge fail if removing a snap fails
Josh Durgin [Wed, 21 Nov 2012 21:24:24 +0000 (13:24 -0800)]
rbd: make snap purge fail if removing a snap fails

Otherwise we report 100% removed when some may have failed.

Reported-by: Andrey Korolyov <andrey@xdel.ru>
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
12 years agomsgr: use get_myaddr and set_myaddr to set the nonce
Greg Farnum [Wed, 21 Nov 2012 19:47:55 +0000 (11:47 -0800)]
msgr: use get_myaddr and set_myaddr to set the nonce

We can't set it directly via get_myaddr as its a const ref. Dur.

Signed-off-by: Greg Farnum <greg@inktank.com>
12 years agorgw: fix cleanup
Yehuda Sadeh [Wed, 21 Nov 2012 20:04:39 +0000 (12:04 -0800)]
rgw: fix cleanup

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agorgw: signal shuts down fcgi socket
Yehuda Sadeh [Wed, 21 Nov 2012 00:30:08 +0000 (16:30 -0800)]
rgw: signal shuts down fcgi socket

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agocrypto: fix nss related leak
Yehuda Sadeh [Tue, 20 Nov 2012 23:30:37 +0000 (15:30 -0800)]
crypto: fix nss related leak

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agorgw: fix xml parser leak
Yehuda Sadeh [Tue, 20 Nov 2012 01:10:11 +0000 (17:10 -0800)]
rgw: fix xml parser leak

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agorgw: fix memory leaks
Yehuda Sadeh [Tue, 20 Nov 2012 00:52:38 +0000 (16:52 -0800)]
rgw: fix memory leaks

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
12 years agoset the nonce unconditionally on bind
Greg Farnum [Mon, 19 Nov 2012 22:15:30 +0000 (14:15 -0800)]
set the nonce unconditionally on bind

12 years agotest_librbd_fsx: Add OP_FLATTEN
Dan Mick [Wed, 21 Nov 2012 02:54:38 +0000 (18:54 -0800)]
test_librbd_fsx: Add OP_FLATTEN

12 years agotest_librbd_fsx: consume saved-image files as test runs
Dan Mick [Wed, 21 Nov 2012 02:00:29 +0000 (18:00 -0800)]
test_librbd_fsx: consume saved-image files as test runs

Avoid consuming lots of disk space by holding only as many file
copies as needed (compare the n-2 file as we make clone n).

12 years agoosdc/Striper: fix handling for sparse reads in add_partial_sparse_result()
Sage Weil [Wed, 21 Nov 2012 00:11:00 +0000 (16:11 -0800)]
osdc/Striper: fix handling for sparse reads in add_partial_sparse_result()

If bl_map begins *after* the first item in buffer_extents, we want to
skip only the first buffer extent before doing 'continue' to loop to the
next one.

This fixes a crash caused by underflow with a pattern like:

2012-11-20 13:54:30.347861 7f9404ed6700 10 striper add_partial_sparse_result(0x1efa088) 192 covering {12288=192} (offset 2906) to [0,5286,38054,4288]
2012-11-20 13:54:30.347863 7f9404ed6700 20 striper   t 0~5286 bl has 192 off 2906
2012-11-20 13:54:30.347866 7f9404ed6700 20 striper   s gap 9382, skipping
2012-11-20 13:54:30.347867 7f9404ed6700 20 striper   s has 192, copying
2012-11-20 13:54:30.347872 7f9404ed6700 20 striper   t 9574~18446744073709547328 bl has 0 off 12480
2012-11-20 13:54:30.347874 7f9404ed6700 20 striper   s at end
2012-11-20 13:54:30.347876 7f9404ed6700 20 striper   t 38054~4288 bl has 0 off 12480
2012-11-20 13:54:30.347877 7f9404ed6700 20 striper   s at end

Dan reproduced this with

 ./test_librbd_fsx -d -W -R -p 10 -t 1 -S 4 -N 300 rbd fsx

(although I was unable to do so).

Re-fixes #3428.

Reported-and-tested-by: Dan Mick <dan.mick@inktank.com>
Signed-off-by: Sage Weil <sage@inktank.com>
12 years agoqa/run_xfstests.sh: drop tests 174 and 181
Alex Elder [Tue, 20 Nov 2012 21:53:55 +0000 (15:53 -0600)]
qa/run_xfstests.sh: drop tests 174 and 181

These tests are showing intermittent failures so we'll drop them
from the default list for the time being.

Signed-off-by: Alex Elder <elder@inktank.com>
12 years agoMerge remote-tracking branch 'gh/wip-mon-parsing' into next
Sage Weil [Mon, 19 Nov 2012 05:20:36 +0000 (21:20 -0800)]
Merge remote-tracking branch 'gh/wip-mon-parsing' into next

12 years agoMerge branch 'wip-mon-leaks-fix' into next
Sage Weil [Sun, 18 Nov 2012 22:37:22 +0000 (14:37 -0800)]
Merge branch 'wip-mon-leaks-fix' into next

12 years agomon: shutdown async signal handler sooner
Sage Weil [Sun, 18 Nov 2012 16:34:35 +0000 (08:34 -0800)]
mon: shutdown async signal handler sooner

Before the mon, and lockdep, in particular.

#0  __pthread_mutex_lock (mutex=0x30) at pthread_mutex_lock.c:50
#1  0x0000000000816092 in ceph::log::Log::submit_entry (this=0x0, e=0x2f4a270) at log/Log.cc:138
#2  0x00000000007ee0f8 in handle_fatal_signal (signum=11) at global/signal_handler.cc:100
#3  <signal handler called>
#4  0x00000000008e1300 in lockdep_will_lock (name=0x959aa7 "SignalHandler::lock", id=17) at common/lockdep.cc:163
#5  0x00000000008867fc in Mutex::_will_lock (this=0x2f20428) at ./common/Mutex.h:56
#6  0x0000000000886605 in Mutex::Lock (this=0x2f20428, no_lockdep=false) at common/Mutex.cc:81
#7  0x00000000007eeb95 in SignalHandler::entry (this=0x2f20300) at global/signal_handler.cc:198
#8  0x00000000008b0bd1 in Thread::_entry_func (arg=0x2f20300) at common/Thread.cc:43
#9  0x00007f36fefd6b50 in start_thread (arg=<optimized out>) at pthread_create.c:304
#10 0x00007f36fd80b6dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

#0  0x00007f36fefd7e75 in pthread_join (threadid=139874129766144, thread_return=0x0) at pthread_join.c:89
#1  0x00000000008b11ec in Thread::join (this=0x2f20300, prval=0x0) at common/Thread.cc:130
#2  0x00000000007eeae7 in SignalHandler::shutdown (this=0x2f20300) at global/signal_handler.cc:186
#3  0x00000000007ee9cf in SignalHandler::~SignalHandler (this=0x2f20300, __in_chrg=<optimized out>) at global/signal_handler.cc:175
#4  0x00000000007eea58 in SignalHandler::~SignalHandler (this=0x2f20300, __in_chrg=<optimized out>) at global/signal_handler.cc:176
#5  0x00000000007ee643 in shutdown_async_signal_handler () at global/signal_handler.cc:324
#6  0x00000000006de9d2 in main (argc=7, argv=0x7fffbfb8a1e8) at ceph_mon.cc:439

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon/AuthMonitor: refactor assign_global_id
Sage Weil [Sun, 18 Nov 2012 16:00:16 +0000 (08:00 -0800)]
mon/AuthMonitor: refactor assign_global_id

Move the failure logic into the caller, where we easier to do something
about it and return the right value to the caller.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon/AuthMonitor: reorder session->put()
Sage Weil [Sun, 18 Nov 2012 15:52:49 +0000 (07:52 -0800)]
mon/AuthMonitor: reorder session->put()

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsg/Pipe: remove useless reader_joining
Sage Weil [Sun, 18 Nov 2012 04:57:50 +0000 (20:57 -0800)]
msg/Pipe: remove useless reader_joining

We set it but do not read it.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsg/Pipe: join previous reader threads
Sage Weil [Sun, 18 Nov 2012 04:56:50 +0000 (20:56 -0800)]
msg/Pipe: join previous reader threads

We may stop and then restart the reader thread.  Join previous threads
before we create new ones.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsg/DispatchQueue: fix message leak from discard_queue()
Sage Weil [Sun, 18 Nov 2012 00:36:44 +0000 (16:36 -0800)]
msg/DispatchQueue: fix message leak from discard_queue()

We need to drop the Message ref() here; the msgr owns one ref
independent of those from the intrusive_ptr's in the queue itself.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomsg/SimpleMessenger: use put() on local_connection
Sage Weil [Sun, 18 Nov 2012 00:01:13 +0000 (16:01 -0800)]
msg/SimpleMessenger: use put() on local_connection

This aids leak debugging; not much else.

Signed-off-by: Sage Weil <sage@inktank.com>
12 years agomon: clean up Subsription xlists
Sage Weil [Sat, 17 Nov 2012 22:21:07 +0000 (14:21 -0800)]
mon: clean up Subsription xlists

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