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>
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>
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>
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>
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>
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
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>
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>
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.
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.
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&)’
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>
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>
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>
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>
Haomai Wang [Fri, 21 Feb 2014 12:55:19 +0000 (20:55 +0800)]
Remove unnecessary "check_coll" check
The goal of "check_coll" is aimed to ensure the collection is exists. But
the create and delete of collection already ensured by OSD, just remove check.
Haomai Wang [Tue, 18 Feb 2014 14:46:22 +0000 (22:46 +0800)]
Move perf counter and add op queue reserve throttle
The perf counter of FileStore can shared with other ObjectStore backend, so move
it to ObjectStore and adjust position to let other KeyValueStore refer to.
Haomai Wang [Tue, 18 Feb 2014 07:04:25 +0000 (15:04 +0800)]
Fix deadlock caused by hold collection obj
Collection is a special object in KeyValueStore, if exists collection modify,
this object will be hold. When exists check collection, it will be dead lock to
try to access this object.
Now lookup transaction cache first to ensure no collection object exists
already.
Josh Durgin [Fri, 21 Feb 2014 23:52:59 +0000 (15:52 -0800)]
librados: don't destroy ObjListCtx when iterator reaches the end
There's no need to destroy it when we've used it once. It'll get destroyed
by the destructor anyway. Now that there's a seek method, we might want seek
and iterate again anyway, which is not possible if the ObjListCtx is gone.
Change get_next() to check the underlying ObjListCtx for the end of iteration
instead of deleting ObjListCtx, and modify the equality operator to count
the end marker (with ctx == NULL) as equal to having a ObjListCtx at the
end of its list.