Ilya Dryomov [Tue, 4 Jan 2022 19:38:35 +0000 (20:38 +0100)]
librbd: diff-iterate reports incorrect offsets in fast-diff mode
If rbd_diff_iterate2() is called on an image offset that doesn't
correspond to an object boundary, the callback is invoked with an
incorrect image offset. For example, assuming a fully allocated
image, a diff request for 806354944~57344 results in offs=807403520,
len=57344, exists=true invocation, which is ahead by 1048576 bytes.
This occurs only in fast-diff mode, for a diff request on an image
with the fast-diff feature disabled or if whole_object parameter is
set to false the invocation is correct.
This bug goes back to the introduction of fast-diff mode in commit 6d5b969d4206 ("librbd: add diff_iterate2 to API").
Matt Benjamin [Wed, 22 Dec 2021 18:33:52 +0000 (13:33 -0500)]
rgwlc: harmonize lifecycle notifications with the others
After working with notification configurations, it seemed to make
more sense to organize the different lifecycle notification sub-types
along the same lines as the official AWS ones. So, there are now
ObjectExpirationCurrent and ObjectExpirationNoncurrent types, and
an ObjectExpiration wildcard. Similarly, ObjectTransition
contains Current and Noncurrent sub-types.
Note that I have defined an ObjectExpirationAbortMPU notification
sub-type, but do not currently generate it--this is to avoid changing
the rgw::sal interface, but most likely we would support this in
future.
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
Matt Benjamin [Tue, 26 Jan 2021 17:52:47 +0000 (12:52 -0500)]
rgwlc: optionally support notifications on object expiration
Most of the work is to remove direct knowledge of req_state from
methods in rgw_notify.
I've chosen to create new notification types matching the different
expire actions (but not transition). The new event types are not
nested under Delete. Notifications are sent iff rgw_lc_notify is true
(default false).
Adjusted per comments in initial review, in particular, notification from
lifecycle is no longer conditional on a config setting, and constness
is restored.
Fixes: https://tracker.ceph.com/issues/49068 Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
Nizamudeen A [Thu, 30 Dec 2021 08:28:58 +0000 (13:58 +0530)]
mgr/dashboard: stabilizing the cephadm dashboard e2e
Reordering the tests and adding some more tests to verify the cluster is
healthy before proceeding to do some complex tasks like maintenance and
drain host
Fixes: https://tracker.ceph.com/issues/53742 Signed-off-by: Nizamudeen A <nia@redhat.com>
Venky Shankar [Mon, 13 Dec 2021 06:15:19 +0000 (01:15 -0500)]
mds: ignore unknown client op when tracking op latency
Server::handle_client_request() ignores unknown client operation
by returning -ENOTSUPP, however, Server::perf_gather_op_latency()
aborts on unknown client op, thereby causing -ENOTSUPP to never
reach the client. ceph_abort() seems unnecessary here.
Note, we could have invoked Server::perf_gather_op_latency()
when the return value to client is not -ENOTSUPP, however,
a valid client operation *might* just return -ENOTSUPP in
some cases.
@mchangir ran into this with his getvxattr op changes (PR #42001).
I removed the `02-hosts-inventory.e2e` file because it is a duplicate
test of one of the test in the `01-hosts.e2e` file and fixed the error
from that file.
Also, in the inventory Identify test, we test for an element to be not
visible. According to the latest cypress docs, this should be not.exist
instead of not.visible since the cd-modal will not even be present in
the DOM
Fixes: https://tracker.ceph.com/issues/53499 Signed-off-by: Nizamudeen A <nia@redhat.com>
Adds documentation how to change default rbd object size. With the
previous option `--order` it was easy to guess the config name for the
default value, with the current option name `--object-size` thats hard
to guess.
Also extends the documentation for rbd_default_order to include
* how object-size is derived from the configured value
* allowed range of the value
In the first version of this commit I also added min and max for this
parameter (12/25, matching the object size range in `man 8
rbd`/Striping/object-size), but this made some tests fail, since some
seem to set values outside this range (and probably are fine since
included for some time already). To have this a doc-change only, I
removed the range.
Signed-off-by: Mara Sophie Grosch <littlefox@lf-net.org>
Yingxin Cheng [Fri, 24 Dec 2021 08:12:13 +0000 (16:12 +0800)]
crimson/osd: --help-seastar does no longer belong to unknown_args
Now that app_template handles --help-seastar, and prints out all
app-level usages if --help is included in command line options. There is
no need to add a dedicated --help-seastar by ourselves and translate it
to --help.
Kefu Chai [Sun, 26 Dec 2021 05:11:06 +0000 (13:11 +0800)]
doc: remove references to SEASTAR_DEFAULT_ALLOCATOR
now that https://github.com/scylladb/seastar/commit/067681b70172ab4a6676431b623e8bd0caab6dc8
has been merged upstream, and our src/seastar submodule includes
this commit. there is no need to worry that the seastar's lockless
allocator does not work with seastar::alien anymore.
Chunsong Feng [Fri, 10 Dec 2021 02:27:58 +0000 (02:27 +0000)]
msg/async/dpdk: add NIC whitelist configuration
Each DPDK process uses some exclusive network adapters.The network adapters to
be used are specified in the whitelist to prevent data sharing between multiple
DPDK process.The following is an example:
1)Configure a single NIC.
-a 0000:7d:010 or --allow=0000:7d:010
2)Configure the Bond Network Adapter
ms_dpdk_port_options=--allow=0000:7d:01.0 --allow=0000:7d:02.6
--vdev=net_bonding0,mode=2,slave=0000:7d:01.0,slave=0000:7d:02.6
Signed-off-by: Chunsong Feng <fengchunsong@huawei.com> Reviewed-by: luo rixin <luorixin@huawei.com> Reviewed-by: Han Fengzhe <hanfengzhe@hisilicon.com>
Laura Flores [Fri, 24 Dec 2021 01:18:13 +0000 (01:18 +0000)]
os/bluestore: detect unnecessary zeros in _do_write_big()
Bluestore's `_do_write()` method handles writing data from bufferlists. Currently, it writes data from bufferlists without checking for unnecessary zeros. The lack zero detection may negatively impact performance.
In _do_write_big, we also check if a bufferlist is made up of zeros and avoid writing it if so.
Two new counters, `l_bluestore_write_big_skipped_blobs` and `l_bluestore_write_big_skipped_bytes`, have been introduced to help us count how many zero blocks and bytes from _do_write_big() have been skipped.
Laura Flores [Fri, 24 Dec 2021 01:15:33 +0000 (01:15 +0000)]
os/bluestore: detect unnecessary zeros in _do_write_small()
Bluestore's `_do_write()` method handles writing data from bufferlists. Currently, it writes data from bufferlists without checking for unnecessary zeros. The lack zero detection may negatively impact performance.
In _do_write_small(), we check if a bufferlist is made up of zeros and avoid writing it if so.
Two new counters, `l_bluestore_write_small_skipped` and l_bluestore_write_small_skipped_bytes`, have been introduced to help us count how many zero blocks and bytes from _do_write_small() have been skipped.
Nizamudeen A [Mon, 20 Dec 2021 09:14:29 +0000 (14:44 +0530)]
mgr/dashboard: fix timeout error in dashboard cephadm e2e job
1. Fix the timeout error happening in the dashboard e2e job
2. Take care of the flaky force maintenance check
Most of the time our test is getting timed out while searching for an item
in the table. Its because `.clear().type()` is not clearing the content
in the search field sometimes and that creates a wrong data to be
entered into the search field and it starts searching based on this
wrong name. To avoid this I am explicitly clearing the search area
before typing.
Fixes: https://tracker.ceph.com/issues/53672 Signed-off-by: Nizamudeen A <nia@redhat.com>