librbd/cache/pwl: fix assert in _aio_stop() during shutdown
For wait_for_ops(next_ctx). this next_ctx may run in aio_thread.
Then the next program runs on the aio thread. remove_pool_file()
calls bdev->close(), then calles _aio_stop(), exec aio_thread.join(),
cause assert. Thread can't join itself. Fix it by adding close ctx
to m_work_queue, so close() can run in work queue thread.
At the same time, correct the order of wait_for_ops().
flush_dirty_entries(next_ctx) may call wake_up() and start_op().
so moving wait_for_ops() behind flush_dirty_entries(next_ctx) is more
appropriate.
Yin Congmin [Fri, 27 Aug 2021 15:41:49 +0000 (15:41 +0000)]
librbd/cache/pwl/ssd: move finish_op() to the end of callback function
finish_op() of ssd cache is not in the end of callback function in
append_op_log_entries(), and after finish_op(), some operation also
need to get m_lock. So, during shutdown, wait_for_ops() thinks all OPs
are over, and no thread will acquire the m_lock, In the subsequent
operation of shutdown, the m_lock is obtained, and _aio_stop() in
bdev->close() waits for all aio_writes() and aio_submit() to end
when the m_lock is held, but the callback function of aio_write() is
waiting for the m_lock, causing a deadlock. Move finish_op() to the
end to fix dead lock.
Patrick Donnelly [Thu, 21 Oct 2021 02:25:58 +0000 (22:25 -0400)]
Merge PR #40183 into master
* refs/pull/40183/head:
client: remove useless mds member in Fh class
client: adjust the Fh class members order
client: switch to use shared_ptr for mds_sessions
client: minor cleanup to Fh related code
client: minor cleanup to MetaRequest class
client: minor cleanup to Client related code
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com> Reviewed-by: Jeff Layton <jlayton@redhat.com>
Zac Dover [Wed, 20 Oct 2021 14:42:02 +0000 (00:42 +1000)]
doc/cephadm: update typo in install.rst
This PR changes the string
use "--log-to-file" option during bootstrap
to
use the "--log-to-file" option during bootstrap
The way that it was written makes it sound like it was
written by a native Russian speaker. But it was written
by me, a native English speaker, so this is on me.
Nathan Cutler [Wed, 20 Oct 2021 10:51:02 +0000 (12:51 +0200)]
rgw/tracing: unify SO version numbers within librgw2 package
The librgw2 package contains several SO files. Two of those - librgw_op_tp.so
and librgw_rados_tp.so - had a different version number than the main librgw.
This was a violation of the openSUSE Shared Library Packaging Policy [1] but it
also seems like a "violation" of common sense.
Joseph Sawaya [Thu, 9 Sep 2021 19:14:29 +0000 (15:14 -0400)]
mgr/rook: implement `orch device zap` in rook orchestrator
This commit implements orch device zap by creating a pod on the target
host that mounts the /dev directory and runs either overwrites the first
few blocks of the device with zeros if it's a raw device or if it's not
a raw device it will use `ceph-volume lvm zap`.
Sage Weil [Mon, 18 Oct 2021 19:03:24 +0000 (15:03 -0400)]
Merge PR #43510 into master
* refs/pull/43510/head:
qa/suites/orch/cephadm/upgrade: smoke test for 'orch upgrade ls'
mgr/cephadm: make upgrade ls output structured
mgr/cephadm: add 'orch upgrade ls' to list available versions
Reviewed-by: Sebastian Wagner <sewagner@redhat.com>
Alfonso Martínez [Thu, 26 Aug 2021 10:05:54 +0000 (12:05 +0200)]
mgr/dashboard: NFS exports: API + UI: integration with mgr/nfs; cleanups
mgr/dashboard: move NFS_GANESHA_SUPPORTED_FSALS to mgr_module.py
Importing from nfs module throws AttributeError because as a side effect the dashboard module is impersonating the nfs module.
https://gist.github.com/varshar16/61ac26426bbe5f5f562ebb14bcd0f548
mgr/dashboard: 'Create NFS export' form: list clusters from nfs module
mgr/dashboard: frontend+backend cleanups for NFS export
Removed all code and references related to daemons. UI cleanup and adopted unit-testing for
nfs-epxort create form for CEPHFS backend. Cleanup for export list/get/create/set/delete endpoints.
mgr/dashboard: rm set-ganesha ref + update docs
Remove existing set-ganesha-clusters-rados-pool-namespace references as
they are no longer required. Moreover, nfs doc in dashboard doc is
updated accordingly to the current nfs status.
mgr/dashboard: add nfs-export e2e test coverage
mgr/dashboard: 'Create NFS export' form: remove RGW user id field.
- Improve bucket typeahead behavior.
- Increase version for bucket list endpoint.
- Some refactoring.
mgr/dashboard: 'Create NFS export' form: allow RGW backend only when default realm is selected.
When RGW multisite is configured, the NFS module can only handle buckets in the default realm.
mgr/dashboard: 'Create service' form: fix NFS service creation.
After https://github.com/ceph/ceph/pull/42073, NFS pool and namespace are not customizable.
- Allow only existing buckets.
- Refactoring:
- Moved bucket validator from bucket form to cd-validators.ts
- Split bucket validator into 2: bucket name validator and bucket existence (that checks either existence or non-existence).
Thomas Lamprecht [Mon, 18 Oct 2021 10:10:24 +0000 (12:10 +0200)]
docs: fix case and spelling of Proxmox VE
There's no such thing as ProxMox, the hypervisor product with build
in ceph server management and RBD client access is named `Proxmox VE`
and the company behind it is named Proxmox Server Solutions GmbH
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
None of these values are required for listing nfs cluster by mgr/nfs module.
Instead directly list available cluster names
mgr/dashboard: add comment to remove listing of daemons
As the configs are per cluster. There is no need to list daemons per cluster.
mgr/dashboard/controllers/nfsganesha: Add comments to update/remove status endpoint
This endpoint can be updated in suggested way or even removed. As it was
initially[1] introduced to check if dashboard pool and namespace configuration was
set.
Sage Weil [Wed, 28 Jul 2021 14:29:47 +0000 (10:29 -0400)]
mgr/dashboard: consume mgr/nfs via mgr.remote()
Stop using the dashboard version of the Ganesha config classes; consume
mgr/nfs instead via remote().
mgr/nfs/export: return Export from _apply_export
Future callers will want this.
mgr/nfs: new module methods for dashboard consumption
Add some new methods that are easy for the dashboard API to consume. These
are very similar to the CLI methods but do now have the @CLICommand and
related decorators, and have slightly different interfaces (e.g., returning
the created/modified Export dict).
mgr/dashboard: remove old ganesha code (and tests)
Fixes: https://tracker.ceph.com/issues/46493 Signed-off-by: Sage Weil <sage@newdream.net>
Deepika Upadhyay [Thu, 14 Oct 2021 07:10:14 +0000 (12:40 +0530)]
src/test/cli-integration: correct hostname for iscsi gateway
iscsi accepts first word of hostname as local hostname[0] instead of
smithi061.front.sepia.ceph.com we use: smithi061 otherwise gateway
creation will error out with:
```The first gateway defined must be the local machine```
Deepika Upadhyay [Wed, 13 Oct 2021 06:30:38 +0000 (12:00 +0530)]
src/test/cli-integration/rbd: update gwcli_* to use podman exec
* since iscsi now resides inside the container, for testing we use the
hack:
- find the iscsi container/
- use found container and podman exec command to test gateway creation
deletion from host itself
Deepika Upadhyay [Wed, 13 Oct 2021 06:19:02 +0000 (11:49 +0530)]
qa/tasks: adapt ceph_iscsi.py task to ceph_iscsi_client
* we use setup_iscsi_client.py to deploy iscsi client services,
configuring intiator and mulitpath this is done by qa task
ceph_iscsi_client
* qa/cephadm: adds remotes ip addresses to iscsi gateway,
* rename poolname: iscsi >> datapool, which we usually use for tests and
expresses type of pool more clearly.
Because unittest_librbd links not just with librados_test_stub.a but
also with librados.so (why?), these were sneakily picked up from the
latter. This resulted in get_pool_full_try() reading from invalid
memory and every once in a while returning true, prompting librbd to
write to invalid memory through set_pool_full_try() in create_ioctx()
and cause random crashes.
Sage Weil [Tue, 3 Aug 2021 17:25:26 +0000 (13:25 -0400)]
mgr/orchestrator: clean up 'orch device ls' output
- headings in CAPS
- DEVICE ID, not just serial or model/vendor
- drop the health, LED fields from non-wide view
- sort devices
- 'Yes' or '', for easier visual parsing