Merge pull request #1386 from ceph/wip-7624

ReplicatedPG: ensure clones are readable after find_object_context

Reviewed-by: Sage Weil <sage@inktank.com>
obj_bencher: allocate contentsChars to object_size, not op_size

Otherwise, our attempt to sanitize object_size bytes of
data.object_contents will be doomed to memory corruption.

Fixes: #7610
Signed-off-by: Samuel Just <sam.just@inktank.com>
Client: fix build issue (lost semicolon)

Signed-off-by: Greg Farnum <greg@inktank.com>
osd: bracket role changes with scrub reg/unreg

Make sure the reg/unreg calls for putting ourselves in the scrub schedule
bracket any PG role changes, or that initial reg happens after the role
has been initialized.

Signed-off-by: Sage Weil <sage@inktank.com>
osd: only register for scrub if we are the PG primary

There is no reason to put non-primary PGs on the scrub schedule as they
will be ignored when the worker comes around.  This reduces lock
contention and is generally cleaner.

Signed-off-by: Guang Yang <yguang@yahoo-inc.com>
Signed-off-by: Sage Weil <sage@inktank.com>
ReplicatedPG: clean up num_dirty adjustments

Previously, a _delete_head() followed by a recreation on an object in
the same transaction would result in num_dirty being decremented in
_delete_head() without the flag being cleared.  make_writeable() would
then see exists and was_dirty and therefore not increment num_dirty
resulting in a mismatch.  Rather than trying to maintain the num_dirty
number in _delete_head(), rollback_to(), and make_writeable(), it seems
simpler to do the adjustment once in make_writeable based on undirty,
ctx->obc->obs.oi, and ctx->new_obs->oi.

Fixes: 7393
Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG: consistently use ctx->at_version.version for stashed object

Otherwise, two ops might end up using the same version number.

Fixes: #7632
Signed-off-by: Samuel Just <sam.just@inktank.com>
os/ObjectStore: dump COLL_MOVE_RENAME

This got missed way back in ef7cffc34f3bad4ffc090361ad9030a47584a3bf
(pre-0.71).

Signed-off-by: Sage Weil <sage@inktank.com>
qa/workunits/rest/test.py: do not test 'osd thrash'

This wreaks havoc on our QA because it marks osds up and down and then
immediately after that we try to scrub and some osds are still down.

Adjust the CLI test to wait for all OSDs to come back up after thrashing.

Signed-off-by: Sage Weil <sage@inktank.com>
ReplicatedPG: use hobject_t for snapset_contexts map

Otherwise, two objects with different namespaces but
the same object_t will end up clobbering each other's
contexts.

Fixes: #7634
Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG::trim_object: use old_snaps for rollback

We need to rollback the old value of snaps, not the
new one.

Fixes: #7638
Signed-off-by: Samuel Just <sam.just@inktank.com>
Merge pull request #1391 from ceph/wip-7393

ReplicatedPG: clean up num_dirty adjustments

Reviewed-by: Sage Weil <sage@inktank.com>
Merge pull request #1392 from ceph/wip-7632

ReplicatedPG: consistently use ctx->at_version.version for stashed objec...

Reviewed-by: Sage Weil <sage@inktank.com>
logrotate: copy/paste daemon list from *-all-starter.conf

Each upstart/*-all-starter.conf use the same script to find the list of
daemons and their ids. Copy it over to the corresponding logrotate.conf
script instead of using a less reliable script based on initctl list
output.

If logrotate fails to run initctl reload on a daemon, it will keep
writing to the rotated log file, even after it is deleted and until it
fills the disk. By using the exact same shell snippet as the upstart
scripts used to start the daemon, all of them will be sent the HUP
signal and reopen the log file that was just rotated.

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

Signed-off-by: Loic Dachary <loic@dachary.org>
Merge pull request #1393 from dachary/wip-7072

logrotate: copy/paste daemon list from ceph-*-all-starter.conf

Reviewed-by: Sage Weil <sage@inktank.com>
Merge pull request #1389 from ceph/wip-firefly-misc

fix rest tests; fix COLL_MOVE_RENAME dump

Reviewed-by: Samuel Just <sam.just@inktank.com>
osd: fix agent thread shutdown

We had an old invariant that agent_queue would have at least 1 entry in
it to simplify some other code paths, but it turns out that it is simpler
not to do that.

In particular, this was triggering a failed assertion on shutdown when we
assert that the queue is empty.

Dump offending items on shutdown if they are there, tho, to catch any
future bugs.

Fixes: #7637
Signed-off-by: Sage Weil <sage@inktank.com>
Merge pull request #1395 from ceph/wip-7637

osd: fix agent thread shutdown

Reviewed-by: Samuel Just <sam.just@inktank.com>
Merge pull request #1398 from ceph/wip-7634

ReplicatedPG: use hobject_t for snapset_contexts map

Reviewed-by: Sage Weil <sage@inktank.com>
Merge pull request #1397 from ceph/wip-7638

ReplicatedPG::trim_object: use old_snaps for rollback

Reviewed-by: Sage Weil <sage@inktank.com>