Ilya Dryomov [Wed, 6 Mar 2019 14:43:12 +0000 (15:43 +0100)]
librbd: don't do create+truncate for discards with copyup
With copyup, create is unnecessary because the object will be created
as a result of the copyup. create's place will be taken by assert_exists
from write_object().
Ilya Dryomov [Wed, 6 Mar 2019 14:43:12 +0000 (15:43 +0100)]
test/librbd: observe the object map interaction in DiscardRemoveTruncate
Undo the fixup made in merge commit a7351ce449bb ("Merge pull request
#20809 from idryomov/wip-librbd-discard-create-truncate"). We do want
to observe the object map interaction here -- specific changes towards
that were made in commits 513baf92ef01 ("test/librbd: clone with parent
features in DiscardRemoveTruncate") and 9d6ee9a64986 ("test/librbd:
expect_object_may_exist(..., false) in DiscardRemoveTruncate").
Jeff Layton [Mon, 25 Feb 2019 14:21:08 +0000 (09:21 -0500)]
mgr/orchestrator: allow scaling the NFS server count up and down
Add a new 'ceph orchestrator nfs update' command that will take the
NFS clustername and a new count as arguments. That will get translated
to a StatelessServiceSpec and passed to update_stateless_service.
Also, add the necessary stubs to the test_orchestrator and the CLI
QA test.
Jeff Layton [Mon, 25 Feb 2019 14:27:02 +0000 (09:27 -0500)]
mgr/rook: allow scaling nfs count
Allow rook to handle scaling the NFS server count up and down in an NFS
cluster. We just manifest these changes as change to the
spec.server.active field in the CRD.
Jeff Layton [Tue, 26 Feb 2019 19:53:45 +0000 (14:53 -0500)]
mgr/orchestrator: just keep a single count value in StatelessServiceSpec
We currently have a min_size/max_size values in here, but we don't have
any orchestrators that can take advantage of two values. Let's just keep
a simple count for now, until we do.
xie xingguo [Wed, 6 Mar 2019 06:11:16 +0000 (14:11 +0800)]
osd/PrimaryLogPG: fix last_peering_reset checking on manifest flushing
```handle_manifest_flush``` is obviously using the wrong
**last_peering_reset** to check whether a new peering procedure
has been re-initialized by then.
Fix by using a different alias of the local copy of the
pg-wide **last_peering_reset** variable, which is less confusing and
error-prone.
Ilya Dryomov [Tue, 5 Mar 2019 22:07:27 +0000 (23:07 +0100)]
qa/suites/krbd/wac: bluestore snippet is placed incorrectly
Instead of generating three tests, each with bluestore-bitmap.yaml, it
generates four tests: one consisting of just bluestore-bitmap.yaml and
the other three without any trace of bluestore. This was introduced in
commit 711df71790fa ("qa: objectstore snippets for krbd").
If we are in the middle of replacing, we can not queue any further
write events into the old center because we may end up replacing
existing connection's center with a new one, and hence executing
the newly queued write events in the old thread.
See **transfer_existing** for a detailed description.
Also the patch does not make a lot of sense for the original issue
it tried to resolve, because **send_keepalive** is a pure noop if the
underlying connection is not ready, which is obviously true for the
case demonstrated in http://tracker.ceph.com/issues/38493..
Sage Weil [Mon, 4 Mar 2019 14:44:56 +0000 (08:44 -0600)]
Merge PR #26704 into master
* refs/pull/26704/head:
msg/async, v2: drop alloc_aligned_buffer().
msg/async, v2: introduce frame late abort facility.
Revert "msg/async, v2: move ceph_msg_header2 to last frame segment."
msg, msg/async, v2: introduce late message abort facility.
msg/async, v2: failure of msg decode doesn't block throtlles.
msg/async, v2: move ceph_msg_header2 to last frame segment.
fixup: use frame epilogue for crc32 integrity checking.
msg/async, v2: epilogue size is variable in secure mode.
msg/async, v2: drop support for the buggy rx_buffers mechanism.
Revert "msg/async, v2: add flags field to frame's epilogue."
msg/async, v2: add flags field to frame's epilogue.
msg/async, v2: drop onwire_segment_t as epilogue had derogated it.
msg, msg/async, v2: drop crc fields from ceph_msg_header2.
msg/async, v2: use frame epilogue for crc32 integrity checking.
msg/async, v2: clean the ProtocolV2::{front,middle,data} up.
msg/async, v2: clean the ProtocolV2::epilogue up.
msg/async, v2: move crypto processing to segment reader.
msg/async, v2: handle epilogue separately from payload/data.
msg/async, v2: dissect decryption from SignedEncryptedFrame.
msg/async, v2: unify WAIT frames with other payload frames.
msg/async, v2: implement epilogue handling in secure mode.
msg/async, v2: message frames are pre-dispatched now.
The libradosstriper::RadosStriperImpl::aio_read populates the target
outbl with a static buffer and relies on us reading into it. This was
actually not reliable in the past (it could fail if the rx_buffers
optimization failed due to a retransmit or something else) but nevertheless
libradosstriper requires it to work *at all*.
Resolve this by modifying Objecter to copy the result into any provided
buffer at the lowest layer. This should capture any other such user who
needed this behavior.
On the other hand, it will break any user who inadvertantly reads into a
non-empty bufferlist. Given that any such user would already previously
have seen bad behavior due to the rx_buffers optimization, we expect
there to be 0 such instances.
This test introduces a map gap. What *should* happen is that when there is
such a gap, we cannot import. Previously, the test didn't reliably produce
a map gap at all, and didn't check that import failed--it verified that it
passed.
Fix the test so that it reliably produces a gap *and* reports
min_last_epoch_clean to the mon so we can trim. Then verify we fail to
import, but can with --force. But remove the pg again, because if we
force an import with a map gap the osd will refuse to start.
Fixes: http://tracker.ceph.com/issues/38525 Signed-off-by: Sage Weil <sage@redhat.com>
Noah Watkins [Fri, 22 Feb 2019 22:13:47 +0000 (14:13 -0800)]
mgr/dashboard: fix for using '::' on hosts without ipv6
CherryPy throws an uncaught exception using '::' when the host does not
have an ipv6 loopback address. This is currently the case in kubernetes.
This patch disables the routine in cherrypy that performs the validation
that requested server ports are actually bound.
Sage Weil [Fri, 1 Mar 2019 20:36:35 +0000 (14:36 -0600)]
Merge PR #26692 into master
* refs/pull/26692/head:
test/test_ipaddr: added test for pick_address when ipv4 and ipv6 are enabled
common/pick_address: improves log message when no IP is found
pick_address: error out in dual stack mode if both addr types cannot be provided
mds: Fix use of auto prototype, it is a non std extension
Clang complains:
In file included from /home/jenkins/workspace/ceph-master/src/msg/Message.cc:128:
In file included from /home/jenkins/workspace/ceph-master/src/messages/MFSMap.h:20:
/home/jenkins/workspace/ceph-master/src/mds/FSMap.h:330:49: error: 'auto' not allowed in function prototype
void modify_filesystem(fs_cluster_id_t fscid, auto&& fn)
^~~~
/home/jenkins/workspace/ceph-master/src/mds/FSMap.h:341:37: error: 'auto' not allowed in function prototype
void modify_daemon(mds_gid_t who, auto&& fn)
^~~~
Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>