]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
11 years agoTestPGLog: tests for proc_replica_log/merge_log equivalence 1354/head
Samuel Just [Mon, 3 Mar 2014 01:31:38 +0000 (17:31 -0800)]
TestPGLog: tests for proc_replica_log/merge_log equivalence

We need the merge_log and proc_replica_log paths to result in the
same missing set.  This patch adds some machinery for specifying
a log merge scenario and comparing both paths to the same correct
result.  This machinery also makes it a bit easier to read and add
new tests.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog::proc_replica_log: adjust wonky test
Samuel Just [Sun, 2 Mar 2014 21:45:27 +0000 (13:45 -0800)]
TestPGLog::proc_replica_log: adjust wonky test

This test didn't quite make sense since the divergent entry
cannot be from a newer epoch.  It also didn't quite match the
diagram.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog::proc_replica_log: adjust to corrected proc_replica_log behavior
Samuel Just [Sun, 2 Mar 2014 21:44:03 +0000 (13:44 -0800)]
TestPGLog::proc_replica_log: adjust to corrected proc_replica_log behavior

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog::proc_replica_log: add prior_version to some entries
Samuel Just [Sun, 2 Mar 2014 21:43:15 +0000 (13:43 -0800)]
TestPGLog::proc_replica_log: add prior_version to some entries

Otherwise, the test logs are invalid.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoPGLog::proc_replica_log: _merge_divergent_entries based on truncated olog
Samuel Just [Sun, 2 Mar 2014 21:42:16 +0000 (13:42 -0800)]
PGLog::proc_replica_log: _merge_divergent_entries based on truncated olog

We can't merge using the primary's log since we haven't decided whether
to send them a complete log yet.  Thus, merge based on the truncated olog
rather than the primary's log.  This is a consequence of the division
between trimming divergent entries in peering/unfound search and sending
a complete log to actual members of the actingbackfill set in activate().
_merge_divergent_entries on the truncated log and add_next_event() on the
newer entries result in the same missing/log regardless of the order in
which they are performed.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoPG.h:PGLogEntryHandler: remove silly cant_rollback logic
Samuel Just [Sun, 2 Mar 2014 21:39:07 +0000 (13:39 -0800)]
PG.h:PGLogEntryHandler: remove silly cant_rollback logic

Also, we now call rollback in a reverse order, so there is no
need to reverse the entries again.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoPG,PGLog: replace _merge_old_entry with _merge_object_divergent_entries
Samuel Just [Sun, 2 Mar 2014 21:38:12 +0000 (13:38 -0800)]
PG,PGLog: replace _merge_old_entry with _merge_object_divergent_entries

The _merge_old_entry structure had trouble distinguishing between the
following cases:

missing: foo, 1,1
merge_old_entry modify 1,1 0,0
merge_old_entry modify 1,2 1,1

and
merge_old_entry modify 1,2 1,1

In the first case, we should end up with foo removed from missing
at the end.  In the second, we need foo added to missing at 1,1.
It's far simpler to present all of the divergent entries for a single
object at once.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog::merge_old_entry: ne.version cannot be oe.version
Samuel Just [Sun, 2 Mar 2014 05:41:55 +0000 (21:41 -0800)]
TestPGLog::merge_old_entry: ne.version cannot be oe.version

Otherwise, it would not be divergent!

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog::merge_old_entry: we no longer use merge_old_entry this way
Samuel Just [Sun, 2 Mar 2014 05:45:18 +0000 (21:45 -0800)]
TestPGLog::merge_old_entry: we no longer use merge_old_entry this way

This needs to be replaced with an equivalent test of
_merge_object_divergent_entries.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog:rewind_divergent_log: set prior_version for delete
Samuel Just [Sun, 2 Mar 2014 05:21:34 +0000 (21:21 -0800)]
TestPGLog:rewind_divergent_log: set prior_version for delete

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog: ignore merge_old_entry return value
Samuel Just [Sat, 1 Mar 2014 23:24:14 +0000 (15:24 -0800)]
TestPGLog: ignore merge_old_entry return value

No callers use the merge_old_entry return value.  _merge_divergent_entries
won't have one.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTestPGLog: not worth maintaining tests of assert behavior
Samuel Just [Sat, 1 Mar 2014 23:22:53 +0000 (15:22 -0800)]
TestPGLog: not worth maintaining tests of assert behavior

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoMerge pull request #1356 from ceph/wip-7458
David Zafman [Mon, 3 Mar 2014 22:47:38 +0000 (14:47 -0800)]
Merge pull request #1356 from ceph/wip-7458

osd: stray pg ref on shutdown

Reviewed-by: Samuel Just <sam.just@inktank.com>
11 years agoMerge pull request #1341 from ceph/wip-osd-status
Sage Weil [Mon, 3 Mar 2014 19:21:11 +0000 (11:21 -0800)]
Merge pull request #1341 from ceph/wip-osd-status

osd: 'status' admin socket command

