qa/tasks/cram: use suite_repo repository for all cram jobs
Currently git.ceph.com is hardcoded for all cram jobs. Testing
modifications is a pain: one needs to push to either ceph/ceph.git or
ceph/ceph-ci.git (depending on where the ceph branch is at, triggering
unnecessary builds in the latter case) and wait for the mirror to sync.
Runs scheduled against branches in developer's forks fail.
Move away from git.ceph.com to allow mixing branches and repositories,
similar to workunits.
Xiaoguang Wang [Thu, 30 Aug 2018 02:26:41 +0000 (10:26 +0800)]
os/bluestore: fix deep-scrub operation againest disk silent errors
Say a object who has data caches, but in a while later, caches' underlying
physical device has silent disk erros accidentally, then caches and physical
data are not same. In such case, deep-scrub operation still tries to read
caches firstly and won't do crc checksum, then deep-scrub won't find such
data corruptions timely.
Here introduce a new flag 'CEPH_OSD_OP_FLAG_BYPASS_CLEAN_CACHE' which tells
deep-scrub to bypass object caches. Note that we only bypass cache who is in
STATE_CLEAN state. For STATE_WRITING caches, currently they are not written
to physical device, so deep-scrub operation can not read physical device and
can read these dirty caches safely. Once they are in STATE_CLEAN state(or not
added to bluestore cache), next round deep-scurb can check them correctly.
As to above discussions, I refactor BlueStore::BufferSpace::read sightly,
adding a new 'flags' argument, whose value will be 0 or:
enum {
BYPASS_CLEAN_CACHE = 0x1, // bypass clean cache
};
flags 0: normal read, do not bypass clean or dirty cache
flags BYPASS_CLEAN_CACHE: bypass clean cache, currently only for deep-scrube
operation
Test:
I deliberately corrupt a object with cache, with this patch, deep-scrub
can find data error very timely.
Signed-off-by: Xiaoguang Wang <xiaoguang.wang@easystack.cn>
xie xingguo [Tue, 14 Aug 2018 06:24:55 +0000 (14:24 +0800)]
osd/PG: find_best_info - add completeness as the preferred option
Async recovery peers usually have a relative complete
log history but may exist a lot of missing objects. Choosing them
as auth_log_shard and further as primary if current up_primary is
unrecoverable, say, could have a bigger chance to block client I/Os.
Among peers with identical new log history, we now consider those
who are now complete (having no missing objects) as the preferred
ones when determining auth_log_shard.
Volker Theile [Wed, 29 Aug 2018 10:18:37 +0000 (12:18 +0200)]
mgr/dashboard: Add unique validator
Relocate an already existing async validator into a separate validator that can be reused by every other form. This validator is useful to check immediately after typing if an entered value, e.g. username, already exists.
The API request will be triggered after a delay of 500ms (can be modified). During this delay, every keystroke will reset the timer, so the REST API is not flooded with request.
Lenz Grimmer [Thu, 30 Aug 2018 09:16:39 +0000 (11:16 +0200)]
mgr/dashboard: Updated image on 404 page
Replaced the image of a Mimic octopus with a Nautilus octopus in
preparation for the new major release code name.
The image was taken from Flickr (https://www.flickr.com/photos/146401137@N06/40335060661) and is
licensed under the Creative Commons "Attribution 2.0 Generic"
(CC BY 2.0) license.
Kefu Chai [Tue, 28 Aug 2018 06:48:28 +0000 (14:48 +0800)]
include/types: move operator<< into the proper namespace
we should define the operator<< in the namespace of its 2nd parameter.
normally, the operator<< defined in the global namespace works. but
there is a subtle difference between the operator<< defined in std
namespace and the global one because of Koenig lookup.
mon/OSDMonitor: don't change in-memory state on prune
We were modifying the in-memory state when running through several
osdmap pruning functions.
Should the transaction we're encoding not be committed, we may end up in
a state where we have a stale in-memory state that does not match what
is on disk; including having in-memory state while not having on-disk
state.
We prevent this sort of inconsistency by working on temporary states
instead.
Fixes: http://tracker.ceph.com/issues/24612 Signed-off-by: Joao Eduardo Luis <joao@suse.de>
Jason Dillaman [Fri, 17 Aug 2018 14:17:55 +0000 (10:17 -0400)]
librbd: always open first parent image if it exists for a snapshot
The deep-copy and migration features required force-opening the
parent image just in case the deep-flatten feature wasn't enabled
on an image. This change simplies the code by always opening the
direct parent image, which really only matters if a cloned image
has snapshots w/o the deep-flatten feature.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Sage Weil [Mon, 27 Aug 2018 20:31:43 +0000 (15:31 -0500)]
Merge PR #23718 into master
* refs/pull/23718/head:
cleanup: Replace always-false assertions with abort
include/assert: Smarten up ceph_assert
common: Call ceph_abort(), not abort()
include,common: Remove assert and clobber-foo
rbd_replay: Use ceph_assert for asserts.
rbd_fuse: Use ceph_assert for asserts.
osdc: Use ceph_assert for asserts.
osd: Use ceph_assert for asserts.
msg: Use ceph_assert for asserts.
mgr: Use ceph_assert for asserts.
messages: Use ceph_assert for asserts.
mds: Use ceph_assert for asserts.
log: Use ceph_assert for asserts.
libradosstriper: Use ceph_assert for asserts.
librados: Use ceph_assert for asserts.
kv: Use ceph_assert for asserts.
test: Use ceph_assert for asserts.
key_value_store: Use ceph_assert for asserts.
json_spirit: Use ceph_assert for asserts.
journal: Use ceph_assert for asserts.
global: Use ceph_assert for asserts.
erasure-code: Use ceph_assert for asserts.
rbd: Use ceph_assert for asserts.
tools: Use ceph_assert for asserts.
rgw: Use ceph_assert for asserts.
mon: Use ceph_assert for asserts.
crush: Use ceph_assert for asserts in C++ code.
crimson: Use ceph_assert for asserts.
compressor: Use ceph_assert for asserts.
cls: Use ceph_assert for asserts.
client: Use ceph_assert for asserts.
auth: Use ceph_assert for asserts
os: Use ceph_assert for asserts
common: Use ceph_assert for asserts
include: Use ceph_assert for asserts
include/assert: Deprecate assert macro
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com> Reviewed-by: Sage Weil <sage@redhat.com>
Sage Weil [Tue, 7 Aug 2018 17:59:25 +0000 (12:59 -0500)]
mon: only share monmap after authenticated
It is no longer necessary to fetch a monmap pre-authentication, something
we previous did for get_monmap_privately(). New code has replaced this
with get_monmap_and_config(), and it authenticates in order to get that
same information (plus configs).
That change was made in mimic, but we must support upgrades from N-2,
which means that luminous daemons still need to function. The only caller
for get_monmap_privately() in luminous is from ceph-osd during mkfs.
Disabling this here means that new OSDs cannot be created using nautilus
mons and a luminous ceph-osd. Include a note for the (future) nautilus
upgrade notes.
Reported-by: Christopher Ryan Harrell <harrellcr@email.arizona.edu> Signed-off-by: Sage Weil <sage@redhat.com>