Reviewed-by: Loic Dachary <loic@dachary.org>
11 years agoMerge branch 'wip-hint' into firefly
Ilya Dryomov [Mon, 3 Mar 2014 18:37:24 +0000 (20:37 +0200)]
Merge branch 'wip-hint' into firefly

Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
11 years agolibrbd: prefix rbd writes with CEPH_OSD_OP_SETALLOCHINT osd op
Ilya Dryomov [Fri, 21 Feb 2014 14:34:14 +0000 (16:34 +0200)]
librbd: prefix rbd writes with CEPH_OSD_OP_SETALLOCHINT osd op

In an effort to reduce fragmentation, prefix every rbd write with
a CEPH_OSD_OP_SETALLOCHINT osd op with an expected_write_size value set
to the object size (1 << order).  Backwards compatibility is taken care
of on the osd side.

"The CEPH_OSD_OP_SETALLOCHINT hint is durable, in that it's enough to
do it once.  The reason every rbd write is prefixed is that rbd doesn't
explicitly create objects and relies on writes creating them
implicitly, so there is no place to stick a single hint op into.  To
get around that we decided to prefix every rbd write with a hint (just
like write and setattr ops, hint op will create an object implicitly if
it doesn't exist)."

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
11 years agoFileStore: add option to cap alloc hint size
Ilya Dryomov [Fri, 21 Feb 2014 14:34:14 +0000 (16:34 +0200)]
FileStore: add option to cap alloc hint size

Add a new config option, filestore_max_alloc_hint_size, to cap
SETALLOCHINT hint size.  The unit is a byte, the default value is
1 megabyte.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
11 years agoFileStore: introduce XfsFileStoreBackend class
Ilya Dryomov [Fri, 21 Feb 2014 14:34:13 +0000 (16:34 +0200)]
FileStore: introduce XfsFileStoreBackend class

Introduce XfsFileStoreBackend class, currently the only filestore
backend implementing SETALLOCHINT op.  This commit adds a build-time
dependency on libxfs as xfs-specific ioctl (XFS_IOC_FSSETXATTR /
XFS_XFLAG_EXTSIZE) is used to implement the new set_alloc_hint()
method.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
11 years agoFileStore: refactor FS detection checks a bit
Ilya Dryomov [Fri, 21 Feb 2014 14:34:13 +0000 (16:34 +0200)]
FileStore: refactor FS detection checks a bit

Refactor FS detection checks in FileStore::_detect_fs() so that they
look the same as the ones in FileStore::mkfs().  This is in preparation
for adding XfsFileStoreBackend class.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
11 years agoosd: add SETALLOCHINT operation
Ilya Dryomov [Fri, 21 Feb 2014 14:34:13 +0000 (16:34 +0200)]
osd: add SETALLOCHINT operation

This is primarily for librbd/krbd's benefit and is supposed to combat
fragmentation:

"... knowing that rbd images have a 4m size, librbd can pass a hint
that will let the osd do the xfs allocation size ioctl on new files so
that they are allocated in 1m or 4m chunks.  We've seen cases where
users with rbd workloads have very high levels of fragmentation in xfs
and this would mitigate that and probably have a pretty nice
performance benefit."

SETALLOCHINT is considered advisory, so our backwards compatibility
mechanism here is to set FAILOK flag for all SETALLOCHINT ops.

xfs is hooked up in the subsequent commits.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
11 years agoRevert "ObjectCacher: remove unused target/max setters"
Josh Durgin [Mon, 3 Mar 2014 17:07:30 +0000 (09:07 -0800)]
Revert "ObjectCacher: remove unused target/max setters"

This reverts commit e1a49e5386c3ed4a6bc4870f01630349cb04d749.

11 years agoRevert "librbd: remove limit on number of objects in the cache"
Josh Durgin [Mon, 3 Mar 2014 17:03:29 +0000 (09:03 -0800)]
Revert "librbd: remove limit on number of objects in the cache"

Disabling this limit causes too much memory usage in some
workloads.

This reverts commit 0559d31db29ea83bdb6cec72b830d16b44e3cd35.

11 years agorgw: off-by-one in rgw_trim_whitespace()
Ray Lv [Wed, 26 Feb 2014 13:17:32 +0000 (21:17 +0800)]
rgw: off-by-one in rgw_trim_whitespace()

Fixes: #7543
Backport: dumpling

Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
Signed-off-by: Ray Lv <raylv@yahoo-inc.com>
11 years agoosd: 'status' admin socket command 1341/head
Sage Weil [Mon, 3 Mar 2014 15:03:01 +0000 (07:03 -0800)]
osd: 'status' admin socket command

Basic stuff, like what state is the OSD in, and what osdmap epoch are
we on.

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1327 from dachary/wip-7423
Sage Weil [Mon, 3 Mar 2014 14:59:22 +0000 (06:59 -0800)]
Merge pull request #1327 from dachary/wip-7423

osd: do not attempt to read past the object size

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoerasure-code: test rados put and get 1327/head
Loic Dachary [Sun, 2 Mar 2014 16:54:39 +0000 (17:54 +0100)]
erasure-code: test rados put and get

Check that rados put immediately followed by rados get retrieves exactly
the same content.

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

Signed-off-by: Loic Dachary <loic@dachary.org>
11 years agomon: prepend current directory to PATH for tests
Loic Dachary [Sun, 2 Mar 2014 16:53:08 +0000 (17:53 +0100)]
mon: prepend current directory to PATH for tests

So that binaries found in the source directory are always prefered to
installed binaries or scripts.

Signed-off-by: Loic Dachary <loic@dachary.org>
11 years agoosd: helper to create an OSD for functional tests
Loic Dachary [Sun, 2 Mar 2014 16:48:25 +0000 (17:48 +0100)]
osd: helper to create an OSD for functional tests

Signed-off-by: Loic Dachary <loic@dachary.org>
11 years agomon: add mon-test-helpers.sh to EXTRA_DIST
Loic Dachary [Sun, 2 Mar 2014 16:47:15 +0000 (17:47 +0100)]
mon: add mon-test-helpers.sh to EXTRA_DIST

Signed-off-by: Loic Dachary <loic@dachary.org>
11 years agoosd: do not attempt to read past the object size
Loic Dachary [Fri, 28 Feb 2014 12:57:20 +0000 (13:57 +0100)]
osd: do not attempt to read past the object size

When reading from a replicated pool, trying to read more than the object
size results in a short read that does not go beyond the object size. In
erasure coded pools, objects are padded and the read will return more
bytes than the object actually contains.

http://tracker.ceph.com/issues/7423 fixes #7423

Signed-off-by: Loic Dachary <loic@dachary.org>
11 years agoMerge pull request #1344 from ceph/wip-7539
Sage Weil [Mon, 3 Mar 2014 05:06:01 +0000 (21:06 -0800)]
Merge pull request #1344 from ceph/wip-7539

Wip 7539

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1322 from ceph/wip-librados-end-iterator
Sage Weil [Sun, 2 Mar 2014 20:51:30 +0000 (12:51 -0800)]
Merge pull request #1322 from ceph/wip-librados-end-iterator

librados: fix ObjectIterator::operator= for the end iterator

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1337 from ceph/wip-fix-coverity-20140228
Sage Weil [Sun, 2 Mar 2014 03:56:45 +0000 (19:56 -0800)]
Merge pull request #1337 from ceph/wip-fix-coverity-20140228

Fix different issues found by Coverity

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1336 from ceph/wip-nfs-export
Sage Weil [Sun, 2 Mar 2014 03:54:23 +0000 (19:54 -0800)]
Merge pull request #1336 from ceph/wip-nfs-export

Wip nfs export

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoosd_types,PG: trim mod_desc for log entries to min size 1344/head
Samuel Just [Sat, 1 Mar 2014 22:33:11 +0000 (14:33 -0800)]
osd_types,PG: trim mod_desc for log entries to min size

In the event that mod_desc.bl contains pointers into a large
message buffer, we'd otherwise end up keeping around the entire
MOSDECSubOpWrite which created each log entry.

Fixes: #7539
Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoMOSDECSubOpWrite: drop transaction, log_entries in clear_buffers
Samuel Just [Sat, 1 Mar 2014 22:12:09 +0000 (14:12 -0800)]
MOSDECSubOpWrite: drop transaction, log_entries in clear_buffers

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoTrackedOp: clear_payload as well in unregister_inflight_op
Samuel Just [Sat, 1 Mar 2014 21:55:24 +0000 (13:55 -0800)]
TrackedOp: clear_payload as well in unregister_inflight_op

We want to minimize the cost of maintaining the historic ops.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoOpTracker: clarify that unregister_inflight_op is only called if enabled
Samuel Just [Sat, 1 Mar 2014 21:54:53 +0000 (13:54 -0800)]
OpTracker: clarify that unregister_inflight_op is only called if enabled

The !tracking_enabled branch actually had a leak which was unreachable
since the caller does the check for tracking_enabled.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoMOSDOp: drop ops vector in clear_data()
Samuel Just [Sat, 1 Mar 2014 21:39:57 +0000 (13:39 -0800)]
MOSDOp: drop ops vector in clear_data()

Otherwise, clear_data on MOSDOp will leave essentially
all of the buffers intact.  This is a problem since the
OpTracker mechanism relies on being able to keep the mesage
around without keeping around the data.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoReplicatedPG: delete mark_all_unfound_lost transactions after completion
Greg Farnum [Fri, 28 Feb 2014 19:08:17 +0000 (11:08 -0800)]
ReplicatedPG: delete mark_all_unfound_lost transactions after completion

This was a minor memory leak.

Signed-off-by: Greg Farnum <greg@inktank.com>
11 years agoMerge pull request #1339 from ceph/wip-7572
Loic Dachary [Sat, 1 Mar 2014 17:46:50 +0000 (18:46 +0100)]
Merge pull request #1339 from ceph/wip-7572

mon: fix 'pg dump' JSON output

Reviewed-by: Loic Dachary <loic@dachary.org>
11 years agomon: fix 'pg dump' JSON output 1339/head
John Spray [Sat, 1 Mar 2014 17:01:10 +0000 (17:01 +0000)]
mon: fix 'pg dump' JSON output

This was broken by 40bdcb88.  The 'acting' array had
the up_primary and acting_primary appended.

Fixes: #7572
Signed-off-by: John Spray <john.spray@inktank.com>
11 years agoreq_state: fix uninitialized bool var 1337/head
Danny Al-Gaaf [Sat, 1 Mar 2014 13:26:18 +0000 (14:26 +0100)]
req_state: fix uninitialized bool var

CID 717359 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
 uninit_member: Non-static class member "bucket_exists" is not
 initialized in this constructor nor in any functions that it calls.

Set bucket_exists to false in req_state::req_state().

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoObjecter::recalc_op_target: fix uninitialized scalar variable
Danny Al-Gaaf [Sat, 1 Mar 2014 12:45:53 +0000 (13:45 +0100)]
Objecter::recalc_op_target: fix uninitialized scalar variable

CID 1160848 (#1 of 1): Uninitialized scalar variable (UNINIT)
 uninit_use: Using uninitialized value "best".

Init 'best' with -1 (from the code logic it will be set at least to 0)
to silence coverity.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoPGMonitor: fix uninitialized scalar variable
Danny Al-Gaaf [Sat, 1 Mar 2014 12:33:18 +0000 (13:33 +0100)]
PGMonitor: fix uninitialized scalar variable

Fix type handling in dump_stuck_pg_stats. If type is type doesn't
match to known PGMap::STUCK_* type print out a message and return
directly from function.

CID 1030132 (#2 of 2): Uninitialized scalar variable (UNINIT)
 uninit_use_in_call: Using uninitialized value "stuck_type" when calling
 "PGMap::dump_stuck(ceph::Formatter *, PGMap::StuckPG, utime_t) const"

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoMDCache: fix potential null pointer deref
Danny Al-Gaaf [Sat, 1 Mar 2014 12:11:48 +0000 (13:11 +0100)]
MDCache: fix potential null pointer deref

CID 716921 (#1 of 1): Dereference after null check (FORWARD_NULL)
 var_deref_model: Passing null pointer "dir" to function
 "operator <<(std::ostream &, CDir &)", which dereferences it.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoMDCache::handle_discover: fix null pointer deref
Danny Al-Gaaf [Sat, 1 Mar 2014 11:10:56 +0000 (12:10 +0100)]
MDCache::handle_discover: fix null pointer deref

CID 716990 (#1 of 1): Dereference null return value (NULL_RETURNS)
 dereference: Dereferencing a pointer that might be null "cur" when calling
 "MDCache::replicate_inode(CInode *, int, ceph::bufferlist &)"

Add assert to check for return value from get_inode() as done in other places.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoFileStore: fix resource leak in queue_transactions() blackhole case
Danny Al-Gaaf [Sat, 1 Mar 2014 10:53:09 +0000 (11:53 +0100)]
FileStore: fix resource leak in queue_transactions() blackhole case

CID 1135931 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable "ondisk" going out of scope leaks the storage it
 points to.

CID 1135932 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable "onreadable" going out of scope leaks the storage
 it points to.

CID 1135933 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable "onreadable_sync" going out of scope leaks the
 storage it points to.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoc_read_operations.cc: fix resource leak
Danny Al-Gaaf [Sat, 1 Mar 2014 10:44:39 +0000 (11:44 +0100)]
c_read_operations.cc: fix resource leak

CID 1188154 (#2 of 2): Resource leak (RESOURCE_LEAK)
 overwrite_var: Overwriting "op" in "op = rados_create_read_op()" leaks
 the storage that "op" points to.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoc_write_operations.cc: fix some ioctx resource leaks
Danny Al-Gaaf [Sat, 1 Mar 2014 10:36:18 +0000 (11:36 +0100)]
c_write_operations.cc: fix some ioctx resource leaks

CID 1160833 (#3 of 3): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable "ioctx" going out of scope leaks the storage
 it points to

CID 1160835 (#3 of 3): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable "ioctx" going out of scope leaks the storage
 it points to.

CID 1188156 (#5 of 5): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable "ioctx" going out of scope leaks the storage
 it points to.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoReplicatedBackend: check result of dynamic_cast to fix null pointer deref
Danny Al-Gaaf [Sat, 1 Mar 2014 10:16:27 +0000 (11:16 +0100)]
ReplicatedBackend: check result of dynamic_cast to fix null pointer deref

CID 1188135 (#1 of 1): Unchecked dynamic_cast (FORWARD_NULL)
 var_deref_model: Passing null pointer "t" to function
 "RPGTransaction::get_transaction()", which dereferences it

CID 1188134 (#1 of 1): Unchecked dynamic_cast (FORWARD_NULL)
 var_deref_op: Dereferencing null pointer "to_append".

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agomds: use "lookup-by-ino" helper to handle LOOKUPPARENT request 1336/head
Yan, Zheng [Sat, 1 Mar 2014 09:49:38 +0000 (17:49 +0800)]
mds: use "lookup-by-ino" helper to handle LOOKUPPARENT request

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
11 years agoMerge pull request #1326 from ceph/wip-7542
Samuel Just [Sat, 1 Mar 2014 05:08:30 +0000 (21:08 -0800)]
Merge pull request #1326 from ceph/wip-7542

Wip 7542

Reviewed-by: Greg Farnum <greg@inktank.com>
11 years agostore_test.cc: fix unchecked return value
Danny Al-Gaaf [Sat, 1 Mar 2014 00:24:37 +0000 (01:24 +0100)]
store_test.cc: fix unchecked return value

CID 1188126 (#1 of 1): Unchecked return value (CHECKED_RETURN)
 2. check_return: Calling function "ObjectStore::stat(coll_t,
    ghobject_t const &, stat *, bool)" without checking return value
    (as is done elsewhere 8 out of 9 times).
 3. unchecked_value: No check of the return value of "this->store->stat(
    coll_t(this->cid), hoid, &buf, false)".

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agohistogram.h: fix potential div by zero
Danny Al-Gaaf [Fri, 28 Feb 2014 23:19:58 +0000 (00:19 +0100)]
histogram.h: fix potential div by zero

CID 1188131 (#1 of 1): Division or modulo by zero (DIVIDE_BY_ZERO)
 divide_by_zero: In expression "lower_sum * 1000000UL / total", division
 by expression "total" which may be zero has undefined behavior

Added check for non zero total.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoReplicatedPG.cc: fix ressource leak, delete cb
Danny Al-Gaaf [Fri, 28 Feb 2014 23:04:05 +0000 (00:04 +0100)]
ReplicatedPG.cc: fix ressource leak, delete cb

CID 1188145 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable "cb" going out of scope leaks the storage it points to.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
11 years agoMerge pull request #1331 from ceph/wip-cache-pool
Gregory Farnum [Fri, 28 Feb 2014 22:09:49 +0000 (14:09 -0800)]
Merge pull request #1331 from ceph/wip-cache-pool

mon/OSDMonitor: make default false-positive-probability 5%

Reviewed-by: Greg Farnum <greg@inktank.com>
11 years agoECBackend: don't leak transactions 1326/head
Samuel Just [Thu, 27 Feb 2014 22:41:11 +0000 (14:41 -0800)]
ECBackend: don't leak transactions

Fixes: #7539
Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoOSD::handle_misdirected_op: handle ops to the wrong shard
Samuel Just [Wed, 26 Feb 2014 22:47:39 +0000 (14:47 -0800)]
OSD::handle_misdirected_op: handle ops to the wrong shard

OSD recomputes op target based on current OSDMap. With an EC pg, we can get
this result:
1) client at map 512 sends an op to osd 3, pg_t 3.9 based on mapping
   [CRUSH_ITEM_NONE, 2, 3]/3
2) OSD 3 at map 513 remaps op to osd 3, spg_t 3.9s0 based on mapping [3, 2, 3]/3
3) PG 3.9s0 dequeues the op at epoch 512 and notices that it isn't
   primary -- misdirected op
4) client resends and this time PG 3.9s0 having caught up to 513 gets it and
   fulfils it

We can't compute the op target based on the sending map epoch due to
splitting.  The simplest thing is to detect such cases in
OSD::handle_misdirected_op and drop them without an error (the client
will resend anyway).

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoosd: stray pg ref on shutdown 1356/head
David Zafman [Thu, 27 Feb 2014 23:27:56 +0000 (15:27 -0800)]
osd: stray pg ref on shutdown

Move agent_clear() from only being done when becoming replica
  Do it in clear_primary_state() whenever we stop being primary
  clear_primary_state() passed whether we are staying a primary
Add asserts in agent_stop() and don't need to clear agent_queue

Fixes: #7458
Signed-off-by: David Zafman <david.zafman@inktank.com>
11 years agoMerge pull request #1332 from ceph/wip-pg-msg
Loic Dachary [Fri, 28 Feb 2014 17:35:11 +0000 (18:35 +0100)]
Merge pull request #1332 from ceph/wip-pg-msg

mon/OSDMonitor: missing space in string

Reviewed-by: Sage Weil <sage@inktank.com>
Reviewed-by: Loic Dachary <loic@dachary.org>
11 years agomon/OSDMonitor: missing space in string 1325/head 1332/head
John Spray [Fri, 28 Feb 2014 01:26:29 +0000 (01:26 +0000)]
mon/OSDMonitor: missing space in string

Minor glitch.  Was printing ..."exceeds per-OSD max of32)"

Signed-off-by: John Spray <john.spray@inktank.com>
11 years agoFix python-requests package dependencies.
Dan Mick [Thu, 27 Feb 2014 01:11:05 +0000 (17:11 -0800)]
Fix python-requests package dependencies.

python-ceph does not require requests, but ceph-common does (for ceph-brag).

Signed-off-by: Dan Mick <dan.mick@inktank.com>
(cherry picked from commit 9a0ef6a181e90b81cdccbd54298270f5aa960767)

11 years agolibrados: fix ObjectIterator::operator= for the end iterator 1322/head
Josh Durgin [Wed, 26 Feb 2014 21:00:33 +0000 (13:00 -0800)]
librados: fix ObjectIterator::operator= for the end iterator

We can't set a shared_ptr to NULL, we need to reset it instead. Add
another test for various permutations of this.

Fixes: #7538
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
11 years agomon/OSDMonitor: make default false-positive-probability 5% 1330/head 1331/head
Sage Weil [Fri, 28 Feb 2014 16:06:03 +0000 (08:06 -0800)]
mon/OSDMonitor: make default false-positive-probability 5%

This is a more conservative default (as in, less memory consumed) for
newly created cache pools.

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agomds: fix nested_anchors update during journal replay
Yan, Zheng [Wed, 26 Feb 2014 02:17:34 +0000 (10:17 +0800)]
mds: fix nested_anchors update during journal replay

check if the inode is anchored/unanchored before updating the inode

Fixes: #7530
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
11 years agoMerge pull request #1319 from ceph/wip-primary-temp-fix
Gregory Farnum [Wed, 26 Feb 2014 15:12:04 +0000 (07:12 -0800)]
Merge pull request #1319 from ceph/wip-primary-temp-fix

osd/OSDMap: respect temp primary without temp acting

Reviewed-by: Greg Farnum <greg@inktank.com>
11 years agoosd/OSDMap: respect temp primary without temp acting 1319/head
Samuel Just [Wed, 26 Feb 2014 06:48:18 +0000 (22:48 -0800)]
osd/OSDMap: respect temp primary without temp acting

be2748c6d540891f2e1a62e7034cb44f7d04bf18 ensured that
if the temp acting mapping contains only CRUSH_ITEM_NONE,
that the acting_primary is left at -1.  However, even if
acting.empty(), we need to respect a temp_primary mapping.
Thus, use _acting_primary unless acting.empty() &&
acting_primary == -1.

Bug introduced in be2748c6d540891f2e1a62e7034cb44f7d04bf18.
Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoMerge pull request #1317 from ceph/wip-7537
Samuel Just [Wed, 26 Feb 2014 04:42:18 +0000 (20:42 -0800)]
Merge pull request #1317 from ceph/wip-7537

Wip 7537

Reviewed-by: David Zafman <david.zafman@inktank.com>
11 years agoOSDMap::_pg_to_up_acting_osds: use _acting_primary unless acting is empty 1317/head
Samuel Just [Wed, 26 Feb 2014 00:47:21 +0000 (16:47 -0800)]
OSDMap::_pg_to_up_acting_osds: use _acting_primary unless acting is empty

If the temp set for whatever reason has only CRUSH_ITEM_NONE,
we need primary to be -1.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoMerge pull request #1311 from ceph/wip-dz-scrub-fixes
Samuel Just [Tue, 25 Feb 2014 23:28:08 +0000 (15:28 -0800)]
Merge pull request #1311 from ceph/wip-dz-scrub-fixes

Wip dz scrub fixes

Reviewed-by: Samuel Just <sam.just@inktank.com>
11 years agoOSDMonitor: when thrashing, only generate valid temp pg mappings
Samuel Just [Tue, 25 Feb 2014 20:34:57 +0000 (12:34 -0800)]
OSDMonitor: when thrashing, only generate valid temp pg mappings

Since backfill peers are no longer placed into the acting set,
temp mappings will never exceed the pool size.  Also, for ec
pools, temp mappings will never be less than the pool size.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoRevert "osd/PG: fix assert when deep repair finds no errors" 1311/head
David Zafman [Tue, 25 Feb 2014 03:56:48 +0000 (19:56 -0800)]
Revert "osd/PG: fix assert when deep repair finds no errors"

This reverts commit e3e3328ec8a57f1ae2a2fd9893c51068798720a0.

11 years agoosd: Don't include primary's shard in repair result message
David Zafman [Tue, 25 Feb 2014 00:49:28 +0000 (16:49 -0800)]
osd: Don't include primary's shard in repair result message

Signed-off-by: David Zafman <david.zafman@inktank.com>
11 years agoMerge pull request #1308 from ceph/wip-osdmap-inc
Gregory Farnum [Mon, 24 Feb 2014 17:17:42 +0000 (09:17 -0800)]
Merge pull request #1308 from ceph/wip-osdmap-inc

mon/OSDMonitor: fix osdmap encode feature logic

Reviewed-by: Greg Farnum <greg@inktank.com>
11 years agoMerge pull request #1302 from ceph/wip-create-null
Gregory Farnum [Mon, 24 Feb 2014 17:08:36 +0000 (09:08 -0800)]
Merge pull request #1302 from ceph/wip-create-null

client: fix possible null dereference in create

Reviewed-by: Greg Farnum <greg@inktank.com>
11 years agoceph_test_objectstore: fix i386 build (again)
Sage Weil [Mon, 24 Feb 2014 03:54:14 +0000 (19:54 -0800)]
ceph_test_objectstore: fix i386 build (again)

test/objectstore/store_test.cc: In member function ‘void SyntheticWorkloadState::read()’:
error: test/objectstore/store_test.cc:462:23: no matching function for call to ‘swap(uint64_t&, size_t&)’

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1307 from ceph/wip-7517
Sage Weil [Mon, 24 Feb 2014 03:49:18 +0000 (19:49 -0800)]
Merge pull request #1307 from ceph/wip-7517

Wip 7517

11 years agomon/OSDMonitor: fix osdmap encode feature logic 1308/head
Sage Weil [Mon, 24 Feb 2014 02:23:55 +0000 (18:23 -0800)]
mon/OSDMonitor: fix osdmap encode feature logic

If we are encoding a full map based on an old Incremental that does not
encode the features, fall back to the quorum features or (barring that)
all features.  Do *not* do no features or else we will end up with
encode_client_old which does not even include the extended info and will
cause the mon to crash when decoding.

This was observed when upgading a 0.76 cluster to 0.77 (all mons stopped,
upgraded, and then started)

Reported-by: Aaron Ten Clay <aarontc@aarontc.com>
Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoPG: skip pg_whoami.osd, not pg_whoami.shard in scrub feature check 1307/head
Samuel Just [Mon, 24 Feb 2014 00:02:43 +0000 (16:02 -0800)]
PG: skip pg_whoami.osd, not pg_whoami.shard in scrub feature check

Caused by typo in 68184d4574cd507ab3a065693e392917b98e16ec.

Fixes: #7517
Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoMerge pull request #1304 from ceph/wip-last-epoch-clean
Samuel Just [Sun, 23 Feb 2014 23:32:18 +0000 (15:32 -0800)]
Merge pull request #1304 from ceph/wip-last-epoch-clean

mon: fix min_last_epoch_clean handling

Reviewed-by: Samuel Just <sam.just@inktank.com>
11 years agoMerge pull request #1306 from ceph/wip-7512
Sage Weil [Sun, 23 Feb 2014 22:48:10 +0000 (14:48 -0800)]
Merge pull request #1306 from ceph/wip-7512

wip-7512

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoOSD::project_pg_history needs to account for acting_primary/up_primary 1306/head
Samuel Just [Sat, 22 Feb 2014 20:30:29 +0000 (12:30 -0800)]
OSD::project_pg_history needs to account for acting_primary/up_primary

Fixes: #7512
Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoObjecter/OSDMap: factor out primary_changed() into static OSDMap method
Samuel Just [Sun, 23 Feb 2014 21:23:42 +0000 (13:23 -0800)]
Objecter/OSDMap: factor out primary_changed() into static OSDMap method

We need to reuse this logic in OSD::project_pg_history.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoPG: clarify same_primary_since updates regarding primary rank
Samuel Just [Sun, 23 Feb 2014 21:29:07 +0000 (13:29 -0800)]
PG: clarify same_primary_since updates regarding primary rank

pg_shard_t includes the position, so these checks handle
same osd/different rank properly.

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agomon/PGMap: fix osd_epochs update 1304/head
Sage Weil [Sat, 22 Feb 2014 17:29:15 +0000 (09:29 -0800)]
mon/PGMap: fix osd_epochs update

The insert() call here does not overwrite a previous entry, which means
that the osd_epochs map is never moving forward in time.  This seems to
have been broken since it was introduced in 091809b814.

Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
11 years agomon/PGMap: add unit test for min_last_epoch_clean
Sage Weil [Sat, 22 Feb 2014 17:17:44 +0000 (09:17 -0800)]
mon/PGMap: add unit test for min_last_epoch_clean

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoECBackend: skip canceled xattr reads as well
Samuel Just [Sun, 23 Feb 2014 08:48:27 +0000 (00:48 -0800)]
ECBackend: skip canceled xattr reads as well

Signed-off-by: Samuel Just <sam.just@inktank.com>
11 years agoclient: fix possible null dereference in create 1302/head
Sage Weil [Sun, 23 Feb 2014 18:18:02 +0000 (10:18 -0800)]
client: fix possible null dereference in create

There are two paths that jump to the out label for which 'in' can be
NULL and outp can be non-NULL.  For those cases we want to fill in the
caller's pointer value (they asked for it) but we clearly cannot take
a reference.

Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoosd: increase default leveldb write buffer, cache size
Sage Weil [Sun, 23 Feb 2014 18:05:39 +0000 (10:05 -0800)]
osd: increase default leveldb write buffer, cache size

The FileStore's leveldb currently uses libleveldb's defaults for cache and
write buffer size, which are both 4 MB. Increase the cache size to 128MB and
the write buffer to 8MB.

Tested-by: Dmitry Smirnov <onlyjob@member.fsf.org>
Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoceph_test_objectstore: fix i386 build error
Sage Weil [Sun, 23 Feb 2014 17:05:56 +0000 (09:05 -0800)]
ceph_test_objectstore: fix i386 build error

We can't swap size_t and uint64_t; just change the len type to match.

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoceph_test_objectstore: fix signed/unsigned warning
Sage Weil [Sun, 23 Feb 2014 17:03:42 +0000 (09:03 -0800)]
ceph_test_objectstore: fix signed/unsigned warning

In file included from test/objectstore/store_test.cc:33:0:
../src/gtest/include/gtest/gtest.h: In function ‘testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = int, T2 = unsigned int]’:
../src/gtest/include/gtest/gtest.h:1300:30: instantiated from ‘static testing::AssertionResult testing::internal::EqHelper::Compare(const char*, const char*, const T1&, const T2&) [with T1 = int, T2 = unsigned int, bool lhs_is_null_literal = false]’
test/objectstore/store_test.cc:484:193: instantiated from here
warning: ../src/gtest/include/gtest/gtest.h:1263:3: comparison between signed and unsigned integer expressions [-Wsign-compare]

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoerasure-code: test that changing the pool size is not allowed
Loic Dachary [Wed, 19 Feb 2014 14:05:50 +0000 (15:05 +0100)]
erasure-code: test that changing the pool size is not allowed

http://tracker.ceph.com/issues/7360 fixes #7360

Signed-off-by: Loic Dachary <loic@dachary.org>
11 years agoMerge pull request #1294 from ceph/wip-librados-object-iterator
Sage Weil [Sun, 23 Feb 2014 15:25:13 +0000 (07:25 -0800)]
Merge pull request #1294 from ceph/wip-librados-object-iterator

fix bugs in librados::ObjectIterator

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1295 from yuyuyu101/keyvaluestore-enhance
Sage Weil [Sun, 23 Feb 2014 15:24:43 +0000 (07:24 -0800)]
Merge pull request #1295 from yuyuyu101/keyvaluestore-enhance

Keyvaluestore enhance(backport to firely)

Pulling this into firefly because it doesn't (substantiatively) touch anything outside of KeyValueStore.

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1297 from ceph/wip-ec-bugs
Sage Weil [Sun, 23 Feb 2014 15:12:40 +0000 (07:12 -0800)]
Merge pull request #1297 from ceph/wip-ec-bugs

Wip ec bugs

Reviewed-by: Sage Weil <sage@inktank.com>
11 years agounittest_ecbackend: fix signed/unsigned warnings
Sage Weil [Sun, 23 Feb 2014 06:00:55 +0000 (22:00 -0800)]
unittest_ecbackend: fix signed/unsigned warnings

In file included from test/osd/TestECBackend.cc:20:0:
../src/gtest/include/gtest/gtest.h: In instantiation of ‘testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = long unsigned int; T2 = int]’:
../src/gtest/include/gtest/gtest.h:1300:30: required from ‘static testing::AssertionResult testing::internal::EqHelper::Compare(const char*, const char*, const T1&, const T2&) [with T1 = long unsigned int; T2 = int; bool lhs_is_null_literal = false]’
test/osd/TestECBackend.cc:30:281: required from here
warning: ../src/gtest/include/gtest/gtest.h:1263:3: comparison between signed and unsigned integer expressions [-Wsign-compare]

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1301 from ceph/wip-scrub-primary
Sage Weil [Sun, 23 Feb 2014 05:56:53 +0000 (21:56 -0800)]
Merge pull request #1301 from ceph/wip-scrub-primary

mon/PGMonitor: fix primary osd check on deep-scrub

gitbuilders are now passing

11 years agomon/PGMonitor: fix primary osd check on deep-scrub 1301/head
Sage Weil [Sun, 23 Feb 2014 05:31:48 +0000 (21:31 -0800)]
mon/PGMonitor: fix primary osd check on deep-scrub

s/!=/==/.  Logic was reversed.

Broken in 40bdcb88504aea6288d461d29d24d5b0bf7aeebc.

Signed-off-by: Sage Weil <sage@inktank.com>
11 years agoMerge pull request #1300 from ceph/wip-7513
Samuel Just [Sun, 23 Feb 2014 01:35:46 +0000 (17:35 -0800)]
Merge pull request #1300 from ceph/wip-7513

PGLog::activate_not_complete typo

Reviewed-by: David Zafman <david.zafman@inktank.com>